[SCM] Lisaac library opengl-binding branch, master, updated. 9a65c25f45c3200d7a0c546bc1b3ac0a802c6280
Damien Bouvarel
dams.bouvarel at wanadoo.fr
Wed Aug 26 23:46:31 UTC 2009
The following commit has been merged in the master branch:
commit 8e1722154d3a53a6ff36018c830c4f7c2fc149af
Author: Damien Bouvarel <dams.bouvarel at wanadoo.fr>
Date: Mon Aug 24 08:29:27 2009 +0200
clean repository
diff --git a/abstract_evaluator.li b/abstract_evaluator.li
deleted file mode 100644
index 080eb00..0000000
--- a/abstract_evaluator.li
+++ /dev/null
@@ -1,147 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := ABSTRACT_EVALUATOR;
-
- - comment := "Maps a spline function";
-
-Section Inherit
-
- + parent_state:Expanded STATE;
-
-Section Public
-
- // types of the control points
- - vertex3:INTEGER <- 1;
- - vertex4:INTEGER <- 2;
- - index:INTEGER <- 3;
- - normal:INTEGER <- 4;
- - texture_coord1:INTEGER <- 5;
- - texture_coord2:INTEGER <- 6;
- - texture_coord3:INTEGER <- 7;
- - texture_coord4:INTEGER <- 8;
- - color4:INTEGER <- 9;
-
-
- + type:INTEGER;
- + capacity:INTEGER;
-
- + control_points:FAST_ARRAY[REAL_32];
-
-
- - create (t, cap:INTEGER) :SELF <-
- (
- + result:SELF;
- result := SELF.clone;
- result.make (t,cap);
- result
- );
-
- - create_for_vertex3 cap:INTEGER :SELF <-
- (
- create (vertex3,cap)
- );
-
- - create_for_vertex4 cap:INTEGER :SELF <-
- (
- create (vertex4,cap)
- );
-
- - create_for_index cap:INTEGER :SELF <-
- (
- create (index,cap)
- );
-
- - create_for_normal cap:INTEGER :SELF <-
- (
- create (normal,cap)
- );
-
- - create_for_texture_coord1 cap:INTEGER :SELF <-
- (
- create (texture_coord1,cap)
- );
-
- - create_for_texture_coord2 cap:INTEGER :SELF <-
- (
- create (texture_coord2,cap)
- );
-
- - create_for_texture_coord3 cap:INTEGER :SELF <-
- (
- create (texture_coord3,cap)
- );
-
- - create_for_texture_coord4 cap:INTEGER :SELF <-
- (
- create (texture_coord4,cap)
- );
-
- - create_for_color4 cap:INTEGER :SELF <-
- (
- create (color4,cap)
- );
-
- - make (t,cap:INTEGER) <-
- (
- type := t;
- capacity := cap;
- );
-
- - begin_control_points <-
- (
- control_points := FAST_ARRAY[REAL_32].create_with_capacity capacity;
- );
- - end <- ();
- - new_control_points body:BLOCK <-
- (
- begin_control_points;
- body.value;
- end;
- );
-
- - add_point4f (x,y,z,w:REAL_32) <-
- (
- control_points.add_last x;
- control_points.add_last y;
- control_points.add_last z;
- control_points.add_last w;
- );
-
- - add_point3f (x,y,z:REAL_32) <-
- (
- control_points.add_last x;
- control_points.add_last y;
- control_points.add_last z;
- );
-
- - add_point2f (x,y:REAL_32) <-
- (
- control_points.add_last x;
- control_points.add_last y;
- );
-
- - add_point1f (x:REAL_32) <-
- (
- control_points.add_last x;
- );
\ No newline at end of file
diff --git a/accum_buffer.li b/accum_buffer.li
deleted file mode 100644
index 2711a88..0000000
--- a/accum_buffer.li
+++ /dev/null
@@ -1,67 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := ACCUM_BUFFER;
-
- - comment := "Abstract Accumulation buffer";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- // accumulation functions
- - accum:INTEGER <- 1; // accum_buffer = accum_buffer + val * color_buffer
- - load:INTEGER <- 2; // accum_buffer = val * color_buffer
- - return:INTEGER <- 3; // color_buffer = val * accum_buffer
- - add:INTEGER <- 4; // accum_buffer = accum_buffer + val
- - mult:INTEGER <- 5; // accum_buffer = val * accum_buffer
-
- - set_function f:INTEGER value val:REAL_32 <- deferred;
-
-
- // different way to use functions
- - accumulate_with coef:REAL_32 <-
- (
- set_function accum value coef;
- );
- - load_with coef:REAL_32 <-
- (
- set_function load value coef;
- );
- - return_with coef:REAL_32 <-
- (
- set_function return value coef;
- );
- - add_with val:REAL_32 <-
- (
- set_function add value val;
- );
- - mult_with val:REAL_32 <-
- (
- set_function mult value val;
- );
-
- - clear <- deferred;
-
diff --git a/alpha_test.li b/alpha_test.li
deleted file mode 100644
index 3c7d9d6..0000000
--- a/alpha_test.li
+++ /dev/null
@@ -1,44 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := ALPHA_TEST;
-
- - comment := "Alpha Testing (only in RGBA mode)";
-
-Section Inherit
-
- + parent_state:Expanded STATE;
-
-Section Public
-
- // pixel test functions
- - always:INTEGER <- 0; // test always sucess
- - never:INTEGER <- 1; // test always fails
- - less:INTEGER <- 2; // pixel drawn if its alpha-value is lesser than the corresponding depth buffer pixel
- - lequal:INTEGER <- 3; // lesser or equal
- - equal:INTEGER <- 4;
- - gequal:INTEGER <- 5; // greater or equal
- - greater:INTEGER <- 6;
- - notequal:INTEGER <- 7; // not equal
-
- - apply f:INTEGER with val:REAL_32 <- deferred;
\ No newline at end of file
diff --git a/blending.li b/blending.li
deleted file mode 100644
index 7ae19f5..0000000
--- a/blending.li
+++ /dev/null
@@ -1,49 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := BLENDING;
-
- - comment := "Abstact Blending Mode";
-
-Section Inherit
-
- + parent_state:Expanded STATE;
-
-Section Public
-
- // factors values
- - zero:INTEGER <- 0; // (0, 0, 0, 0)
- - one:INTEGER <- 1; // (1, 1, 1, 1)
- - dst_color:INTEGER <- 2; // (destR, destG, destB, destA)
- - one_minus_dst_color:INTEGER <- 3; // (1-destR, 1-destG, 1-destB, 1-destA)
- - src_color:INTEGER <- 4; // (srcR, srcG, srcB, srcA)
- - one_minus_src_color:INTEGER <- 5; // (1-srcR, 1-srcG, 1-srcB, 1-srcA)
- - src_alpha:INTEGER <- 6; // (srcA, srcA, srcA, srcA)
- - one_minus_src_alpha:INTEGER <- 7; // (1-srcA, 1-srcA, 1-srcA, 1-srcA)
- - dst_alpha:INTEGER <- 8; // (destA, destA, destA, destA)
- - one_minus_dst_alpha:INTEGER <- 9; // (1-destA, 1-destA, 1-destA, 1-destA)
- - src_alpha_saturate:INTEGER <- 10; // (min(srcA, 1-destA), ...)
-
- - apply (src_factor,dst_factor:INTEGER) <- deferred;
-
- - set_alpha_value alpha:REAL_32 <- deferred;
\ No newline at end of file
diff --git a/color.li b/color.li
deleted file mode 100644
index 35940d4..0000000
--- a/color.li
+++ /dev/null
@@ -1,39 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := COLOR;
-
- - comment := "Generic type for colors";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - r:REAL_32 <- deferred;
- - g:REAL_32 <- deferred;
- - b:REAL_32 <- deferred;
- - a:REAL_32 <- deferred;
-
- - getv:FAST_ARRAY[REAL_32] <- deferred;
\ No newline at end of file
diff --git a/color_buffer.li b/color_buffer.li
deleted file mode 100644
index 923747b..0000000
--- a/color_buffer.li
+++ /dev/null
@@ -1,76 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := COLOR_BUFFER;
-
- - comment := "abstract pixel color buffer";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - rgb:INTEGER <- 0;
- - rgba:INTEGER <- 1;
- - red:INTEGER <- 2;
- - green:INTEGER <- 3;
- - blue:INTEGER <- 4;
- - alpha:INTEGER <- 5;
- - luminance:INTEGER <- 6; // grey (single component)
- - luminance_alpha:INTEGER <- 7; // grey+alpha
- - stencil_index:INTEGER <- 8;
- - depth_component:INTEGER <- 9;
-
-
- - clear <- deferred;
- - set_clear_value (r,g,b,a:REAL_32) <- deferred;
-
- - set_color c:COLOR <- deferred;
- - set_color3f (r,g,b:REAL_32) <- deferred;
- - set_color4f (r,g,b,a:REAL_32) <- deferred;
-
- - set_mask (r,g,b,a:BOOLEAN) <- deferred;
-
- - enable <- deferred;
- - disable <- deferred;
-
- //
- // FrameBuffer transfert functions
- //
-
- - read (x,y:INTEGER) size (w,h:INTEGER) type t:INTEGER in buf:FAST_ARRAY[UINTEGER_8] <- deferred;
-
- - read_rgb (x,y:INTEGER) size (w,h:INTEGER) in buf:FAST_ARRAY[UINTEGER_8] <- deferred;
- - read_rgba (x,y:INTEGER) size (w,h:INTEGER) in buf:FAST_ARRAY[UINTEGER_8] <- deferred;
-
-
- - draw_pixels pixels:FAST_ARRAY[UINTEGER_8] size (w,h:INTEGER) type t:INTEGER <- deferred;
-
- - draw_rgb_pixels pixels:FAST_ARRAY[UINTEGER_8] size (w,h:INTEGER) <- deferred;
- - draw_rgba_pixels pixels:FAST_ARRAY[UINTEGER_8] size (w,h:INTEGER) <- deferred;
-
- - copy (x,y:INTEGER) size (w,h:INTEGER) type t:INTEGER <- deferred;
-
- - copy_rgb (x,y:INTEGER) size (w,h:INTEGER) <- deferred;
- - copy_rgba (x,y:INTEGER) size (w,h:INTEGER) <- deferred;
\ No newline at end of file
diff --git a/culling.li b/culling.li
deleted file mode 100644
index 5f8818c..0000000
--- a/culling.li
+++ /dev/null
@@ -1,67 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := CULLING;
-
- - comment := "Abstract Culling Mode";
-
-Section Inherit
-
- + parent_state:Expanded STATE;
-
-Section Public
-
- // culling modes
- - front:INTEGER <- 1;
- - back:INTEGER <- 2;
-
- // culling function
- - clockwise:INTEGER <- 3;
- - counter_clockwise:INTEGER <- 4;
-
-
- - apply mode:INTEGER <- deferred;
- - set_orientation o:INTEGER <- deferred;
-
-
- // aliases
- - apply_front <-
- (
- apply front;
- );
-
- - apply_back <-
- (
- apply back;
- );
-
- - set_clockwise <-
- (
- set_orientation clockwise;
- );
-
- - set_counter_clockwise <-
- (
- set_orientation counter_clockwise;
- );
-
diff --git a/depth_buffer.li b/depth_buffer.li
deleted file mode 100644
index ba6373a..0000000
--- a/depth_buffer.li
+++ /dev/null
@@ -1,50 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := DEPTH_BUFFER;
-
- - comment := "abstract pixel buffer";
-
-Section Inherit
-
- + parent_state:Expanded STATE;
-
-Section Public
-
- // pixel test functions
- - always:INTEGER <- 0; // test always sucess
- - never:INTEGER <- 1; // test always fails
- - less:INTEGER <- 2; // pixel drawn if its Z-value is lesser than the corresponding depth buffer pixel
- - lequal:INTEGER <- 3; // lesser or equal: (pixelDepth <= bufferDepth) => draw pixel else don't
- - equal:INTEGER <- 4;
- - gequal:INTEGER <- 5; // greater or equal
- - greater:INTEGER <- 6;
- - notequal:INTEGER <- 7; // not equal
-
- - set_clear_value val:REAL_32 <- deferred;
- - clear <- deferred;
-
- - lock <- deffered;
- - unlock <- deffered;
-
- - set_function f:INTEGER <- deferred;
\ No newline at end of file
diff --git a/display_list.li b/display_list.li
deleted file mode 100644
index 2a193aa..0000000
--- a/display_list.li
+++ /dev/null
@@ -1,38 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := DISPLAY_LIST;
-
- - author := "api independant display list";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - create body:BLOCK :SELF <- deferred;
-
- - call <- deferred;
-
- - destroy <- deferred;
diff --git a/error.li b/error.li
deleted file mode 100644
index bd645e9..0000000
--- a/error.li
+++ /dev/null
@@ -1,78 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := ERROR;
-
- - comment := "Renderer error";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- //
- // Error codes
- //
-
- - no_error:INTEGER <- 0;
- - invalid_enum:INTEGER <- 1;
- - invalid_value:INTEGER <- 2;
- - invalid_operation:INTEGER <- 3;
- - stack_overflow:INTEGER <- 4;
- - stack_underflow:INTEGER <- 5;
- - out_of_memory:INTEGER <- 6;
-
- - last_error:INTEGER := no_error;
-
-
- // return current error state variable
- - get:INTEGER <- deferred;
-
- // return details of error
- - get buffer:STRING from code:INTEGER <- deferred;
-
- - get_string <-
- (
- msg_error.clear;
- get msg_error from last_error;
- );
-
- - print_error <-
- (
- get_string;
- STD_ERROR.put_string msg_error;
- );
-
- - print msg:ABSTRACT_STRING <-
- (
- msg_error.clear;
- msg_error.append "\nRenderer error: ";
- msg_error.append msg;
-
- STD_ERROR.put_string msg_error;
- );
-
-Section Public
-
- - msg_error:STRING := STRING.create 256;
\ No newline at end of file
diff --git a/evaluator1d.li b/evaluator1d.li
deleted file mode 100644
index df60cfa..0000000
--- a/evaluator1d.li
+++ /dev/null
@@ -1,50 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := EVALUATOR1D;
-
- - comment := "Maps a curve line";
-
-Section Inherit
-
- + parent_abstract_evaluator:Expanded ABSTRACT_EVALUATOR;
-
-Section Public
-
- // mesh drawing modes
- - line:INTEGER <- 1;
- - point:INTEGER <- 2;
-
-
- // load the map function
- - map (n_points,point_size:INTEGER) range (t1,t2:REAL_32) <- deferred;
-
- // generate a point for the parametric value 'val'
- - evaluate val:REAL_32 <- deferred;
-
- // auto generate n points evenly spaced between (t1,t2)
- - generate_grid nb_points:INTEGER between (t1,t2:REAL_32) <- deferred;
-
- // Warning: mode is defined in the vertex buffer prototype
- - evaluate_mesh mode:INTEGER from start:INTEGER to end:INTEGER <- deferred;
-
\ No newline at end of file
diff --git a/evaluator2d.li b/evaluator2d.li
deleted file mode 100644
index 1ec2361..0000000
--- a/evaluator2d.li
+++ /dev/null
@@ -1,50 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := EVALUATOR2D;
-
- - comment := "Maps a spline surface";
-
-Section Inherit
-
- + parent_abstract_evaluator:Expanded ABSTRACT_EVALUATOR;
-
-Section Public
-
- // mesh drawing modes
- - line:INTEGER <- 1;
- - point:INTEGER <- 2;
- - fill:INTEGER <- 3;
-
- // load the map function
- - map (u_order,u_size:INTEGER) and (v_order,v_size:INTEGER) range (u1,v1:REAL_32) to (u2,v2:REAL_32) <- deferred;
-
- // generate a point for the parametric values x,y
- - evaluate (x,y:REAL_32) <- deferred;
-
- // auto generate n points evenly spaced between (t1,t2)
- - generate_grid (w,h:INTEGER) between (u1,u2:REAL_32) and (v1,v2:REAL_32) <- deferred;
-
- // Warning: mode is defined in the vertex buffer prototype
- - evaluate_mesh mode:INTEGER from (start1,start2:INTEGER) to (end1,end2:INTEGER) <- deferred;
-
diff --git a/fog.li b/fog.li
deleted file mode 100644
index 6079d11..0000000
--- a/fog.li
+++ /dev/null
@@ -1,82 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := FOG;
-
- - comment := "Fog properties";
-
-Section Inherit
-
- + parent_state:Expanded STATE;
-
-Section Public
-
- // fog modes
- - filter_linear:INTEGER <- 1;
- - filter_exp:INTEGER <- 2;
-
- - fogmode:INTEGER := filter_linear; // best fog rendering mode
-
- + color:COLOR;
- + density:REAL_32;
-
- // fog depth
- + start:REAL_32;
- + end:REAL_32;
-
- - create (c:COLOR, d,s,e:REAL_32) :SELF <-
- (
- + result:SELF;
- result := SELF.clone;
- result.make (c,d,s,e);
- result
- );
-
- - make (c:COLOR, d,s,e:REAL_32) <-
- (
- color := c;
- density := d;
- start := s;
- end := e;
- render;
- );
-
- - set_filter f:INTEGER <- fogmode := f;
-
- - set_color c:COLOR <-
- (
- color := c;
- );
-
- - set_density d:REAL_32 <-
- (
- density := d;
- );
-
- - set_depth (s,e:REAL_32) <-
- (
- start := s;
- end := e;
- );
-
- - render <- deferred;
\ No newline at end of file
diff --git a/font.li b/font.li
deleted file mode 100644
index 58017f6..0000000
--- a/font.li
+++ /dev/null
@@ -1,71 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := FONT;
-
- - comment := "rendered font";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- + name:STRING;
-
- + font_height:UINTEGER_32 := 24;
- + nb_chars:INTEGER := 96;
-
-
- - create s:ABSTRACT_STRING :SELF <-
- (
- + result:SELF;
- result := SELF.clone;
- result.make s;
- result
- );
-
- - make s:ABSTRACT_STRING <-
- (
- name := STRING.create_from_string s;
-
- load;
- );
-
- - enable <- deferred;
- - disable <- deferred;
-
- - print_zone body:BLOCK <-
- (
- enable;
- body.value;
- disable;
- );
-
- - load <- deferred;
- - unload <- deferred;
-
- - print text:ABSTRACT_STRING at (x,y:INTEGER) <- deferred;
-
- // get default font
- - default:FONT <- (deferred;NULL);
\ No newline at end of file
diff --git a/gfx_engine/abstract_keycode.li b/gfx_engine/abstract_keycode.li
deleted file mode 100644
index feb9950..0000000
--- a/gfx_engine/abstract_keycode.li
+++ /dev/null
@@ -1,79 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := ABSTRACT_KEYCODE;
-
- - comment := "platform independant key mapping";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- // based on (simplified) Quake3 key map
- - k_tab:INTEGER <- 9;
- - k_enter:INTEGER <- 13;
- - k_escape:INTEGER <- 27;
- - k_space:INTEGER <- 32;
- - k_backspace:INTEGER <- 127;
-
- //- k_capslock:INTEGER <- 129;
- - k_pause:INTEGER <- 131;
-
- - k_up:INTEGER <- 132;
- - k_down:INTEGER <- 133;
- - k_left:INTEGER <- 134;
- - k_right:INTEGER <- 135;
-
- - k_alt:INTEGER <- 136;
- - k_ctrl:INTEGER <- 137;
- - k_shift:INTEGER <- 138;
- - k_ins:INTEGER <- 139;
- - k_del:INTEGER <- 140;
- - k_pgdn:INTEGER <- 141;
- - k_pgup:INTEGER <- 142;
- //- k_home:INTEGER <- 143;
- // - k_end:INTEGER <- 144;
-
- - k_f1:INTEGER <- 145;
- - k_f2:INTEGER <- 146;
- - k_f3:INTEGER <- 147;
- - k_f4:INTEGER <- 148;
- - k_f5:INTEGER <- 149;
- - k_f6:INTEGER <- 150;
- - k_f7:INTEGER <- 151;
- - k_f8:INTEGER <- 152;
- - k_f9:INTEGER <- 153;
- - k_f10:INTEGER <- 154;
- - k_f11:INTEGER <- 155;
- - k_f12:INTEGER <- 156;
-
-Section Private
-
- - keys:HASHED_DICTIONARY[INTEGER,INTEGER];
-
-Section Public
-
- - max_keys:INTEGER := 256;
-
\ No newline at end of file
diff --git a/gfx_engine/camera.li b/gfx_engine/camera.li
deleted file mode 100644
index ff32711..0000000
--- a/gfx_engine/camera.li
+++ /dev/null
@@ -1,210 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := CAMERA;
-
- - comment := "handle view (based on gluLookAt())";
-
-Section Inherit
-
- - parent_engine_any:ENGINE_ANY := ENGINE_ANY;
-
-Section Public
-
- // position in 3d world
- + position:VECTOR3[REAL_32];
-
- // camera's view vector
- + view:VECTOR3[REAL_32];
-
- // camera's up vector (orthonormal with view & right)
- + up:VECTOR3[REAL_32];
-
- // camera's up vector (orthonormal with view & up)
- + right:VECTOR3[REAL_32];
-
-
- // speed coeff
- - kspeed:REAL_32 := 0.5;
-
-
- - create_from (p,v,u,r:VECTOR3[REAL_32]) :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make (p,v,u,r);
- result
- );
-
- - create_position (p:VECTOR3[REAL_32]) :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make (p, VECTOR3[REAL_32].create (0.0,-1.0,1.0),VECTOR3[REAL_32].create (0.0,1.0,0.0),VECTOR3[REAL_32].create (1.0,0.0,0.0));
- result
- );
-
- - create_position p:VECTOR3[REAL_32] looking_at target:VECTOR3[REAL_32] :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make (p, (target - p).normalized, VECTOR3[REAL_32].create (0.0,1.0,0.0),VECTOR3[REAL_32].create (1.0,0.0,0.0));
- result
- );
-
- - create :SELF <-
- // default camera
- ( + result:SELF;
- result := SELF.clone;
- result.make (VECTOR3[REAL_32].create (0.0,1.0,-1.0), VECTOR3[REAL_32].create (0.0,-1.0,1.0),VECTOR3[REAL_32].create (0.0,1.0,0.0),VECTOR3[REAL_32].create (1.0,0.0,0.0));
- result
- );
-
- - make (p,v,u,r:VECTOR3[REAL_32]) <-
- (
- position := p;
- view := v;
- up := u;
- right := r;
- );
-
- - set_position p:VECTOR3[REAL_32] <-
- (
- position := p;
- );
-
- - set_view v:VECTOR3[REAL_32] <-
- (
- view := v;
- );
-
- - set_up u:VECTOR3[REAL_32] <-
- (
- up := u;
- );
-
- - set_right u:VECTOR3[REAL_32] <-
- (
- right := u;
- );
-
- - look <-
- (
- + px,py,pz,vx,vy,vz,ux,uy,uz:REAL_32;
-
- px := position.x;
- py := position.y;
- pz := position.z;
-
- vx := px + view.x;
- vy := py + view.y;
- vz := pz + view.z;
-
- ux := up.x;
- uy := up.y;
- uz := up.z;
-
- `gluLookAt (@px, at py, at pz, @vx, at vy, at vz, @ux, at uy, at uz)`;
- );
-
- - update_with_mouse <-
- (
- + midx, midy, mx, my:INTEGER;
- + angle_y, angle_x:REAL_32;
-
- midx := screen_width >> 1;
- midy := screen_height >> 1;
-
- (mx,my) := INPUT_SYSTEM.get_mouse_pos;
-
- ((mx = midx) && {my = midy}).if_false {
- INPUT_SYSTEM.warp_mouse (midx,midy); // a changer
-
- // scaled direction the moused moved in
- angle_y := (midx - mx).to_real / 1000.0;
- angle_x := (midy - my).to_real / 1000.0;
-
- rotate_y angle_y;
- rotate_x angle_x;
- };
- );
-
- - rotate_x angle:REAL_32 <-
- (
- view := ((view*angle.cos) + (up*angle.sin)).normalized;
-
- up := (view.cross right) * -1;
- );
-
- - rotate_y angle:REAL_32 <-
- (
- view := ((view*angle.cos) - (right*angle.sin)).normalized;
-
- right := view.cross up;
- );
-
- - rotate_z angle:REAL_32 <-
- (
- right := ((right*angle.cos) + (up*angle.sin)).normalized;
-
- up := view.cross right * -1;
- );
-
- - move (speed:REAL_32,time:UINTEGER_32) axis v:VECTOR3[REAL_32] <-
- (
- + t:REAL_32;
-
- t := time.to_real;
-
- position.set_x (position.x + v.x * speed * t);
- position.set_y (position.y + v.y * speed * t);
- position.set_z (position.z + v.z * speed * t);
- );
-
- //
- // just for testing
- //
- - update_with_keys time:UINTEGER_32 <-
- (
- (INPUT_SYSTEM.keydown (KEYCODE.k_up)).if {
- move (kspeed,time) axis view;
- INPUT_SYSTEM.set_up (KEYCODE.k_up);// hack
- };
- (INPUT_SYSTEM.keydown (KEYCODE.k_down)).if {
- move (-kspeed,time) axis view;
- INPUT_SYSTEM.set_up (KEYCODE.k_down); // hack
- };
- (INPUT_SYSTEM.keydown (KEYCODE.k_left)).if {
- move (-kspeed,time) axis right;
- INPUT_SYSTEM.set_up (KEYCODE.k_up);// hack
- };
- (INPUT_SYSTEM.keydown (KEYCODE.k_right)).if {
- move (kspeed,time) axis right;
- INPUT_SYSTEM.set_up (KEYCODE.k_right); // hack
- };
- );
-
- - animate t:UINTEGER_32 <-
- (
- update_with_mouse;
- update_with_keys t;
- );
-
-
\ No newline at end of file
diff --git a/gfx_engine/engine.li b/gfx_engine/engine.li
deleted file mode 100644
index 405b399..0000000
--- a/gfx_engine/engine.li
+++ /dev/null
@@ -1,195 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := ENGINE;
-
- - author := "Damien Bouvarel";
- - comment := "(very begining of) 3d engine";
-
-Section Inherit
-
- - parent_engine_any:ENGINE_ANY := ENGINE_ANY;
-
-Section Private
-
- - scene:SCENE := SCENE; // liste ou arbre... (node_scene...)
-
-Section Public
-
- - is_running:BOOLEAN;
-
- - fps_max:INTEGER := 60;
-
- - out:FONT;
-
- - make renderer:RENDERER <-
- (
- + str:STRING;
-
- set_render_system renderer;
-
- screen_width := renderer.width;
- screen_height := renderer.height;
-
- log := LOG.create "renderer.log" level 3;
-
- ENGINE_INPUT.make;
- renderer.set_listener ENGINE_INPUT;
-
- str := STRING.create 32;
- log.print "=========== GFX Engine v0.1 ===========";
- log.print "Video Card:";
- str.clear;
- renderer.video_card_name str;
- str.add_last '\n';
- renderer.video_card_vendor str;
- str.add_last '\n';
- renderer.video_card_version str;
- log.print str;
-
- is_running := TRUE;
- );
-
- - attach_scene sc:SCENE <-
- (
- scene := sc;
- );
-
- - initialize <-
- (
- random_init;
-
- out := renderer.font.default;
-
- SCENE.set_engine Self;
- scene.initialize;
- );
-
- - main_loop <-
- (
- + stop_time,time_per_frame:UINTEGER_32;
- + last_time,current_time,elapsed_time:UINTEGER_32;
- + err_code:INTEGER;
-
- time_per_frame := 1000/fps_max;
-
- renderer.start_ticks;
- last_time := renderer.get_ticks;
-
- {
- is_running := INPUT_SYSTEM.update;
-
- is_running.if {
- is_running := ! INPUT_SYSTEM.keydown (KEYCODE.k_escape);
-
- // compute elpased time
- current_time := renderer.get_ticks;
- elapsed_time := current_time - last_time;
- last_time := current_time;
-
- // render scene
- scene.render elapsed_time;
-
- report_error.if {
- err_code := renderer.error.get;
- (err_code != renderer.error.no_error).if {
- renderer.error.get_string;
- error ("Renderer error: "+renderer.error.msg_error);
- };
- };
-
- // bride fps
- stop_time := renderer.get_ticks;
- ((stop_time - last_time) < time_per_frame).if {
- renderer.delay (time_per_frame - (stop_time - last_time));
- };
- };
- }.do_while {is_running};
-
- // stop rendering
- scene.release;
- );
-
- - shutdown <-
- (
- is_running := FALSE;
- log.close;
- );
-
-Section Private
-
- - lighting_mode:BOOLEAN;
- - blending_mode:BOOLEAN;
- - fog_mode:BOOLEAN;
- - wireframe_mode:BOOLEAN;
- - shading_mode:BOOLEAN;
-
-Section Public
-
- - toggle_shading <-
- (
- shading_mode := ! shading_mode;
- shading_mode.if {
- renderer.enable_shading;
- } else {
- renderer.disable_shading;
- };
- );
-
- - toggle_lighting <-
- (
- lighting_mode := ! lighting_mode;
- lighting_mode.if {
- renderer.enable_lighting;
- } else {
- renderer.disable_lighting;
- };
- );
-
- - toggle_blending <-
- (
- blending_mode := ! blending_mode;
- blending_mode.if {
- renderer.blending.enable;
- renderer.depth_buffer.disable;
- } else {
- renderer.blending.disable;
- renderer.depth_buffer.enable;
- };
- );
-
- - toggle_fog <-
- (
- fog_mode := ! fog_mode;
- fog_mode.if {
- renderer.fog.enable;
- } else {
- renderer.fog.disable;
- };
- );
-
- - toggle_wireframe <-
- (
- wireframe_mode := ! wireframe_mode;
- renderer.wireframe_mode wireframe_mode;
- );
\ No newline at end of file
diff --git a/gfx_engine/engine_input.li b/gfx_engine/engine_input.li
deleted file mode 100644
index 9ecdd67..0000000
--- a/gfx_engine/engine_input.li
+++ /dev/null
@@ -1,81 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := ENGINE_INPUT;
-
-Section Inherit
-
- - parent_listener:LISTENER := LISTENER;
-
-Section Public
-
- + key_listeners:LINKED_LIST[KEY_LISTENER];
- + mouse_listeners:LINKED_LIST[MOUSE_LISTENER];
-
- - make <-
- (
- key_listeners := LINKED_LIST[KEY_LISTENER].create;
- mouse_listeners := LINKED_LIST[MOUSE_LISTENER].create;
- );
-
- - add_key_listener kl:KEY_LISTENER <-
- (
- key_listeners.add_last kl;
- );
-
- - add_mouse_listener ml:MOUSE_LISTENER <-
- (
- mouse_listeners.add_last ml;
- );
-
- //
- // Events
- //
-
- - on_keydown k:INTEGER <-
- (
- key_listeners.lower.to (key_listeners.upper) do { i:INTEGER;
- key_listeners.item i.keydown k;
- };
- );
-
- - on_keyup k:INTEGER <-
- (
- key_listeners.lower.to (key_listeners.upper) do { i:INTEGER;
- key_listeners.item i.keyup k;
- };
- );
-
- - on_mousemove (x,y:INTEGER) <-
- (
- mouse_listeners.lower.to (mouse_listeners.upper) do { i:INTEGER;
- mouse_listeners.item i.move (x,y);
- };
- );
-
- - on_mouseclick b:INTEGER <-
- (
- mouse_listeners.lower.to (mouse_listeners.upper) do { i:INTEGER;
- mouse_listeners.item i.click b;
- };
- );
\ No newline at end of file
diff --git a/gfx_engine/key_listener.li b/gfx_engine/key_listener.li
deleted file mode 100644
index a8ffb6b..0000000
--- a/gfx_engine/key_listener.li
+++ /dev/null
@@ -1,40 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := KEY_LISTENER;
-
- - comment := "catch key events";
-
-Section Inherit
-
- - parent_engine_any:ENGINE_ANY := ENGINE_ANY;
-
-Section Public
-
- - keydown k:INTEGER <-
- (
- );
-
- - keyup k:INTEGER <-
- (
- );
\ No newline at end of file
diff --git a/gfx_engine/log.li b/gfx_engine/log.li
deleted file mode 100644
index 4cbc72a..0000000
--- a/gfx_engine/log.li
+++ /dev/null
@@ -1,77 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
- + name := LOG;
-
- - comment := "Logging System";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - max_level:INTEGER <- 4;
-
- + file:POINTER;
- + level:INTEGER;
-
-
- //
- // Creation.
- //
-
- - create s:ABSTRACT_STRING level l:INTEGER :SELF <-
- ( + result:SELF;
- result := clone;
- result.make (s,l);
- result
- );
-
- - make (s:ABSTRACT_STRING, l:INTEGER) <-
- (
- level := l;
- file := FS_MIN.open_write s;
- );
-
- - print msg:ABSTRACT_STRING <-
- (
- + buf:STRING;
-
- buf := STRING.create_from_string msg;
- buf.append "\n";
-
- FS_MIN.write file with buf size(buf.count);
- );
-
- - print msg:ABSTRACT_STRING level l:INTEGER <-
- (
- (level + l >= max_level).if {
- print msg;
- };
- );
-
- - close <-
- (
- FS_MIN.close file;
- );
-
diff --git a/gfx_engine/low_level/engine_any.li b/gfx_engine/low_level/engine_any.li
deleted file mode 100644
index 019af85..0000000
--- a/gfx_engine/low_level/engine_any.li
+++ /dev/null
@@ -1,141 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := ENGINE_ANY;
-
- - comment := "Engine settings";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - screen_width:INTEGER;
- - screen_height:INTEGER;
-
- - renderer:RENDERER;
-
- // default log file
- - log:LOG;
-
- // debug
- - report_error:BOOLEAN;
-
- - track_errors <- report_error := TRUE;
- - untrack_errors <- report_error := FALSE;
-
- //
- // Random handling
- //
-
- /*- random:REAL_32 <-
- (
- `rand()`:REAL_32
- );*/
-
- - random:INTEGER <-
- (
- `rand()`:INTEGER
- );
-
- - random_ratio:REAL_32 <-
- (
- `rand() / (float)(RAND_MAX)`:REAL_32
- );
-
-
- - frand:REAL_32 <- // 0 to 1
- (
- `(rand()&32767) * (1.0/32767)`:REAL_32
- );
-
- - crand <- // -1 to 1
- (
- `(rand()&32767)* (2.0/32767) - 1`:REAL_32
- );
-
-
- - random_init <-
- (
- //Initialise le générateur pseudo-aléatoire
- `srand((unsigned)time(NULL))`;
- );
-
- - set_render_system rs:RENDERER <-
- (
- renderer := rs;
- );
-
- - error err:ABSTRACT_STRING <-
- (
- err.print;
- log.print err;
- );
-
- - screenshot s:ABSTRACT_STRING <-
- (
- + header,buffer:FAST_ARRAY[UINTEGER_8];
- + n,i:INTEGER;
- + temp:UINTEGER_8;
-
- + e:ENTRY;
- + file:STD_FILE;
-
- e := FILE_SYSTEM.make_file s;
- (e != NULL).if {
- file ?= e.open;
-
- header := FAST_ARRAY[UINTEGER_8].create 18;
- header.set_all_with 0;
-
- header.put 2 to 2; // uncompressed type
- header.put (renderer.width&255) to 12;
- header.put (renderer.width>>8) to 13;
- header.put (renderer.height&255) to 14;
- header.put (renderer.height>>8) to 15;
- header.put 24 to 16; // pixel size
-
- (file.write header from 0 size 18 > 0).if { // BUG!!!
-
- // write data
- n := renderer.width*renderer.height*3;
- buffer := FAST_ARRAY[UINTEGER_8].create n;
-
- renderer.color_buffer.read (0,0) to (renderer.width,renderer.height) in buffer;
-
- // swap rgb to bgr
- i := 0;
- {i < n}.while_do {
- temp := buffer.item i;
- buffer.put (buffer.item (i+2)) to i;
- buffer.put temp to (i+2);
-
- i := i+3;
- };
-
- file.write buffer from 0 size n;
- file.close;
- };
- };
- );
\ No newline at end of file
diff --git a/gfx_engine/model.li b/gfx_engine/model.li
deleted file mode 100644
index 7740b1e..0000000
--- a/gfx_engine/model.li
+++ /dev/null
@@ -1,97 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := MODEL;
-
- - comment := "Animated 3d model";
-
-Section Inherit
-
- - parent_engine_any:ENGINE_ANY := ENGINE_ANY;
-
-Section Public
-
- + name:STRING;
-
- + texture:TEXTURE;
- + material:MATERIAL;
-
- + lerp:REAL_32;
-
- + current_frame:INTEGER;
- + old_frame:INTEGER;
- + nb_frames:INTEGER;
-
- - create s:ABSTRACT_STRING with tex:TEXTURE :SELF <-
- (
- + result:SELF;
- result := SELF.clone;
- result.make (s,tex);
- result
- );
-
- - create s:ABSTRACT_STRING :SELF <-
- (
- + result:SELF;
- result := SELF.clone;
- result.make (s,NULL);
- result
- );
-
- - make (s:ABSTRACT_STRING, tex:TEXTURE) <-
- (
- name := STRING.create_from_string s;
- texture := tex;
- load;
- );
-
- - set_material m:MATERIAL <-
- (
- material := m;
- );
-
- - render <-
- (
- deferred;
- );
-
- - render_with tex:TEXTURE <-
- (
- deferred;
- );
-
- - load <- deferred;
-
- - update time:REAL_32 <-
- (
- lerp := lerp + time;
- (lerp >= 1.0).if {
- lerp := 0.0;
- old_frame := current_frame;
- current_frame := current_frame + 1;
-
- (current_frame >= nb_frames).if {
- current_frame := 0;
- };
- };
- );
\ No newline at end of file
diff --git a/gfx_engine/model_format/md2_frame.li b/gfx_engine/model_format/md2_frame.li
deleted file mode 100644
index c31059a..0000000
--- a/gfx_engine/model_format/md2_frame.li
+++ /dev/null
@@ -1,67 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := MD2_FRAME;
-
- - comment := "Quake2' md2 model format";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-
-Section Public
-
- - fixme:VECTOR3[REAL_32] := VECTOR3[REAL_32].zero;
-
- + name:STRING;
-
- // frame transformation
- + scale:VECTOR3[REAL_32] := fixme;
- + translate:VECTOR3[REAL_32] := fixme;
-
- + vertex:FAST_ARRAY[MD2_VERTEX];
-
-
- - create (n:ABSTRACT_STRING, s,t:VECTOR3[REAL_32], v:FAST_ARRAY[MD2_VERTEX]) :SELF <-
- (
- + result:SELF;
- result := SELF.clone;
- result.make (n,s,t,v);
- result
- );
-
- - make (n:ABSTRACT_STRING, s,t:VECTOR3[REAL_32], v:FAST_ARRAY[MD2_VERTEX]) <-
- (
- name := STRING.create_from_string n;
- scale := s;
- translate := t;
- vertex := v;
- );
-
- - print <-
- (
- "\n-> frame ".print; name.print;
- " sc = ".print; scale.print;
- " tr = ".print; translate.print;
- );
\ No newline at end of file
diff --git a/gfx_engine/model_format/md2_model.li b/gfx_engine/model_format/md2_model.li
deleted file mode 100644
index 1e6f588..0000000
--- a/gfx_engine/model_format/md2_model.li
+++ /dev/null
@@ -1,321 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := MD2_MODEL;
-
- - comment := "Quake2' md2 model format";
-
-Section Inherit
-
- + parent_model:Expanded MODEL;
-
- - parent_md2_normals:MD2_NORMALS := MD2_NORMALS;
-
-Section Public
-
- - md2_magic:INTEGER <- 0;
- - md2_version:INTEGER <- 1;
-
- - md2_skin_width:INTEGER <- 2;
- - md2_skin_height:INTEGER <- 3;
-
- - md2_nb_vertex:INTEGER <- 6;
- - md2_nb_texels:INTEGER <- 7;
- - md2_nb_triangles:INTEGER <- 8;
- - md2_nb_frames:INTEGER <- 10;
-
- - md2_offset_texels:INTEGER <- 12;
- - md2_offset_tris:INTEGER <- 13;
- - md2_offset_frames:INTEGER <- 14;
-
-
- // texture coordinates
- + texels:FAST_ARRAY[VECTOR2[INTEGER_16]];
-
- // model geometry
- + triangles:FAST_ARRAY[MD2_TRIANGLE];
-
- // model frames for animation
- + frames:FAST_ARRAY[MD2_FRAME];
-
- // re-scaling model
- + scale:REAL_32;
-
- // frame start of each animation
- + anim_index:FAST_ARRAY[INTEGER];
-
- // skin texture dimensions
- + skin_width:REAL_32;
- + skin_height:REAL_32;
-
- - load <-
- (
- + header:FAST_ARRAY[UINTEGER_32];
- + buffer_16:FAST_ARRAY[INTEGER_16];
- + nb_texels,nb_tris,nb_vertex:INTEGER;
- + v:VECTOR2[INTEGER_16];
- + t:MD2_TRIANGLE;
- + x:INTEGER;
-
- + e:ENTRY;
- + file:STD_FILE;
-
- e := FILE_SYSTEM.get_entry name;
- (e != NULL).if {
- file ?= e;
- file.open;
-
- // md2 header size = 17*4 bytes
- header := FAST_ARRAY[UINTEGER_32].create_with_capacity 17;
-
- (file.read header size (17) > 0).if {
- // read header
-
- ((header.item md2_magic != 844121161) || {header.item md2_version != 8}).if {
- error "Bad model file";
- };
-
- nb_texels := header.item md2_nb_texels;
- nb_tris := header.item md2_nb_triangles;
- nb_frames := header.item md2_nb_frames;
- nb_vertex := header.item md2_nb_vertex;
-
- /* "\nNb texels: ".print;nb_texels.print;
- "\nNb tris: ".print;nb_tris.print;
- "\nNb verts: ".print;nb_vertex.print;
- "\nNb frames: ".print;nb_frames.print;
- */
- texels := FAST_ARRAY[VECTOR2[INTEGER_16]].create_with_capacity nb_texels;
- triangles := FAST_ARRAY[MD2_TRIANGLE].create_with_capacity nb_tris;
-
- frames := FAST_ARRAY[MD2_FRAME].create_with_capacity nb_frames;
-
- skin_width := header.item md2_skin_width.to_real;
- skin_height := header.item md2_skin_height.to_real;
-
- // coord texture
- buffer_16 := FAST_ARRAY[INTEGER_16].create_with_capacity (nb_texels*2);
- file.set_cursor (header.item md2_offset_texels);
- (file.read buffer_16 size (nb_texels*2) <= 0).if {
- error "load model: read error";
- };
-
- // read texels
- x := 0;
- {x < nb_texels*2}.while_do {
- v := VECTOR2[INTEGER_16].create (buffer_16.item (x),buffer_16.item (x+1));
- texels.add_last v;
- x := x+2;
- };
-
- // triangles
- buffer_16 := FAST_ARRAY[INTEGER_16].create_with_capacity (nb_tris*6);
- file.set_cursor (header.item md2_offset_tris);
- (file.read buffer_16 size (nb_tris*6) <= 0).if {
- error "load model: read error";
- };
-
- x := 0;
- {x < nb_tris*6}.while_do {
- t := MD2_TRIANGLE.create (buffer_16.item x,buffer_16.item (x+1),buffer_16.item (x+2),buffer_16.item (x+3),buffer_16.item (x+4),buffer_16.item (x+5));
- triangles.add_last t;
-
- x := x + 6;
- };
-
- // frames
- file.set_cursor (header.item md2_offset_frames);
- 1.to nb_frames do { i:INTEGER;
- frames.add_last (load_frame (file, nb_vertex));
- };
-
- scale := 3.0;
- current_frame := 1;
- };
- };
- );
-
- - load_frame (file:STD_FILE, nb_vertex:INTEGER) :MD2_FRAME <-
- (
- + scale,translate:VECTOR3[REAL_32];
- + vertex:FAST_ARRAY[MD2_VERTEX];
- + buffer:FAST_ARRAY[REAL_32];
- + buffer_8:FAST_ARRAY[UINTEGER_8];
- + x,y,z:REAL_32;
- + name:FAST_ARRAY[CHARACTER];
- + v:MD2_VERTEX;
- + i:INTEGER;
-
- vertex := FAST_ARRAY[MD2_VERTEX].create_with_capacity nb_vertex;
-
- // read transformation vectors
- buffer := FAST_ARRAY[REAL_32].create_with_capacity 7;
- (file.read buffer size 6 <= 0).if {
- error "load model: read error (trans)";
- };
-
- x := buffer.item 0;
- y := buffer.item 1;
- z := buffer.item 2;
-
- scale := VECTOR3[REAL_32].create (x,y,z);
-
- x := buffer.item 3;
- y := buffer.item 4;
- z := buffer.item 5;
-
- translate := VECTOR3[REAL_32].create (x,y,z);
-
- // read frame name
- name := FAST_ARRAY[CHARACTER].create_with_capacity 16;
- (file.read name size 16 <= 0).if {
- error "load model: read error (name)";
- };
-
- buffer_8 := FAST_ARRAY[UINTEGER_8].create_with_capacity (4*nb_vertex);
- (file.read buffer_8 size (4*nb_vertex) <= 0).if {
- error "load model: read error";
- };
- i := 0;
- {i < nb_vertex*4}.while_do {
-
- v := MD2_VERTEX.create (buffer_8.item i,buffer_8.item (i+1),buffer_8.item (i+2),buffer_8.item (i+3));
-
- vertex.add_last v;
- i := i + 4;
- };
-
- MD2_FRAME.create (CONVERT[FAST_ARRAY[CHARACTER],STRING].on (name), scale, translate, vertex)
- );
-
- - render_with tex:TEXTURE <-
- (
- texture := tex;
- render;
- );
-
- - n:VERTEX := VERTEX.clone;// avoid multiple cloning
- - n1:VERTEX := VERTEX.clone;
- - n2:VERTEX := VERTEX.clone;
- - v:VERTEX := VERTEX.clone;
- - v1:VERTEX := VERTEX.clone;
- - v2:VERTEX := VERTEX.clone;
-
- - render <-
- (
- + frame1,frame2:MD2_FRAME;
- + poly:MD2_TRIANGLE;
- + verts1,verts2:MD2_VERTEX;
- + vertex_index,texel_index:INTEGER_16;
- + texel:VECTOR2[INTEGER_16];
- //+ n,n1,n2,v,v1,v2:VERTEX;
- + x,y,z:REAL_32;
-
- frame1 := frames.item old_frame;
- frame2 := frames.item current_frame;
-
-
- (material != NULL).if {
- material.apply (MATERIAL.mode_front);
- };
- (texture != NULL).if {
- texture.bind;
- };
-
- renderer.vb.begin_triangles;
-
- // draw each triangle
- triangles.lower.to (triangles.upper) do { i:INTEGER;
- poly := triangles.item i;
-
- // draw each vertex of triangle
- 0.to 2 do { k:INTEGER;
-
- (k = 0).if {
- (vertex_index,texel_index) := poly.index1;
- }.elseif {k = 1} then {
- (vertex_index,texel_index) := poly.index2;
- } else {
- (vertex_index,texel_index) := poly.index3;
- };
-
- // get current vertex from the two frames
- verts1 := frame1.vertex.item vertex_index;
- verts2 := frame2.vertex.item vertex_index;
-
- // coordonnees texture
- texel := texels.item texel_index;
-
- renderer.vb.add_texel2f (texel.x.to_real / skin_width, texel.y.to_real / skin_height);
-
- // normale
- get_normal (verts1.light_index) in n1;
- get_normal (verts2.light_index) in n2;
-
- (x,y,z) := lerp_vertex (n1, n2) lerp lerp scale 1.0;
-
- renderer.vb.add_normal3f (x, y, z);
-
- // decompression des vertex (byte -> float)
-
- x := verts1.index1 * frame1.scale.x + frame1.translate.x;
- y := verts1.index2 * frame1.scale.y + frame1.translate.y;
- z := verts1.index3 * frame1.scale.z + frame1.translate.z;
-
- v1.make (x,y,z);
-
- x := verts2.index1 * frame2.scale.x + frame2.translate.x;
- y := verts2.index2 * frame2.scale.y + frame2.translate.y;
- z := verts2.index3 * frame2.scale.z + frame2.translate.z;
-
- v2.make (x,y,z);
-
- (x,y,z) := lerp_vertex (v1, v2) lerp lerp scale scale;
-
- renderer.vb.add_vertex3f (x,y,z);
- };
- };
-
- renderer.vb.end;
- );
-
- - render_outlines <-
- (
- outlines := TRUE;
- render;
- outlines := FALSE;
- );
-
- - lerp_vertex (u,v:VERTEX) lerp t:REAL_32 scale s:REAL_32 :(REAL_32,REAL_32,REAL_32) <-
- // linear interpolation
- (
- + x,y,z:REAL_32;
-
- x := (u.x + t * (v.x - u.x)) * s;
- y := (u.y + t * (v.y - u.y)) * s;
- z := (u.z + t * (v.z - u.z)) * s;
-
- (x,y,z)
- );
-
-
\ No newline at end of file
diff --git a/gfx_engine/model_format/md2_normals.li b/gfx_engine/model_format/md2_normals.li
deleted file mode 100644
index 2e7e81e..0000000
--- a/gfx_engine/model_format/md2_normals.li
+++ /dev/null
@@ -1,220 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := MD2_NORMALS;
-
- - comment := "Quake2' md2 model format";
-
- - external := `
-
- typedef struct
- {
- float x,y,z;
- } vec3_t;
-
- static vec3_t anorms[162] = {
- {-0.525731, 0.000000, 0.850651},
- {-0.442863, 0.238856, 0.864188},
- {-0.295242, 0.000000, 0.955423},
- {-0.309017, 0.500000, 0.809017},
- {-0.162460, 0.262866, 0.951056},
- {0.000000, 0.000000, 1.000000},
- {0.000000, 0.850651, 0.525731},
- {-0.147621, 0.716567, 0.681718},
- {0.147621, 0.716567, 0.681718},
- {0.000000, 0.525731, 0.850651},
- {0.309017, 0.500000, 0.809017},
- {0.525731, 0.000000, 0.850651},
- {0.295242, 0.000000, 0.955423},
- {0.442863, 0.238856, 0.864188},
- {0.162460, 0.262866, 0.951056},
- {-0.681718, 0.147621, 0.716567},
- {-0.809017, 0.309017, 0.500000},
- {-0.587785, 0.425325, 0.688191},
- {-0.850651, 0.525731, 0.000000},
- {-0.864188, 0.442863, 0.238856},
- {-0.716567, 0.681718, 0.147621},
- {-0.688191, 0.587785, 0.425325},
- {-0.500000, 0.809017, 0.309017},
- {-0.238856, 0.864188, 0.442863},
- {-0.425325, 0.688191, 0.587785},
- {-0.716567, 0.681718, -0.147621},
- {-0.500000, 0.809017, -0.309017},
- {-0.525731, 0.850651, 0.000000},
- {0.000000, 0.850651, -0.525731},
- {-0.238856, 0.864188, -0.442863},
- {0.000000, 0.955423, -0.295242},
- {-0.262866, 0.951056, -0.162460},
- {0.000000, 1.000000, 0.000000},
- {0.000000, 0.955423, 0.295242},
- {-0.262866, 0.951056, 0.162460},
- {0.238856, 0.864188, 0.442863},
- {0.262866, 0.951056, 0.162460},
- {0.500000, 0.809017, 0.309017},
- {0.238856, 0.864188, -0.442863},
- {0.262866, 0.951056, -0.162460},
- {0.500000, 0.809017, -0.309017},
- {0.850651, 0.525731, 0.000000},
- {0.716567, 0.681718, 0.147621},
- {0.716567, 0.681718, -0.147621},
- {0.525731, 0.850651, 0.000000},
- {0.425325, 0.688191, 0.587785},
- {0.864188, 0.442863, 0.238856},
- {0.688191, 0.587785, 0.425325},
- {0.809017, 0.309017, 0.500000},
- {0.681718, 0.147621, 0.716567},
- {0.587785, 0.425325, 0.688191},
- {0.955423, 0.295242, 0.000000},
- {1.000000, 0.000000, 0.000000},
- {0.951056, 0.162460, 0.262866},
- {0.850651, -0.525731, 0.000000},
- {0.955423, -0.295242, 0.000000},
- {0.864188, -0.442863, 0.238856},
- {0.951056, -0.162460, 0.262866},
- {0.809017, -0.309017, 0.500000},
- {0.681718, -0.147621, 0.716567},
- {0.850651, 0.000000, 0.525731},
- {0.864188, 0.442863, -0.238856},
- {0.809017, 0.309017, -0.500000},
- {0.951056, 0.162460, -0.262866},
- {0.525731, 0.000000, -0.850651},
- {0.681718, 0.147621, -0.716567},
- {0.681718, -0.147621, -0.716567},
- {0.850651, 0.000000, -0.525731},
- {0.809017, -0.309017, -0.500000},
- {0.864188, -0.442863, -0.238856},
- {0.951056, -0.162460, -0.262866},
- {0.147621, 0.716567, -0.681718},
- {0.309017, 0.500000, -0.809017},
- {0.425325, 0.688191, -0.587785},
- {0.442863, 0.238856, -0.864188},
- {0.587785, 0.425325, -0.688191},
- {0.688191, 0.587785, -0.425325},
- {-0.147621, 0.716567, -0.681718},
- {-0.309017, 0.500000, -0.809017},
- {0.000000, 0.525731, -0.850651},
- {-0.525731, 0.000000, -0.850651},
- {-0.442863, 0.238856, -0.864188},
- {-0.295242, 0.000000, -0.955423},
- {-0.162460, 0.262866, -0.951056},
- {0.000000, 0.000000, -1.000000},
- {0.295242, 0.000000, -0.955423},
- {0.162460, 0.262866, -0.951056},
- {-0.442863, -0.238856, -0.864188},
- {-0.309017, -0.500000, -0.809017},
- {-0.162460, -0.262866, -0.951056},
- {0.000000, -0.850651, -0.525731},
- {-0.147621, -0.716567, -0.681718},
- {0.147621, -0.716567, -0.681718},
- {0.000000, -0.525731, -0.850651},
- {0.309017, -0.500000, -0.809017},
- {0.442863, -0.238856, -0.864188},
- {0.162460, -0.262866, -0.951056},
- {0.238856, -0.864188, -0.442863},
- {0.500000, -0.809017, -0.309017},
- {0.425325, -0.688191, -0.587785},
- {0.716567, -0.681718, -0.147621},
- {0.688191, -0.587785, -0.425325},
- {0.587785, -0.425325, -0.688191},
- {0.000000, -0.955423, -0.295242},
- {0.000000, -1.000000, 0.000000},
- {0.262866, -0.951056, -0.162460},
- {0.000000, -0.850651, 0.525731},
- {0.000000, -0.955423, 0.295242},
- {0.238856, -0.864188, 0.442863},
- {0.262866, -0.951056, 0.162460},
- {0.500000, -0.809017, 0.309017},
- {0.716567, -0.681718, 0.147621},
- {0.525731, -0.850651, 0.000000},
- {-0.238856, -0.864188, -0.442863},
- {-0.500000, -0.809017, -0.309017},
- {-0.262866, -0.951056, -0.162460},
- {-0.850651, -0.525731, 0.000000},
- {-0.716567, -0.681718, -0.147621},
- {-0.716567, -0.681718, 0.147621},
- {-0.525731, -0.850651, 0.000000},
- {-0.500000, -0.809017, 0.309017},
- {-0.238856, -0.864188, 0.442863},
- {-0.262866, -0.951056, 0.162460},
- {-0.864188, -0.442863, 0.238856},
- {-0.809017, -0.309017, 0.500000},
- {-0.688191, -0.587785, 0.425325},
- {-0.681718, -0.147621, 0.716567},
- {-0.442863, -0.238856, 0.864188},
- {-0.587785, -0.425325, 0.688191},
- {-0.309017, -0.500000, 0.809017},
- {-0.147621, -0.716567, 0.681718},
- {-0.425325, -0.688191, 0.587785},
- {-0.162460, -0.262866, 0.951056},
- {0.442863, -0.238856, 0.864188},
- {0.162460, -0.262866, 0.951056},
- {0.309017, -0.500000, 0.809017},
- {0.147621, -0.716567, 0.681718},
- {0.000000, -0.525731, 0.850651},
- {0.425325, -0.688191, 0.587785},
- {0.587785, -0.425325, 0.688191},
- {0.688191, -0.587785, 0.425325},
- {-0.955423, 0.295242, 0.000000},
- {-0.951056, 0.162460, 0.262866},
- {-1.000000, 0.000000, 0.000000},
- {-0.850651, 0.000000, 0.525731},
- {-0.955423, -0.295242, 0.000000},
- {-0.951056, -0.162460, 0.262866},
- {-0.864188, 0.442863, -0.238856},
- {-0.951056, 0.162460, -0.262866},
- {-0.809017, 0.309017, -0.500000},
- {-0.864188, -0.442863, -0.238856},
- {-0.951056, -0.162460, -0.262866},
- {-0.809017, -0.309017, -0.500000},
- {-0.681718, 0.147621, -0.716567},
- {-0.681718, -0.147621, -0.716567},
- {-0.850651, 0.000000, -0.525731},
- {-0.688191, 0.587785, -0.425325},
- {-0.587785, 0.425325, -0.688191},
- {-0.425325, 0.688191, -0.587785},
- {-0.425325, -0.688191, -0.587785},
- {-0.587785, -0.425325, -0.688191},
- {-0.688191, -0.587785, -0.425325} };
-
-
- `;
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-
-Section Public
-
- - get_normal i:INTEGER :VERTEX <-
- (
- + v:VERTEX;
-
- v := VERTEX.create (`anorms[@i].x`:REAL_32,`anorms[@i].y`:REAL_32,`anorms[@i].z`:REAL_32);
- v
- );
-
- - get_normal i:INTEGER in v:VERTEX <-
- (
- v.make (`anorms[@i].x`:REAL_32,`anorms[@i].y`:REAL_32,`anorms[@i].z`:REAL_32);
- );
\ No newline at end of file
diff --git a/gfx_engine/model_format/md2_triangle.li b/gfx_engine/model_format/md2_triangle.li
deleted file mode 100644
index 9e9d824..0000000
--- a/gfx_engine/model_format/md2_triangle.li
+++ /dev/null
@@ -1,65 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := MD2_TRIANGLE;
-
- - comment := "Quake2' md2 model format";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public //Mapping
-
- + vertex_index1:INTEGER_16;
- + vertex_index2:INTEGER_16;
- + vertex_index3:INTEGER_16;
-
- + texel_index1:INTEGER_16;
- + texel_index2:INTEGER_16;
- + texel_index3:INTEGER_16;
-
-Section Public
-
- - index1:(INTEGER_16,INTEGER_16) <- (vertex_index1,texel_index1);
- - index2:(INTEGER_16,INTEGER_16) <- (vertex_index2,texel_index2);
- - index3:(INTEGER_16,INTEGER_16) <- (vertex_index3,texel_index3);
-
- - create (v1,v2,v3,t1,t2,t3:INTEGER_16) :SELF<-
- ( + result:SELF;
- result := SELF.clone;
- result.make (v1,v2,v3,t1,t2,t3);
- result
- );
-
- - make (v1,v2,v3,t1,t2,t3:INTEGER_16) <-
- (
- vertex_index1 := v1;
- vertex_index2 := v2;
- vertex_index3 := v3;
-
- texel_index1 := t1;
- texel_index2 := t2;
- texel_index3 := t3;
- );
-
diff --git a/gfx_engine/model_format/md2_vertex.li b/gfx_engine/model_format/md2_vertex.li
deleted file mode 100644
index 6bda122..0000000
--- a/gfx_engine/model_format/md2_vertex.li
+++ /dev/null
@@ -1,69 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := MD2_VERTEX;
-
- - comment := "Quake2' md2 model format";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public //Mapping
-
- + vertex_index1:UINTEGER_8;
- + vertex_index2:UINTEGER_8;
- + vertex_index3:UINTEGER_8;
-
- + lightnormal_index:UINTEGER_8;
-
-Section Public
-
- - index1:REAL_32 <- vertex_index1.to_real;
- - index2:REAL_32 <- vertex_index2.to_real;
- - index3:REAL_32 <- vertex_index3.to_real;
-
- - light_index:UINTEGER_8 <- lightnormal_index;
-
- - create (v1,v2,v3:UINTEGER_8, l:UINTEGER_8) :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make (v1,v2,v3,l);
- result
- );
-
- - make (v1,v2,v3:UINTEGER_8, l:UINTEGER_8) <-
- (
- vertex_index1 := v1;
- vertex_index2 := v2;
- vertex_index3 := v3;
- lightnormal_index := l;
- );
-
- - print <-
- (
- "\nmd2 vertex: ".print; vertex_index1.print; " , ".print;
- vertex_index2.print; " , ".print;
- vertex_index2.print; " => light ".print;
- lightnormal_index.print;
- );
\ No newline at end of file
diff --git a/gfx_engine/mouse_listener.li b/gfx_engine/mouse_listener.li
deleted file mode 100644
index 68bfc84..0000000
--- a/gfx_engine/mouse_listener.li
+++ /dev/null
@@ -1,41 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := MOUSE_LISTENER;
-
- - comment := "catch key events";
-
-Section Inherit
-
- - parent_engine_any:ENGINE_ANY := ENGINE_ANY;
-
-Section Public
-
- - move (x,y:INTEGER) <-
- (
- );
-
- - click button:INTEGER <-
- (
-
- );
\ No newline at end of file
diff --git a/gfx_engine/noise.li b/gfx_engine/noise.li
deleted file mode 100644
index d9c0ab4..0000000
--- a/gfx_engine/noise.li
+++ /dev/null
@@ -1,167 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Math-Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := NOISE;
-
- - comment := "3D Perlin noise";
-
- - external := `
-
- static const char gradient[12][3] =
- {
- {1, 1, 0}, {1, -1, 0}, {-1, 1, 0}, {-1, -1, 0},
- {1, 0, 1}, {1, 0, -1}, {-1, 0, 1}, {-1, 0, -1},
- {0, 1, 1}, {0, -1, 1}, {0, 1, -1}, {0, -1, -1},
- };`;
-
-Section Inherit
-
- - parent_engine_any:ENGINE_ANY := ENGINE_ANY;
-
-Section Public
-
- + permutation:FAST_ARRAY[INTEGER];
-
-
-
- //
- // Creation.
- //
-
- - create:SELF <-
- ( + result:SELF;
- result := clone;
- result.make;
- result
- );
-
- - make <-
- (
- permutation := FAST_ARRAY[INTEGER].create 256;
- 0.to 255 do { i:INTEGER;
- permutation.put (random & 0ffh) to i;
- };
- );
-
- - get (x,y,z:REAL_32) :REAL_32 <-
- // return Perlin noise at (x,y,z) point
- (
- + x1,y1,z1, x2,y2,z2:INTEGER;
- + gx,gy,gz:INTEGER;
- + dx1,dy1,dz1, dx2,dy2,dz2:REAL_32;
- + dot1,dot2,dot3,dot4,dot5,dot6,dot7,dot8:REAL_32;
- + idx,idy,idz:REAL_32;
- + v0,v1, v00,v01,v10,v11:REAL_32;
-
- // integer unit cube containing the point
- x1 := x.to_integer;
- y1 := y.to_integer;
- z1 := z.to_integer;
-
- x2 := x1 + 1;
- y2 := y1 + 1;
- z2 := z1 + 1;
-
- // vectors from the corners of the cube to the point
- dx1 := x - x1;
- dy1 := y - y1;
- dz1 := z - z1;
-
- dx2 := x - x2;
- dy2 := y - y2;
- dz2 := z - z2;
-
-
- // the corresponding gradients
- (gx,gy,gz) := get_gradient (get_index (x1,y1,z1));
- dot1 := dot (dx1,gx, dy1,gy, dz1,gz);
- (gx,gy,gz) := get_gradient (get_index (x1,y1,z2));
- dot2 := dot (dx1,gx, dy1,gy, dz2,gz);
- (gx,gy,gz) := get_gradient (get_index (x1,y2,z1));
- dot3 := dot (dx1,gx, dy2,gy, dz1,gz);
- (gx,gy,gz) := get_gradient (get_index (x1,y2,z2));
- dot4 := dot (dx1,gx, dy2,gy, dz2,gz);
- (gx,gy,gz) := get_gradient (get_index (x2,y1,z1));
- dot5 := dot (dx2,gx, dy1,gy, dz1,gz);
- (gx,gy,gz) := get_gradient (get_index (x2,y1,z2));
- dot6 := dot (dx2,gx, dy1,gy, dz2,gz);
- (gx,gy,gz) := get_gradient (get_index (x2,y2,z1));
- dot7 := dot (dx2,gx, dy2,gy, dz1,gz);
- (gx,gy,gz) := get_gradient (get_index (x2,y2,z2));
- dot8 := dot (dx2,gx, dy2,gy, dz2,gz);
-
- // interpolations
- idx := spline dx1;
- idy := spline dy1;
- idz := spline dz1;
-
- v11 := linear (dot7, dot8, idz);
- v10 := linear (dot5, dot6, idz);
- v01 := linear (dot3, dot4, idz);
- v00 := linear (dot1, dot2, idz);
-
- v0 := linear (v10, v11, idy);
- v1 := linear (v00, v01, idy);
-
- linear (v0, v1, idx)
- );
-
-Section Private
-
- - get_gradient i:INTEGER :(INTEGER,INTEGER,INTEGER) <-
- (
- (`gradient[@i][0]`:INTEGER,`gradient[@i][1]`:INTEGER,`gradient[@i][2]`:INTEGER)
- );
-
- - get_index (x,y,z:INTEGER) :INTEGER <-
- (
- permutation.item ((x + permutation.item ((y + permutation.item (z & 0ffh)) & 0ffh)) & 0ffh) & 0ch
- );
-
- - prod (a,b:REAL_32) :REAL_32 <-
- ( + result:REAL_32;
- (b > 0).if {
- result := a;
- }.elseif {b < 0} then {
- result := -a;
- };
- result
- );
-
- - dot (x1,x2, y1,y2, z1,z2:REAL_32) :REAL_32 <-
- (
- prod (x1, x2) + prod (y1, y2) + prod (z1, z2)
- );
-
- - spline val:REAL_32 :REAL_32 <-
- // 3x^2 + 2x^3 curve
- ( + val2:REAL_32;
-
- val2 := val * val;
- val2 * (3.0 + val * 2.0)
- );
-
- - linear (start, end, t:REAL_32) :REAL_32 <-
- (
- start + (end - start) * t
- );
\ No newline at end of file
diff --git a/gfx_engine/particles/bounce_plane.li b/gfx_engine/particles/bounce_plane.li
deleted file mode 100644
index 8ab0177..0000000
--- a/gfx_engine/particles/bounce_plane.li
+++ /dev/null
@@ -1,80 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := BOUNCE_PLANE;
-
- - comment := "part of particle engine";
-
-Section Inherit
-
- - parent_constraint:CONSTRAINT := CONSTRAINT;
-
-Section Public
-
- + normal:VECTOR3[REAL_32];
- + offset:REAL_32;
-
- //
- // Creation.
- //
-
- - create (n:VECTOR3[REAL_32], off:REAL_32) :SELF <-
- ( + result:SELF;
- result := clone;
- result.make (n,off);
- result
- );
-
- - make (n:VECTOR3[REAL_32], off:REAL_32) <-
- (
- normal := n;
- offset := off;
- );
-
-
-
- - apply_to p:PARTICLE time t:REAL_32 <-
- (
- + dist:REAL_32;
-
- dist := distance_to (p.position);
-
- (dist < p.size).if {
- p.set_direction (p.dir - (normal * (2.0*p.dir.dot normal)));
- p.set_position (p.position + (normal * (p.size - dist)));
- };
- );
-
-Section Private
-
- - distance_to p:VECTOR3[REAL_32] :REAL_32 <-
- (
- (p.dot normal) + offset
- );
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/gfx_engine/particles/constraint.li b/gfx_engine/particles/constraint.li
deleted file mode 100644
index 7ab2eca..0000000
--- a/gfx_engine/particles/constraint.li
+++ /dev/null
@@ -1,40 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := CONSTRAINT;
-
- - comment := "part of particle engine";
-
-Section Inherit
-
- - parent_engine_any:ENGINE_ANY := ENGINE_ANY;
-
-Section Public
-
- - apply_to p:PARTICLE time t:REAL_32 <- deferred;
-
-
-
-
-
-
\ No newline at end of file
diff --git a/gfx_engine/particles/kill_plane.li b/gfx_engine/particles/kill_plane.li
deleted file mode 100644
index d80a1e4..0000000
--- a/gfx_engine/particles/kill_plane.li
+++ /dev/null
@@ -1,79 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := KILL_PLANE;
-
- - comment := "part of particle engine";
-
-Section Inherit
-
- - parent_constraint:CONSTRAINT := CONSTRAINT;
-
-Section Public
-
- + normal:VECTOR3[REAL_32];
- + offset:REAL_32;
-
- //
- // Creation.
- //
-
- - create (n:VECTOR3[REAL_32], off:REAL_32) :SELF <-
- ( + result:SELF;
- result := clone;
- result.make (n,off);
- result
- );
-
- - make (n:VECTOR3[REAL_32], off:REAL_32) <-
- (
- normal := n;
- offset := off;
- );
-
-
-
- - apply_to p:PARTICLE time t:REAL_32 <-
- (
- + dist:REAL_32;
-
- dist := distance_to (p.position);
-
- (dist < p.size).if {
- p.kill;
- };
- );
-
-Section Private
-
- - distance_to p:VECTOR3[REAL_32] :REAL_32 <-
- (
- (p.dot normal) + offset
- );
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/gfx_engine/particles/particle.li b/gfx_engine/particles/particle.li
deleted file mode 100644
index fb89296..0000000
--- a/gfx_engine/particles/particle.li
+++ /dev/null
@@ -1,100 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := PARTICLE;
-
- - comment := "part of particle engine";
-
-Section Inherit
-
- - parent_engine_any:ENGINE_ANY := ENGINE_ANY;
-
-Section Public
-
- //
- // Particle properties
- //
-
- + position:VECTOR3[REAL_32];
- + dir:VECTOR3[REAL_32];
-
- + size:REAL_32;
- + life:REAL_32;
- + initial_life:REAL_32;
-
- - is_dead:BOOLEAN <- life <= 0;
-
-
- - create (p,d:VECTOR3[REAL_32]) size sz:REAL_32 life t:REAL_32 :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make (p,d) size sz life t;
- result
- );
-
- - make (p,d:VECTOR3[REAL_32]) size sz:REAL_32 life t:REAL_32 <-
- (
- position := p;
- dir := d;
- size := sz;
-
- initial_life := t;
- life := initial_life;
- );
-
- - set_position p:VECTOR3[REAL_32] <-
- (
- position := p;
- );
-
- - set_direction d:VECTOR3[REAL_32] <-
- (
- dir := d;
- );
-
- - kill <-
- (
- life := 0;
- );
-
- //
- // Update
- //
-
- - update_life time:REAL_32 <-
- (
- life := life - time;
- );
-
- - update time:REAL_32 <-
- (
- position.set_x (position.x + dir.x * time * 0.1);
- position.set_y (position.y + dir.y * time * 0.1);
- position.set_z (position.z + dir.z * time * 0.1);
- );
-
-
-
-
-
-
\ No newline at end of file
diff --git a/gfx_engine/particles/particle_system.li b/gfx_engine/particles/particle_system.li
deleted file mode 100644
index 4984c3a..0000000
--- a/gfx_engine/particles/particle_system.li
+++ /dev/null
@@ -1,287 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := PARTICLE_SYSTEM;
-
- - comment := "part of particle engine";
-
-Section Inherit
-
- - parent_engine_any:ENGINE_ANY := ENGINE_ANY;
-
-Section Public
-
- //
- // Particle System properties
- //
-
- + position:VECTOR3[REAL_32];
- + direction:VECTOR3[REAL_32];
-
- + particles:LINKED_LIST[PARTICLE];
- + constraints:LINKED_LIST[CONSTRAINT];
-
- + palette:FAST_ARRAY[RGB];
-
- + spawn_rate:REAL_32;
- + size:REAL_32;
- + life:REAL_32;
- + speed:REAL_32;
-
- + size_spread:REAL_32;
- + life_spread:REAL_32;
- + speed_spread:REAL_32;
-
-
- - create p:VECTOR3[REAL_32] :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make p;
- result
- );
-
- - make p:VECTOR3[REAL_32] <-
- (
- position := p;
- direction := VECTOR3[REAL_32].create (0.5,0.1,0.5);
-
- spawn_rate := 2;
-
- speed := 1;
- speed_spread := 0.5;
-
- size := 1;
- size_spread := 0.5;
-
- life := 800;
- life_spread := 80;
-
- particles := LINKED_LIST[PARTICLE].create;
- constraints := LINKED_LIST[CONSTRAINT].create;
-
- palette := FAST_ARRAY[RGB].create_with_capacity 12;
- 0.to 12 do { i:INTEGER;
- palette.add_last (RGB.create (0,0,0));
- };
- set_color_fire;
- );
-
- - add_constraint c:CONSTRAINT <-
- (
- constraints.add_last c;
- );
-
- - set_spawn_rate sr:REAL_32 <-
- (
- spawn_rate := sr;
- );
-
- - set_life (life0, spread:REAL_32) <-
- (
- life := life0;
- life_spread := spread;
- );
-
- - set_speed (speed0, spread:REAL_32) <-
- (
- speed := speed0;
- speed_spread := spread;
- );
-
- - set_size (size0, spread:REAL_32) <-
- (
- size := size0;
- size_spread := spread;
- );
-
- //
- // Update
- //
-
- - update time:REAL_32 <-
- (
- + nb_new_particles:INTEGER;
- + p:PARTICLE;
- + sz,lifetime:REAL_32;
- + dir:VECTOR3[REAL_32];
- + k:INTEGER;
-
- // spawn new particles
- nb_new_particles := (time * spawn_rate).to_integer;
-
- 0.to nb_new_particles do { i:INTEGER;
-
- dir := random_vector direction spread (1,1,1);
- dir.normalize;
- dir := dir * speed;
-
- sz := random_around size spread size_spread;
- lifetime := random_around life spread life_spread;
-
- p := PARTICLE.create (position.copy, dir) size sz life lifetime;
- particles.add_last p;
- };
-
- k := particles.lower;
- {k <= particles.upper}.while_do {
- p := particles.item k;
-
- p.update_life time;
- p.is_dead.if {
- // kill particle
- particles.remove k;
- } else {
- // apply constraints to the system
- constraints.lower.to (constraints.upper) do { i:INTEGER;
- constraints.item i.apply_to p time (time*0.01);
-
- p.is_dead.if {
- // kill particle
- particles.remove k;
- };
- };
-
- // update particle
- p.update (time);
- k := k + 1;
- };
- };
- );
-
-
- - render (dx,dy:VECTOR3[REAL_32]) <-
- (
- + v:VECTOR3[REAL_32];
- + frac:REAL_32;
- + col_int:INTEGER;
-
- renderer.vb.new_quads {
- particles.lower.to (particles.upper) do { i:INTEGER;
-
- frac := (11.0*particles.item i.life)/particles.item i.initial_life;
- col_int := frac.to_integer;
- frac := frac - col_int;
-
- renderer.color_buffer.set_color3f (get_r col_int frac frac,get_g col_int frac frac,get_b col_int frac frac);
-
-
- // render particle
- renderer.vb.add_texel2f (0,0);
- v := particles.item i.position + ((-dx + dy) * particles.item i.size);
- renderer.vb.add_vertex3f (v.x, v.y, v.z);
-
- renderer.vb.add_texel2f (1,0);
- v := particles.item i.position + ((dx + dy) * particles.item i.size);
- renderer.vb.add_vertex3f (v.x, v.y, v.z);
-
- renderer.vb.add_texel2f (1,1);
- v := particles.item i.position + ((dx - dy) * particles.item i.size);
- renderer.vb.add_vertex3f (v.x, v.y, v.z);
-
- renderer.vb.add_texel2f (0,1);
- v := particles.item i.position + ((-dx - dy) * particles.item i.size);
- renderer.vb.add_vertex3f (v.x, v.y, v.z);
- };
- };
- );
-
- - get_r idx:INTEGER frac frac:REAL_32 :REAL_32 <-
- (
- palette.item idx.r * (1.0 - frac) + palette.item (idx+1).r * frac
- );
- - get_g idx:INTEGER frac frac:REAL_32 :REAL_32 <-
- (
- palette.item idx.g * (1.0 - frac) + palette.item (idx+1).g * frac
- );
- - get_b idx:INTEGER frac frac:REAL_32 :REAL_32 <-
- (
- palette.item idx.b * (1.0 - frac) + palette.item (idx+1).b * frac
- );
-
- - set_color_fire <-
- (
- 0.to 4 do { i:INTEGER;
- palette.item i.make (i.to_real/4.0, 0, 0);
- palette.item (i+4).make (1, i.to_real/4.0, 0);
- palette.item (i+8).make ((3-i).to_real/3.0, (3-i).to_real/3.0, 1);
- };
- );
-
- - set_color_ice <-
- (
- 0.to 6 do { i:INTEGER;
- palette.item i.make (0, 0, i.to_real/6.0);
- palette.item (i+6).make (i.to_real/5.0, 1, 1);
- };
- );
-
- - set_color_smoke <-
- (
- + col:REAL_32;
-
- 0.to 12 do { i:INTEGER;
- col := i.to_real / 24.0;
- palette.item i.make (col, col, col);
- };
- );
-
- - set_color_rainbow <-
- (
- palette.item 0.make (0, 0, 0);
- palette.item 1.make (0, 0, 0.25);
- palette.item 2.make (0, 0, 0.5);
- palette.item 3.make (0, 0, 1);
- palette.item 4.make (0, 0.5, 1);
- palette.item 5.make (0, 1, 1);
- palette.item 6.make (0, 1, 0.5);
- palette.item 7.make (0, 1, 0);
- palette.item 8.make (0.5, 1, 0);
- palette.item 9.make (1, 1, 0);
- palette.item 10.make (1, 0.5, 0);
- palette.item 11.make (1, 0, 0);
- );
-
-Section Private
-
- - random_around val:REAL_32 spread spread_val:REAL_32 :REAL_32 <-
- (
- + r:REAL_32;
-
- r := 2.0 * random_ratio - 1.0;
- val + r * spread_val * r.abs
- );
-
- - random_vector v:VECTOR3[REAL_32] spread (sx,sy,sz:REAL_32) :VECTOR3[REAL_32] <-
- (
- + x,y,z:REAL_32;
-
- x := v.x * random_around 0 spread sx;
- y := v.y * random_around 0 spread sy;
- z := v.z * random_around 0 spread sz;
-
- VECTOR3[REAL_32].create (x, y, z)
- );
-
-
-
-
\ No newline at end of file
diff --git a/gfx_engine/particles/point_force.li b/gfx_engine/particles/point_force.li
deleted file mode 100644
index b2ba1a2..0000000
--- a/gfx_engine/particles/point_force.li
+++ /dev/null
@@ -1,88 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := POINT_FORCE;
-
- - comment := "part of particle engine";
-
-Section Inherit
-
- - parent_constraint:CONSTRAINT := CONSTRAINT;
-
-Section Public
-
- //
- // Particle properties
- //
-
- + position:VECTOR3[REAL_32];
-
- + strength:REAL_32;
- + linear_attenuation:REAL_32;
- + quadratic_attenuation:REAL_32;
-
-
- //
- // Creation.
- //
-
- - create (p:VECTOR3[REAL_32],s,la,qa:REAL_32) :SELF <-
- ( + result:SELF;
- result := clone;
- result.make (p,s,la,qa);
- result
- );
-
- - make (p:VECTOR3[REAL_32],s,la,qa:REAL_32) <-
- (
- position := p;
- strength := s;
- linear_attenuation := la;
- quadratic_attenuation := qa;
- );
-
-
-
- - apply_to p:PARTICLE time t:REAL_32 <-
- (
- + dir:VECTOR3[REAL_32];
- + dist:REAL_32;
-
- dir := position - p.position;
- dist := dir.magnitude;
-
- dir := dir * (strength / (1.0 + dist.sqrt*linear_attenuation + dist*quadratic_attenuation));
-
- p.set_direction (p.dir + (dir*t));
- );
-
- - set_strength str:REAL_32 <-
- (
- strength := str;
- );
-
-
-
-
-
-
\ No newline at end of file
diff --git a/gfx_engine/primitives/cone.li b/gfx_engine/primitives/cone.li
deleted file mode 100644
index 0415945..0000000
--- a/gfx_engine/primitives/cone.li
+++ /dev/null
@@ -1,67 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := CONE;
-
- - comment := "3D cone";
-
-Section Inherit
-
- - parent_engine_any:ENGINE_ANY := ENGINE_ANY;
-
-Section Public
-
- + radius_base:REAL_32;
- + height:REAL_32;
- + slices:REAL_32;
-
- + position:VECTOR3[REAL_32];
-
-
- - create (p:VECTOR3[REAL_32],r,h,sl:REAL_32) :SELF <-
- (
- + result:SELF;
- result := SELF.clone;
- result.make (p,r,h,sl);
- result
- );
-
- - make (p:VECTOR3[REAL_32],r,h,sl:REAL_32) <-
- (
- radius_base := r;
- height := h;
- slices := sl;
- position := p;
- );
-
- - render <-
- (
- renderer.transform.push_matrix;
-
- renderer.transform.translatef (position.x, position.y, position.z);
-
- renderer.quadrics.new_quadric {
- renderer.quadrics.draw_cylinder (radius_base,0,height,slices,1);
- };
- renderer.transform.pop_matrix;
- );
\ No newline at end of file
diff --git a/gfx_engine/primitives/cylinder.li b/gfx_engine/primitives/cylinder.li
deleted file mode 100644
index 1d0f343..0000000
--- a/gfx_engine/primitives/cylinder.li
+++ /dev/null
@@ -1,73 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := CYLINDER;
-
- - comment := "glu quadric cylinder";
-
-Section Inherit
-
- - parent_engine_any:ENGINE_ANY := ENGINE_ANY;
-
-Section Public
-
- + radius_top:REAL_32;
- + radius_base:REAL_32;
-
- + height:REAL_32;
-
- + slices:REAL_32;
- + stacks:REAL_32;
-
- + position:VECTOR3[REAL_32];
-
-
- - create (p:VECTOR3[REAL_32],r1,r2,h,sl,st:REAL_32) :SELF <-
- (
- + result:SELF;
- result := SELF.clone;
- result.make (p,r1,r2,h,sl,st);
- result
- );
-
- - make (p:VECTOR3[REAL_32],r1,r2,h,sl,st:REAL_32) <-
- (
- radius_top := r1;
- radius_base := r2;
- height := h;
- slices := sl;
- stacks := st;
- position := p;
- );
-
- - render <-
- (
- renderer.transform.push_matrix;
-
- renderer.transform.translatef (position.x, position.y, position.z);
-
- renderer.quadrics.new_quadric {
- renderer.quadrics.draw_cylinder (radius_base,radius_top,height,slices,stacks);
- };
- renderer.transform.pop_matrix;
- );
\ No newline at end of file
diff --git a/gfx_engine/primitives/sphere.li b/gfx_engine/primitives/sphere.li
deleted file mode 100644
index 8adc4dd..0000000
--- a/gfx_engine/primitives/sphere.li
+++ /dev/null
@@ -1,67 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := SPHERE;
-
- - comment := "glu quadric sphere";
-
-Section Inherit
-
- - parent_engine_any:ENGINE_ANY := ENGINE_ANY;
-
-Section Public
-
- + radius:REAL_32;
- + slices:REAL_32;
- + stacks:REAL_32;
-
- + position:VECTOR3[REAL_32];
-
-
- - create (p:VECTOR3[REAL_32],r,sl,st:REAL_32) :SELF <-
- (
- + result:SELF;
- result := SELF.clone;
- result.make (p,r,sl,st);
- result
- );
-
- - make (p:VECTOR3[REAL_32],r,sl,st:REAL_32) <-
- (
- radius := r;
- slices := sl;
- stacks := st;
- position := p;
- );
-
- - render <-
- (
- renderer.transform.push_matrix;
-
- renderer.transform.translatef (position.x, position.y, position.z);
-
- renderer.quadrics.new_quadric {
- renderer.quadrics.draw_sphere (radius,slices,stacks);
- };
- renderer.transform.pop_matrix;
- );
\ No newline at end of file
diff --git a/gfx_engine/scene.li b/gfx_engine/scene.li
deleted file mode 100644
index a2c67f3..0000000
--- a/gfx_engine/scene.li
+++ /dev/null
@@ -1,57 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := SCENE;
-
- - comment := "basic rendering scene";
-
-Section Inherit
-
- - parent_engine_any:ENGINE_ANY := ENGINE_ANY;
-
-Section Public
-
- - engine:ENGINE;
-
- - set_engine e:ENGINE <-
- (
- engine := e;
- );
-
- - initialize <-
- (
- // rien
- );
-
- - render t:UINTEGER_32 <-
- (
- renderer.begin_frame;
- //------------
-
- //------------
- renderer.end_frame;
- );
-
- - release <-
- (
- );
\ No newline at end of file
diff --git a/gfx_engine/skybox.li b/gfx_engine/skybox.li
deleted file mode 100644
index d02cc0c..0000000
--- a/gfx_engine/skybox.li
+++ /dev/null
@@ -1,180 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := SKYBOX;
-
- - comment := "render cube with sky effect";
-
-Section Inherit
-
- - parent_engine_any:ENGINE_ANY := ENGINE_ANY;
-
-Section Public
-
- // position in 3d world
- + position:VECTOR3[REAL_32];
-
- // 3d cube
- + vertex:FAST_ARRAY[VERTEX];
-
- // skybox textures
- + textures:FAST_ARRAY[TEXTURE];
-
-
- - create (pos,dim:VECTOR3[REAL_32],tex:FAST_ARRAY[TEXTURE]) :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make (pos,dim,tex);
- result
- );
-
- - make (pos,dim:VECTOR3[REAL_32],tex:FAST_ARRAY[TEXTURE]) <-
- (
- + v:VERTEX;
- ? {tex.count = 5};
-
-
- position := pos;
- textures := tex;
-
- vertex := FAST_ARRAY[VERTEX].create_with_capacity 8;
-
- // top
- v := VERTEX.create (pos.x - dim.x, pos.y + dim.y, pos.z + dim.z);
- vertex.add_last v;
- v := VERTEX.create (pos.x + dim.x, pos.y + dim.y, pos.z + dim.z);
- vertex.add_last v;
- v := VERTEX.create (pos.x + dim.x, pos.y + dim.y, pos.z - dim.z);
- vertex.add_last v;
- v := VERTEX.create (pos.x - dim.x, pos.y + dim.y, pos.z - dim.z);
- vertex.add_last v;
-
- // bottom
- v := VERTEX.create (pos.x - dim.x, pos.y - dim.y, pos.z + dim.z);
- vertex.add_last v;
- v := VERTEX.create (pos.x + dim.x, pos.y - dim.y, pos.z + dim.z);
- vertex.add_last v;
- v := VERTEX.create (pos.x + dim.x, pos.y - dim.y, pos.z - dim.z);
- vertex.add_last v;
- v := VERTEX.create (pos.x - dim.x, pos.y - dim.y, pos.z - dim.z);
- vertex.add_last v;
- );
-
- - render <-
- (
- //
- textures.item 0.bind;
- renderer.vb.begin_quads;
-
- renderer.vb.add_texel2f (1, 0);
- renderer.vb.add_vertex (vertex.item 7);
-
- renderer.vb.add_texel2f (0, 0);
- renderer.vb.add_vertex (vertex.item 6);
-
- renderer.vb.add_texel2f (0, 1);
- renderer.vb.add_vertex (vertex.item 2);
-
- renderer.vb.add_texel2f (1, 1);
- renderer.vb.add_vertex (vertex.item 3);
-
- renderer.vb.end;
-
- //
- textures.item 1.bind;
- renderer.vb.begin_quads;
-
- renderer.vb.add_texel2f (0, 1);
- renderer.vb.add_vertex (vertex.item 1);
-
- renderer.vb.add_texel2f (1, 1);
- renderer.vb.add_vertex (vertex.item 2);
-
- renderer.vb.add_texel2f (1, 0);
- renderer.vb.add_vertex (vertex.item 6);
-
- renderer.vb.add_texel2f (0, 0);
- renderer.vb.add_vertex (vertex.item 5);
-
- renderer.vb.end;
-
- //
- textures.item 2.bind;
- renderer.vb.begin_quads;
-
- renderer.vb.add_texel2f (0, 1);
- renderer.vb.add_vertex (vertex.item 0);
-
- renderer.vb.add_texel2f (1, 1);
- renderer.vb.add_vertex (vertex.item 1);
-
- renderer.vb.add_texel2f (1, 0);
- renderer.vb.add_vertex (vertex.item 5);
-
- renderer.vb.add_texel2f (0, 0);
- renderer.vb.add_vertex (vertex.item 4);
-
- renderer.vb.end;
-
- //
- textures.item 3.bind;
- renderer.vb.begin_quads;
-
- renderer.vb.add_texel2f (1, 0);
- renderer.vb.add_vertex (vertex.item 4);
-
- renderer.vb.add_texel2f (0, 0);
- renderer.vb.add_vertex (vertex.item 7);
-
- renderer.vb.add_texel2f (0, 1);
- renderer.vb.add_vertex (vertex.item 3);
-
- renderer.vb.add_texel2f (1, 1);
- renderer.vb.add_vertex (vertex.item 0);
-
- renderer.vb.end;
-
- //
- textures.item 4.bind;
- renderer.vb.begin_quads;
-
- renderer.vb.add_texel2f (0, 1);
- renderer.vb.add_vertex (vertex.item 3);
-
- renderer.vb.add_texel2f (1, 1);
- renderer.vb.add_vertex (vertex.item 2);
-
- renderer.vb.add_texel2f (1, 0);
- renderer.vb.add_vertex (vertex.item 1);
-
- renderer.vb.add_texel2f (0, 0);
- renderer.vb.add_vertex (vertex.item 0);
-
- renderer.vb.end;
- );
-
- - set_position p:VECTOR3[REAL_32] <-
- (
- position := p;
- );
-
\ No newline at end of file
diff --git a/gfx_engine/terrain.li b/gfx_engine/terrain.li
deleted file mode 100644
index 1187f0f..0000000
--- a/gfx_engine/terrain.li
+++ /dev/null
@@ -1,256 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Application //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := TERRAIN;
-
- - comment := "Height map";
-
-Section Inherit
-
- - parent_engine_any:ENGINE_ANY := ENGINE_ANY;
-
-Section Public
-
- + width:INTEGER;
- + height:INTEGER;
-
- + w_step:REAL_32 := 2;
- + h_step:REAL_32 := 2;
-
- + height_factor:REAL_32 := 2.5;
-
- + heights:FAST_ARRAY[REAL_32];
- + normals:FAST_ARRAY[VECTOR3[REAL_32]];
-
- + texture:TEXTURE;
-
- - is_textured:BOOLEAN <- texture != NULL;
-
-
- //
- // Creation.
- //
-
- - create map:IMAGE texture tex:TEXTURE :SELF <-
- ( + result:SELF;
- result := clone;
- result.make (map,tex);
- result
- );
-
- - make (image:IMAGE, tex:TEXTURE) <-
- // build the terrain
- (
- + map:IMAGE;
- + h:REAL_32;
-
- (image.channels = 3).if {
- // we need an alpha channel or a greyscale image
-
- map := image.to_greyscale;
- } else {
- map := image;
- };
-
- texture := tex;
- width := map.width;
- height := map.height;
-
- heights := FAST_ARRAY[REAL_32].create (width*height);
- normals := FAST_ARRAY[VECTOR3[REAL_32]].create_with_capacity (width*height);
-
- // fill data with heights
- 0.to (height-1) do { j:INTEGER;
- 0.to (width-1) do { i:INTEGER;
- (image.channels = 4).if {
- h := map.get_alpha_value (i,j).to_real / 256.0;
- } else {
- h := map.get_value (i,j).to_real / 256.0;
- };
- heights.put (h*height_factor) to (i*width+j);
- };
- };
- compute_normals;
- );
-
- - render vb:VERTEX_BUFFER at (xpos,ypos,zpos:REAL_32) <-
- (
- + index:INTEGER;
-
- is_textured.if {
- texture.enable;
- texture.bind;
- };
-
- 0.to (height-2) do { i:INTEGER;
- // generate n-1 strips
-
- vb.new_triangle_strip {
- 0.to (width-1) do { j:INTEGER;
-
- // first point of strip
- index := 3*((i+1)*width+j);
-
- is_textured.if {
- vb.add_texel2f ((i+1).to_real/256.0, j.to_real/256.0);
- };
-
- vb.add_vertex3f (xpos+j.to_real*w_step,ypos+ heights.item ((i+1)*width+j),zpos+(i+1).to_real*h_step);
-
- // second point
- index := 3*(i*width+j);
-
- is_textured.if {
- vb.add_texel2f (i.to_real/256.0, j.to_real/256.0);
- };
- (normals != NULL).if {
- vb.add_normal (normals.item (i*width+j));
- };
-
- vb.add_vertex3f (xpos+j.to_real*w_step, ypos+heights.item (i*width+j),zpos+i.to_real*h_step);
- };
- };
- };
- );
-
- - rescale (min,max:REAL_32) <-
- (
- + amplitude,h_min,h_max,h:REAL_32;
- + n:INTEGER;
-
- amplitude := max - min;
- n := width * height;
-
- // find actual amplitude
- h_min := heights.item 0;
- h_max := heights.item 0;
- 1.to (n-1) do { i:INTEGER;
- (heights.item i > h_max).if {
- h_max := heights.item i;
- };
- (heights.item i < h_min).if {
- h_min := heights.item i;
- };
- };
- // re-scale terrain
- 0.to (n-1) do { i:INTEGER;
- h := (heights.item i - h_min) / (h_max-h_min);
- heights.put (h * amplitude - min) to i;
- };
-
- // re-compute normals
- compute_normals;
- );
-
- - cross_product_p1 (x1,z1:INTEGER) p2 (x2,z2:INTEGER) p3 (x3,z3:INTEGER) :VECTOR3[REAL_32] <-
- // compute normal unit vector of the (p1,p2,p3) triangle
- (
- + v1,v2:VECTOR3[REAL_32];
-
- // vector between p1 & p2
- v1 := VECTOR3[REAL_32].create ((x2-x1).to_real*w_step, heights.item (z2*width+x2) - heights.item (z1*width+x1), (z2-z1).to_real*h_step);
-
- // vector between p1 & p3
- v2 := VECTOR3[REAL_32].create ((x3-x1).to_real*w_step, heights.item (z3*width+x3) - heights.item (z1*width+x1), (z3-z1).to_real*h_step);
-
- (v1.cross v2).normalized
- );
-
- - compute_normals <-
- (
- + v1,v2:VECTOR3[REAL_32];
-
- normals.clear;
-
- 0.to (height-1) do { z:INTEGER;
- 0.to (width-1) do { x:INTEGER;
- //
- // normals of the corners
- //
- ((x = 0) && {z = 0}).if {
- // bottom left
- v1 := cross_product_p1 (0,0) p2 (0,1) p3 (1,0);
- }.elseif {(z = height-1) && {x = width-1}} then {
- // top right
- v1 := cross_product_p1 (x,z) p2 (x,z-1) p3 (x-1,z);
- }.elseif {(x = 0) && {z = height-1}} then {
- // top left
- v1 := cross_product_p1 (x,z) p2 (x,z-1) p3 (x+1,z);
- }.elseif {(x = width-1) && {z = 0}} then {
- // bottom right
- v1 := cross_product_p1 (x,z) p2 (x,z+1) p3 (x-1,z);
- }.elseif {z = 0} then {
- //
- // normals of the borders
- //
- v1 := cross_product_p1 (x,0) p2 (x-1,0) p3 (x,1);
- v2 := cross_product_p1 (x,0) p2 (x,1) p3 (x+1,0);
-
- v1 := v1 + v2;
- }.elseif {x = 0} then {
- // left border
- v1 := cross_product_p1 (0,z) p2 (1,z) p3 (0,z-1);
- v2 := cross_product_p1 (0,z) p2 (0,z+1) p3 (1,z);
-
- v1 := v1 + v2;
- }.elseif {z = height-1} then {
- // top border
- v1 := cross_product_p1 (x,z) p2 (x,z-1) p3 (x+1,z);
- v2 := cross_product_p1 (x,z) p2 (x+1,z) p3 (x,z-1);
-
- v1 := v1 + v2;
- }.elseif {x = width-1} then {
- // right border
- v1 := cross_product_p1 (x,z) p2 (x,z-1) p3 (x-1,z);
- v2 := cross_product_p1 (x,z) p2 (x-1,z) p3 (x,z+1);
-
- v1 := v1 + v2;
- } else {
- //
- // inner point: sum the 8 neighbours normals
- //
- v1 := cross_product_p1 (x,z) p2 (x-1,z) p3 (x-1,z+1);
- v2 := cross_product_p1 (x,z) p2 (x-1,z+1) p3 (x,z+1);
- v1 := v1 + v2;
-
- v2 := cross_product_p1 (x,z) p2 (x,z+1) p3 (x+1,z+1);
- v1 := v1 + v2;
- v2 := cross_product_p1 (x,z) p2 (x+1,z+1) p3 (x+1,z);
- v1 := v1 + v2;
- v2 := cross_product_p1 (x,z) p2 (x+1,z) p3 (x+1,z-1);
- v1 := v1 + v2;
- v2 := cross_product_p1 (x,z) p2 (x+1,z-1) p3 (x,z-1);
- v1 := v1 + v2;
- v2 := cross_product_p1 (x,z) p2 (x,z-1) p3 (x-1,z-1);
- v1 := v1 + v2;
- v2 := cross_product_p1 (x,z) p2 (x-1,z-1) p3 (x-1,z);
- v1 := v1 + v2;
- };
- v1.normalize;
- v1.set_z (-v1.z);
-
- // add normal
- normals.add_last v1;
- };
- };
- );
\ No newline at end of file
diff --git a/image.li b/image.li
deleted file mode 100644
index 9de8e58..0000000
--- a/image.li
+++ /dev/null
@@ -1,171 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := IMAGE;
-
-Section Inherit
-
- + parent_image_format:IMAGE_FORMAT := IMAGE_FORMAT;
-
-Section IMAGE
-
- + image_data:FAST_ARRAY[UINTEGER_8];
-
-Section Public
-
- + name:STRING;
-
- + width:INTEGER;
- + height:INTEGER;
-
- + channels:INTEGER;
-
-
- - create s:ABSTRACT_STRING :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make s;
- result
- );
-
- - make s:ABSTRACT_STRING <-
- (
- name := STRING.create_from_string s;
-
- set_format (IMAGE_FORMAT.get_format s);
- load Self.if_false {
- OPENGL.fatal_error ("Can't load image: "+s);
- };
- );
-
- - create_empty s:ABSTRACT_STRING size (w,h:INTEGER) type n:INTEGER allocate b:BOOLEAN :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make_empty (s,w,h,n,b);
- result
- );
-
- - make_empty (s:ABSTRACT_STRING,w,h,n:INTEGER,allocate:BOOLEAN) <-
- (
- name := STRING.create_from_string s;
- width := w;
- height := h;
- channels := n;
-
- allocate.if {
- image_data := FAST_ARRAY[UINTEGER_8].create (w*h*n);
- };
- );
-
- - get_red_value (x,y:INTEGER) :UINTEGER_8 <-
- (
- ? {channels >= 3};
- image_data.item (channels * (x*width+y))
- );
-
- - get_green_value (x,y:INTEGER) :UINTEGER_8 <-
- (
- ? {channels >= 3};
- image_data.item (channels * (x*width+y)+1)
- );
-
- - get_blue_value (x,y:INTEGER) :UINTEGER_8 <-
- (
- ? {channels >= 3};
- image_data.item (channels * (x*width+y)+2)
- );
-
- - get_alpha_value (x,y:INTEGER) :UINTEGER_8 <-
- (
- ? {channels > 3};
- image_data.item (channels * (x*width+y)+3)
- );
-
- - get_value (x,y:INTEGER) :UINTEGER_8 <-
- (
- image_data.item (channels * (x*width+y))
- );
-
- - item val:INTEGER <-
- (
- image_data.item val;
- );
-
- - get_pixels:FAST_ARRAY[UINTEGER_8] <- image_data;
-
-
- - set_size (w,h:INTEGER) <-
- (
- width := w;
- height := h;
- );
-
- - set_channels ch:INTEGER <- channels := ch;
-
-
- - set_format fmt:IMAGE_FORMAT <-
- (
- parent_image_format := fmt;
- );
-
- - set_data data:FAST_ARRAY[UINTEGER_8] <-
- (
- image_data := data;
- );
-
- - calculate_stride :UINTEGER_32 <-
- (
- + bits_per_line,bits_to_add:UINTEGER_32;
-
- bits_per_line := width * (channels << 3);
- ((bits_per_line % 32) != 0).if {
- bits_to_add := 32 - (bits_per_line%32);
- };
- // return stride
- (bits_per_line + bits_to_add) / 8
- );
-
- - to_greyscale:IMAGE <-
- (
- + result:IMAGE;
- + grey:UINTEGER_8;
- + j:INTEGER;
-
- (channels = 1).if {
- result := Self;
- } else {
- // create new image
- result := create_empty name size (width,height) type 1 allocate TRUE;
-
- j := 0;
- 0.to (width*height) do { i:INTEGER;
- // convert pixels: 0.3*R + 0.59*G + 0.11*B
-
- grey := ((0.30 * image_data.item j.to_integer) + (0.59 * image_data.item (j+1).to_integer) + (0.11 * image_data.item (j+2).to_integer)).to_uinteger_8;
- result.image_data.put grey to i;
-
- j := j + channels;
- };
- };
- result
- );
\ No newline at end of file
diff --git a/image_format/bmp.li b/image_format/bmp.li
deleted file mode 100644
index 07b557c..0000000
--- a/image_format/bmp.li
+++ /dev/null
@@ -1,104 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := BMP;
-
- - comment := "bmp loader";
-
- /*
- En construction...
- */
-
-Section Inherit
-
- - parent_format:IMAGE_FORMAT := IMAGE_FORMAT;
-
-Section Public
-
- - format:STRING_CONSTANT := "bmp";
-
-
- - load image:IMAGE :BOOLEAN <-
- (
- + result:BOOLEAN;
- + bmp_buffer:FAST_ARRAY[UINTEGER_8];
- + header:BMP_HEADER;
-
- + columns,rows,stride:UINTEGER_32;
- + image_data:FAST_ARRAY[UINTEGER_8];
- + base,k:INTEGER;
-
- + e:ENTRY;
- + file:STD_FILE;
-
- e := FILE_SYSTEM.get_entry (image.name);
- (e != NULL).if {
- file ?= e;
- file.open;
-
- bmp_buffer := FAST_ARRAY[UINTEGER_8].create_with_capacity (file.size+1);
-
- (file.read bmp_buffer size (file.size) > 0).if {
-
- header := CONVERT[NATIVE_ARRAY[UINTEGER_8],BMP_HEADER].on (bmp_buffer.storage);
-
- image.set_size (header.width, header.height);
- image.set_channels (header.bits_per_pixel >> 3);
-
- ((!header.is_valid) || {header.is_rle8_compressed}).if {
- error "Only uncompressed BMP files supported";
- };
-
- (image.channels = 3).if {
- // load 24bit bitmap
-
- columns := header.width;
- rows := header.height;
-
- stride := image.calculate_stride;
-
- image_data := FAST_ARRAY[UINTEGER_8].create (stride * rows);
- base := BMP_HEADER.object_size;
-
- 0.to (rows-1) do { row:INTEGER;
- k := row * stride;
- 0.to (columns-1) do { i:INTEGER;
- // swap bytes 0 & 2
- image_data.put (bmp_buffer.item (base+k+i*3+2)) to (k+i*3);
- image_data.put (bmp_buffer.item (base+k+i*3+1)) to (k+i*3+1);
- image_data.put (bmp_buffer.item (base+k+i*3)) to (k+i*3+2);
- };
- };
- image.set_data image_data;
- result := TRUE;
- }.elseif {image.channels = 1} then {
- // load8
-
- error "8bit bitmap not yet supported";
- } else {
- error "Unsupported bitmap";
- };
- };
- };
- result
- );
\ No newline at end of file
diff --git a/image_format/image_format.li b/image_format/image_format.li
deleted file mode 100644
index 0a2e4b8..0000000
--- a/image_format/image_format.li
+++ /dev/null
@@ -1,59 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := IMAGE_FORMAT;
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - format:STRING_CONSTANT <- deferred;
-
- - load image:IMAGE :BOOLEAN <-
- (
- error "Unknown format";
- FALSE
- );
-
-
- - get_format fmt:ABSTRACT_STRING :IMAGE_FORMAT <-
- (
- + result:IMAGE_FORMAT;
-
- (fmt.has_substring ".bmp").if {
- result := BMP;
- }.elseif {fmt.has_substring ".tga"} then {
- result := TGA;
- } else {
-
- result := Self;
- };
- result
- );
-
- - error err:ABSTRACT_STRING <-
- (
- err.print;
- );
\ No newline at end of file
diff --git a/image_format/tga.li b/image_format/tga.li
deleted file mode 100644
index 4b1363f..0000000
--- a/image_format/tga.li
+++ /dev/null
@@ -1,221 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := TGA;
-
- - comment := "tga loader";
- /*
- En construction...
- */
-Section Inherit
-
- - parent_format:IMAGE_FORMAT := IMAGE_FORMAT;
-
-Section Public
-
- - format:STRING_CONSTANT := "tga";
-
- - load image:IMAGE :BOOLEAN <-
- (
- + result:BOOLEAN;
- + tga_buffer:FAST_ARRAY[UINTEGER_8];
-
- + buffer_pos:INTEGER;
- + header:TGA_HEADER;
-
- + image_data:FAST_ARRAY[UINTEGER_8];
- + temp:UINTEGER_8;
-
- + e:ENTRY;
- + file:STD_FILE;
-
- + channels:INTEGER;
- + stride,i,line_idx:INTEGER;
-
- e := FILE_SYSTEM.get_entry (image.name);
- (e != NULL).if {
- file ?= e;
- file.open;
-
- tga_buffer := FAST_ARRAY[UINTEGER_8].create_with_capacity (file.size+1);
-
- (file.read tga_buffer size (file.size) > 0).if {
-
- header := CONVERT[NATIVE_ARRAY[UINTEGER_8],TGA_HEADER].on (tga_buffer.storage);
-
- buffer_pos := TGA_HEADER.object_size;
-
- channels := header.bits_per_pixel >> 3;
- image.set_size (header.width, header.height);
- image.set_channels channels;
-
- (! header.is_compressed).if {
- ((channels = 3) || {channels = 4}).if {
-
- stride := image.calculate_stride;//channels * header.width;
-
- image_data := FAST_ARRAY[UINTEGER_8].create (stride * header.height);
-
- // read data line by line
- 0.to (header.height-1) do { y:INTEGER;
-
- line_idx := stride*y;
-
- // read current line
- 0.to (stride-1) do { k:INTEGER;
- image_data.put (tga_buffer.item buffer_pos) to (line_idx+k);
- buffer_pos := buffer_pos + 1;
- };
-
- // swap bgr to rgb colors
- i := 0;
- {i < stride}.while_do {
-
- temp := image_data.item (line_idx + i);
- image_data.put (image_data.item (line_idx+i+2)) to (line_idx+i);
- image_data.put temp to (line_idx+i+2);
-
- i := i + channels;
- };
- };
- result := TRUE;
-
- }.elseif {channels = 2} then {
- // 16bit tga
-
- + r,g,b:UINTEGER_8;
-
- stride := image.calculate_stride;//channels * header.width;
-
- image_data := FAST_ARRAY[UINTEGER_8].create (stride * header.height);
- // read data
- 0.to (header.width*header.height-1) do { y:INTEGER;
-
- temp := tga_buffer.item buffer_pos;
- buffer_pos := buffer_pos + 1;
-
- b := (temp & 01Fh) << 3;
- g := ((temp >> 5) & 01Fh) << 3;
- r := ((temp >> 10) & 01Fh) << 3;
-
- image_data.put r to (y*3);
- image_data.put g to (y*3+1);
- image_data.put b to (y*3+2);
- };
- result := TRUE;
- };
- } else {
- //
- // load compressed tga
- //
-
- + temp_data:FAST_ARRAY[UINTEGER_8];
- + nb_pixels,current_pixel:INTEGER;
- + color_buffer:FAST_ARRAY[UINTEGER_8];
- + rle_id:UINTEGER_8;
-
- ((channels = 3) || {channels = 4}).if {
- temp_data := FAST_ARRAY[UINTEGER_8].create_with_capacity (header.width * header.height*channels);
- nb_pixels := header.width * header.height;
- color_buffer := FAST_ARRAY[UINTEGER_8].create_with_capacity channels;
-
- {
- // read RLE chunk header
- rle_id := tga_buffer.item buffer_pos;
- buffer_pos := buffer_pos + 1;
-
- (rle_id < 128).if {
- // read raw colour values
-
- 0.to rle_id do { counter:INTEGER;
- color_buffer.clear;
-
- 1.to channels do { w:INTEGER;
- color_buffer.add_last (tga_buffer.item buffer_pos);
- buffer_pos := buffer_pos + 1;
- };
- // transfer pixel colour & swap BGR to RGB
- temp_data.add_last (color_buffer.item 2);
- temp_data.add_last (color_buffer.item 1);
- temp_data.add_last (color_buffer.item 0);
-
- (channels = 4).if {
- temp_data.add_last (color_buffer.item 3);
- };
- current_pixel := current_pixel + 1;
-
- (current_pixel > nb_pixels).if {
- error "too many pixels";
- };
- };
- } else {
- // rle_id >= 128
-
- rle_id := rle_id - 127;
-
- // read chunk color
- color_buffer.clear;
- 1.to channels do { w:INTEGER;
- color_buffer.add_last (tga_buffer.item buffer_pos);
- buffer_pos := buffer_pos + 1;
- };
-
- // duplicate pixel value rle_id 'times
- 0.to (rle_id-1) do { counter:INTEGER;
-
- // swap BGR to RGB
- temp_data.add_last (color_buffer.item 2);
- temp_data.add_last (color_buffer.item 1);
- temp_data.add_last (color_buffer.item 0);
-
- (channels = 4).if {
- temp_data.add_last (color_buffer.item 3);
- };
- current_pixel := current_pixel + 1;
-
- (current_pixel > nb_pixels).if {
- error "too many pixels";
- };
- };
- };
- }.do_while {current_pixel < nb_pixels};
-
- stride := image.calculate_stride;
- image_data := FAST_ARRAY[UINTEGER_8].create (stride * header.height);
- // line by line copy with 32bit aligned
- 0.to (header.height-1) do { row:INTEGER;
- i := header.width * channels;
- 0.to i do { j:INTEGER;
- image_data.put (temp_data.item (row*header.width*channels+j)) to (row*stride+j);
- };
- };
- result := TRUE;
- } else {
- error "image not supported";
- };
- };
- };
- image.set_data image_data;
- };
- result
- );
\ No newline at end of file
diff --git a/image_format/tga_header.li b/image_format/tga_header.li
deleted file mode 100644
index 2768786..0000000
--- a/image_format/tga_header.li
+++ /dev/null
@@ -1,74 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := TGA_HEADER;
-
- - comment := "Mapping TGA Image File Header structure";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Mapping
-
- //
- // TGA Header
- //
-
- + data_offset:UINTEGER_8;
- + reserved:UINTEGER_8;
-
- + type:UINTEGER_8;
-
- + not_used1:UINTEGER_32;// skip 9byte
- + not_used2:UINTEGER_32;
- + not_used3:UINTEGER_8;
-
- + map_width:UINTEGER_16;
- + map_height:UINTEGER_16;
- + bpp:UINTEGER_8;
-
- + flags:UINTEGER_8;
-
-Section Public
-
- - width:INTEGER <- map_width;
- - height:INTEGER <- map_height;
-
- - bits_per_pixel:INTEGER <- bpp;
-
- - is_compressed:BOOLEAN <-
- (
- type = 10
- );
-
- - need_flip:BOOLEAN <-
- (
- flags & 020h = 1
- );
-
- - print <-
- (
-
- '\n'.print;
- );
diff --git a/index_buffer.li b/index_buffer.li
deleted file mode 100644
index 621ee57..0000000
--- a/index_buffer.li
+++ /dev/null
@@ -1,60 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := INDEX_BUFFER;
-
- - comment := "api independant index buffer";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - create sz:INTEGER :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make sz;
- result
- );
-
- - make sz:INTEGER <- deferred;
-
- - bind <- deferred;
-
- - destroy <- deferred;
-
- - begin_index <- deferred;
- - end <- deferred;
-
- - new_indices body:BLOCK <-
- (
- begin_indices;
- body.value;
- end;
- );
-
- - draw mode:INTEGER size sz:INTEGER <- deferred;
-
- - add_index i:UINTEGER_16 <- deferred;
-
diff --git a/light.li b/light.li
deleted file mode 100644
index f195c87..0000000
--- a/light.li
+++ /dev/null
@@ -1,108 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := LIGHT;
-
- - comment := "Light properties";
-
-Section Inherit
-
- + parent_state:Expanded STATE;
-
-Section Public
-
- + ambient:COLOR; // scattered light - no particular direction
- + diffuse:COLOR; // conic light
- + specular:COLOR; // shininess
-
- + position:VECTOR3[REAL_32];
-
- + is_directional:BOOLEAN; // if true 'position' is the direction
-
- + modified:BOOLEAN;
-
-
- - create (a,d,s:COLOR) at (pos:VECTOR3[REAL_32]) :SELF <-
- (
- + result:SELF;
- result := SELF.clone;
- result.make (a,d,s,pos);
- result
- );
-
- - make (a,d,s:COLOR, pos:VECTOR3[REAL_32]) <-
- (
- ambient := a;
- diffuse := d;
- specular := s;
-
- position := pos;
- modified := TRUE;
- );
-
- //
- // Lighting Model
- //
-
- - set_model_ambient col:RGBA <- deferred;
- - set_model_local_viewer b:BOOLEAN <- deferred;
- - set_model_two_side b:BOOLEAN <- deferred;
-
-
- - notify <-
- (
- modified := TRUE;
- );
-
- - set_ambient c:COLOR <-
- (
- notify;
- ambient := c;
- );
-
- - set_diffuse c:COLOR <-
- (
- notify;
- diffuse := c;
- );
-
- - set_specular c:COLOR <-
- (
- notify;
- specular := c;
- );
-
- - set_position p:VECTOR3[REAL_32] <-
- (
- notify;
- position := p;
- );
-
- - set_directional <-
- (
- notify;
- is_directional := TRUE;
- );
-
- - enable_default_light <- deferred;
- - disable_default_light <- deferred;
\ No newline at end of file
diff --git a/listener.li b/listener.li
deleted file mode 100644
index a6a82b9..0000000
--- a/listener.li
+++ /dev/null
@@ -1,59 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := LISTENER;
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- //
- // Keyboard Events
- //
-
- - on_keydown k:INTEGER <-
- (
- // rien
- );
-
- - on_keyup k:INTEGER <-
- (
- // rien
- );
-
- //
- // Mouse Events
- //
-
- - on_mousemove (x,y:INTEGER) <-
- (
- // rien
- );
-
- - on_mouseclick b:INTEGER <-
- (
- // rien
- );
-
\ No newline at end of file
diff --git a/material.li b/material.li
deleted file mode 100644
index 45bbc7a..0000000
--- a/material.li
+++ /dev/null
@@ -1,120 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := MATERIAL;
-
- - comment := "Material: lighting properties of an object";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - mode_front:INTEGER <- 1;
- - mode_back:INTEGER <- 2;
- - mode_front_and_back:INTEGER <- 3;
-
-
- + ambient:COLOR; // percentage of reflected ambient light
- + diffuse:COLOR;
- + specular:COLOR;
-
- + emission:COLOR; // emissive color of material
-
- + shininess:REAL_32; // specular exponent
-
-
- - create (a,d,s,e:COLOR, shine:REAL_32) :SELF <-
- (
- + result:SELF;
- result := SELF.clone;
- result.make (a,d,s,e,shine);
- result
- );
-
- - make (a,d,s,e:COLOR, shine:REAL_32) <-
- (
- ambient := a;
- diffuse := d;
- specular := s;
- emission := e;
-
- shininess := shine;
- );
-
- - enable_color <- deferred;
- - disable_color <- deferred;
-
- - notify <-
- (
- // modified := TRUE;
- );
-
- - set_ambient c:COLOR <-
- (
- notify;
- ambient := c;
- );
-
- - set_diffuse c:COLOR <-
- (
- notify;
- diffuse := c;
- );
-
- - set_specular c:COLOR <-
- (
- notify;
- specular := c;
- );
-
- - set_emission c:COLOR <-
- (
- notify;
- emission := c;
- );
-
- - set_shininess s:REAL_32 <-
- (
- notify;
- shininess := s;
- );
-
- - apply mode:INTEGER <- deferred;
-
- // aliases
- - apply_front <-
- (
- apply mode_front;
- );
-
- - apply_back <-
- (
- apply mode_back;
- );
-
- - apply_front_and_back <-
- (
- apply mode_front_and_back;
- );
\ No newline at end of file
diff --git a/modif_path.li b/modif_path.li
deleted file mode 100644
index cf14af0..0000000
--- a/modif_path.li
+++ /dev/null
@@ -1,159 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac Installer //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
- // Lisaac Path Directory System (by Benoit Sonntag).
- //
- // Note:
- // =====
- // This file is not a Lisaac prototype.
- // It's define the profile path directory for to compile code, with a target.
- // `+' : append new string variable.
- // `-' : append new directory.
- // `*' : execute command after compilation.
- //
- // Warning:
- // ========
- // - `lisaac' is environment variable value.
- // - `input_file' is input file name value.
- // - `output_file' is output file name value.
- // - `target' is a target value.
-
-Section DEFAULT
-
- + target := WINDOWS;
-
-Section COMPILER, SHORTER
-
- + source := lisaac + "src/";
-
- - source + "tools/";
- - source + "type/";
- - source + "item/";
- - source + "constant/";
- - source + "variable/";
- - source + "external/";
- - source + "external/logic/";
- - source + "external/arithmetic/";
- - source + "external/comparison/";
- - source + "dispatcher/";
- - source + "context/";
- - source + "code_life/";
-
-Section COMPILER, SHORTER
-
- * "gcc " + input_file + " -o " + output_file;
-
-Section COMPILER
-
- - source + "compiler_any/";
-
-Section SHORTER
-
- - source + "shorter_any/";
-
- * "cp shorter ../bin/.";
- * "cp shorter.c ../bin/.";
-
-Section Common
- // Always valid path.
-
- + option_gcc := " ";
-
- + lib := lisaac + "lib/";
- + lib_os := lisaac + "lib_os/";
- + libs := lisaac + "../libs/";
-
- + unix := lib_os + "unix/";
- + windows := lib_os + "windows/";
- + dos := lib_os + "dos/";
-
- // Standard library:
- - lib + "base/";
- - lib + "base/low_level/";
- - lib + "collection/";
- - lib + "collection/low_level/";
- - lib + "file_system/";
- - lib + "format/";
- - lib + "format/ai/";
- - lib + "format/bmp/";
- - lib + "graphics/";
- - lib + "graphics/low_level/";
- - lib + "gui/";
- - lib + "gui/clipping/";
- - lib + "gui/event/";
- - lib + "gui/input/";
- - lib + "gui/low_level/";
- - lib + "io/";
- - lib + "kernel/";
- - lib + "memory/";
- - lib + "number/";
- - lib + "number/low_level/";
- - lib + "string/";
- - lib + "system/";
- - lib + "time/";
-
- - libs + "math/";
- - libs + "math/low_level/";
-
- - libs + "opengl-binding/";
-
- - libs + "opengl-binding/opengl/";
- - libs + "opengl-binding/opengl/extensions/";
- - libs + "opengl-binding/image_format/";
-
- - libs + "opengl-binding/gfx_engine/";
- - libs + "opengl-binding/gfx_engine/primitives/";
- - libs + "opengl-binding/gfx_engine/particles";
- - libs + "opengl-binding/gfx_engine/model_format/";
- - libs + "opengl-binding/gfx_engine/low_level/";
-
-Section UNIX, DOS, COMPILER, SHORTER
-
- - unix + "system/";
- - unix + "file_system/";
-
-Section UNIX
-
- + path_lib_x11 := "/usr/lib";
-
- - unix + "video/";
- - libs + "opengl-binding/unix/";
-
- * "gcc " + input_file + " -O3 -fomit-frame-pointer -lm -lX11 -lGL -lGLU -o " +
- output_file + " -L" + path_lib_x11 + option_gcc;
-
-Section WINDOWS
-
- - unix + "system/";
- - windows + "file_system/";
- - unix + "file_system/";
- - windows + "video/";
-
- - libs + "opengl-binding/windows/";
-
- * "gcc " + input_file + " -o " + output_file + ".exe -lwinmm -lgdi32 -lopengl32 -lglu32" + option_gcc;
-
-Section DOS
-
- - dos + "file_system/";
- - dos + "video/";
-
- * "gcc " + input_file + " -o " + output_file + ".exe " + option_gcc;
diff --git a/name_stack.li b/name_stack.li
deleted file mode 100644
index f67d260..0000000
--- a/name_stack.li
+++ /dev/null
@@ -1,39 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := NAME_STACK;
-
- - comment := "Used by pickable objects using Selection buffer";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - init <- deferred;
-
- - load n:UINTEGER_32 <- deferred;
-
- - push n:UINTEGER_32 <- deferred;
- - pop <- deferred;
\ No newline at end of file
diff --git a/opengl/extensions/arb_fragment_shader.li b/opengl/extensions/arb_fragment_shader.li
deleted file mode 100644
index e731dfc..0000000
--- a/opengl/extensions/arb_fragment_shader.li
+++ /dev/null
@@ -1,44 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := ARB_FRAGMENT_SHADER;
-
- - comment := "GL_ARB_fragment_shader extension";
-
- - external := `
-
- #define GL_FRAGMENT_SHADER_ARB 0x8B30
- `;
-
-Section Inherit
-
- - parent_gl_extension:GL_EXTENSION := GL_EXTENSION;
-
-Section Public
-
- - name:STRING_CONSTANT := "GL_ARB_fragment_shader";
-
- - make <-
- (
- );
-
\ No newline at end of file
diff --git a/opengl/extensions/arb_multitexture.li b/opengl/extensions/arb_multitexture.li
deleted file mode 100644
index 7e1d2e5..0000000
--- a/opengl/extensions/arb_multitexture.li
+++ /dev/null
@@ -1,77 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := ARB_MULTITEXTURE;
-
- - comment := "GL_ARB_multitexture extension";
-
- - external := `
-
- #define GL_TEXTURE0_ARB 0x84C0
- typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum target);
- typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
- typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target,float s,float t);
-
- PFNGLACTIVETEXTUREARBPROC liglActiveTextureARB = NULL;
- PFNGLCLIENTACTIVETEXTUREARBPROC liglClientActiveTextureARB = NULL;
- PFNGLMULTITEXCOORD2FARBPROC liglMultiTexCoord2fARB = NULL;
- `;
-
-Section Inherit
-
- - parent_gl_extension:GL_EXTENSION := GL_EXTENSION;
-
-Section Public
-
- - name:STRING_CONSTANT := "GL_ARB_multitexture";
-
- - make <-
- (
- `liglActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC) GPA("glActiveTextureARB")`;
- `liglClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC) GPA("glClientActiveTextureARB")`;
- `liglMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC) GPA("glMultiTexCoord2fARB")`;
- );
-
- - active_texture n:INTEGER <-
- (
- + unit:INTEGER;
-
- unit := `GL_TEXTURE0_ARB`:INTEGER + n;
- `liglActiveTextureARB(@unit)`;
- );
-
- - client_active_texture n:INTEGER <-
- (
- + unit:INTEGER;
-
- unit := `GL_TEXTURE0_ARB`:INTEGER + n;
- `liglClientActiveTextureARB(@unit)`;
- );
-
- - texcoord2f (s,t:REAL_32) unit n:INTEGER <-
- (
- + unit:INTEGER;
-
- unit := `GL_TEXTURE0_ARB`:INTEGER + n;
- `liglMultiTexCoord2fARB(@unit, @s, @t)`;
- );
\ No newline at end of file
diff --git a/opengl/extensions/arb_shader_object.li b/opengl/extensions/arb_shader_object.li
deleted file mode 100644
index 9695bb0..0000000
--- a/opengl/extensions/arb_shader_object.li
+++ /dev/null
@@ -1,223 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := ARB_SHADER_OBJECT;
-
- - comment := "GL_ARB_shader_object extension";
-
- - external := `
-
- #define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81
- #define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84
-
- typedef GLuint (APIENTRY * LIGLCREATESHADERARBPROC) (GLenum target);
- typedef void (APIENTRY * LIGLSHADERSOURCEARBPROC) (GLuint shader, int numOfStrings, char** strings, int* lenOfStrings);
- typedef void (APIENTRY * LIGLCOMPILESHADERARBPROC) (GLuint shader);
- typedef GLuint (APIENTRY * LIGLCREATEPROGRAMARBPROC) (void);
- typedef void (APIENTRY * LIGLATTACHOBJECTARBPROC) (GLuint program, GLuint shader);
- typedef void (APIENTRY * LIGLLINKPROGRAMARBPROC) (GLuint program);
- typedef void (APIENTRY * LIGLUSEPROGRAMARBPROC) (GLuint program);
- typedef void (APIENTRY * LIGLDELETEOBJECTBPROC) (GLuint object);
-
- typedef void (APIENTRY * LIGLGETINFOLOGARBPROC) (GLuint obj, GLint sz, GLint* len, char* infolog);
- typedef void (APIENTRY * LIGLPARAMARBPROC) (GLuint obj, GLenum name, GLint* params);
-
- typedef GLint (APIENTRY * LIGLGETUNIFORMLOCATIONARBPROC) (GLuint pgm, char* name);
- typedef void (APIENTRY * LIGLUNIFORM1FARBPROC) (GLint loc,GLfloat v0);
- typedef void (APIENTRY * LIGLUNIFORM2FARBPROC) (GLint loc,GLfloat v0,GLfloat v1);
- typedef void (APIENTRY * LIGLUNIFORM3FARBPROC) (GLint loc,GLfloat v0,GLfloat v1,GLfloat v2);
- typedef void (APIENTRY * LIGLUNIFORM4FARBPROC) (GLint loc,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3);
-
- LIGLCREATESHADERARBPROC liglCreateShaderARB = NULL;
- LIGLSHADERSOURCEARBPROC liglShaderSourceARB = NULL;
- LIGLCOMPILESHADERARBPROC liglCompileShaderARB = NULL;
- LIGLCREATEPROGRAMARBPROC liglCreateProgramObjectARB = NULL;
- LIGLATTACHOBJECTARBPROC liglAttachObjectARB = NULL;
- LIGLLINKPROGRAMARBPROC liglLinkProgramARB = NULL;
- LIGLUSEPROGRAMARBPROC liglUseProgramObjectARB = NULL;
- LIGLDELETEOBJECTBPROC liglDeleteObjectARB = NULL;
- LIGLGETINFOLOGARBPROC liglGetInfoLogARB = NULL;
- LIGLPARAMARBPROC liglGetParameterivARB = NULL;
-
- LIGLGETUNIFORMLOCATIONARBPROC liglGetUniformLocationARB = NULL;
- LIGLUNIFORM1FARBPROC liglUniform1fARB = NULL;
- LIGLUNIFORM2FARBPROC liglUniform2fARB = NULL;
- LIGLUNIFORM3FARBPROC liglUniform3fARB = NULL;
- LIGLUNIFORM4FARBPROC liglUniform4fARB = NULL;
- int GL_ARB_shader_object_dummy;
- `;
-
-Section Inherit
-
- - parent_gl_extension:GL_EXTENSION := GL_EXTENSION;
-
-Section Public
-
- - name:STRING_CONSTANT := "GL_ARB_shader_object";
-
- - make <-
- (
- `liglCreateShaderARB = (LIGLCREATESHADERARBPROC) GPA("glCreateShaderObjectARB")`;
- `liglShaderSourceARB = (LIGLSHADERSOURCEARBPROC) GPA("glShaderSourceARB")`;
- `liglCompileShaderARB = (LIGLCOMPILESHADERARBPROC) GPA("glCompileShaderARB")`;
- `liglCreateProgramObjectARB = (LIGLCREATEPROGRAMARBPROC) GPA("glCreateProgramObjectARB")`;
- `liglAttachObjectARB = (LIGLATTACHOBJECTARBPROC) GPA("glAttachObjectARB")`;
- `liglLinkProgramARB = (LIGLLINKPROGRAMARBPROC) GPA("glLinkProgramARB")`;
- `liglUseProgramObjectARB = (LIGLUSEPROGRAMARBPROC) GPA("glUseProgramObjectARB")`;
- `liglDeleteObjectARB = (LIGLDELETEOBJECTBPROC) GPA("glDeleteObjectARB")`;
- `liglGetInfoLogARB = (LIGLGETINFOLOGARBPROC) GPA("glGetInfoLogARB")`;
- `liglGetParameterivARB = (LIGLPARAMARBPROC) GPA("glGetObjectParameterivARB")`;
-
- `liglGetUniformLocationARB = (LIGLGETUNIFORMLOCATIONARBPROC) GPA("glGetUniformLocationARB")`;
- `liglUniform1fARB = (LIGLUNIFORM1FARBPROC) GPA("glUniform1fARB")`;
- `liglUniform2fARB = (LIGLUNIFORM2FARBPROC) GPA("glUniform2fARB")`;
- `liglUniform3fARB = (LIGLUNIFORM3FARBPROC) GPA("glUniform3fARB")`;
- `liglUniform4fARB = (LIGLUNIFORM4FARBPROC) GPA("glUniform4fARB")`;
- );
-
- - create_program:UINTEGER_32 <-
- (
- `liglCreateProgramObjectARB()`:UINTEGER_32
- );
-
- - attach_object (program,shader:UINTEGER_32) <-
- (
- `liglAttachObjectARB(@program, @shader)`;
- );
-
- - link_program program:UINTEGER_32 <-
- (
- `liglLinkProgramARB(@program)`;
- );
-
- - use_program program:UINTEGER_32 <-
- (
- `liglUseProgramObjectARB(@program)`;
- );
-
- - create_vertex_shader:UINTEGER_32 <-
- (
- `liglCreateShaderARB(GL_VERTEX_SHADER_ARB)`:UINTEGER_32
- );
-
- - create_fragment_shader:UINTEGER_32 <-
- (
- `liglCreateShaderARB(GL_FRAGMENT_SHADER_ARB)`:UINTEGER_32
- );
- /*
- - shader_source shader:INTEGER strings src:FAST_ARRAY[STRING] size sz:FAST_ARRAY[INTEGER]<-
- (
- + n:INTEGER;
- + p,p2:POINTER;
-
- n := src.count;
- p := src.to_external;
- p2 := sz.to_external;
- `liglShaderSourceARB(@shader, @n, @p, @p2)`;
- );
- */
- - shader_source shader:INTEGER string src:STRING <-
- (
- + p:NATIVE_ARRAY[CHARACTER];
-
- p := src.to_external;
- `liglShaderSourceARB(@shader, 1, (char**)(&@p), NULL)`;
- );
- /*
- - shader_source shader:INTEGER string src:STRING size n:INTEGER <-
- (
- + p:NATIVE_ARRAY[CHARACTER];
-
- p := src.to_external;
- `liglShaderSourceARB(@shader, 1, (char**)(&@p), @n)`;
- );
- */
- - compile shader:UINTEGER_32 <-
- (
- `liglCompileShaderARB(@shader)`;
- );
-
- - delete_object obj:UINTEGER_32 <-
- (
- `liglDeleteObjectARB(@obj)`;
- );
-
- - get_parameteri (obj,pname:UINTEGER_32) :INTEGER <-
- (
- `liglGetParameterivARB(@obj, @pname, &GL_ARB_shader_object_dummy)`;
- `GL_ARB_shader_object_dummy`:INTEGER
- );
-
- - get_parameteriv (obj,pname:UINTEGER_32) in buf:FAST_ARRAY[INTEGER] <- // ??
- ( + p:POINTER;
-
- p := buf.to_external;
- `liglGetParameterivARB(@obj, @pname, @p)`;
- );
-
- - get_infolog_status obj:UINTEGER_32 :INTEGER <-
- (
- get_parameteri (obj,`GL_OBJECT_COMPILE_STATUS_ARB`:UINTEGER_32)
- );
-
- - get_infolog_length obj:UINTEGER_32 :INTEGER <-
- (
- get_parameteri (obj,`GL_OBJECT_INFO_LOG_LENGTH_ARB`:UINTEGER_32)
- );
-
- - get_infolog obj:UINTEGER_32 in buffer:FAST_ARRAY[CHARACTER] size sz:INTEGER <-
- ( + p:POINTER;
-
- p := buffer.to_external;
- `liglGetInfoLogARB(@obj, @sz, &GL_ARB_shader_object_dummy, @p)`;
- );
-
- - get_uniform_location (program:UINTEGER_32, name:ABSTRACT_STRING) :INTEGER <-
- ( + p:NATIVE_ARRAY[CHARACTER];
-
- p := name.to_external;
- `liglGetUniformLocationARB(@program, @p)`:INTEGER
- );
-
- - uniform1f (location:INTEGER, v0:REAL_32) <-
- (
- `liglUniform1fARB(@location, @v0)`;
- );
-
- - uniform2f (location:INTEGER, v0,v1:REAL_32) <-
- (
- `liglUniform2fARB(@location, @v0, @v1)`;
- );
-
- - uniform3f (location:INTEGER, v0,v1,v2:REAL_32) <-
- (
- `liglUniform3fARB(@location, @v0, @v1, @v2)`;
- );
-
- - uniform4f (location:INTEGER, v0,v1,v2,v3:REAL_32) <-
- (
- `liglUniform4fARB(@location, @v0, @v1, @v2, @v3)`;
- );
-
-
-
\ No newline at end of file
diff --git a/opengl/extensions/arb_shading_language_100.li b/opengl/extensions/arb_shading_language_100.li
deleted file mode 100644
index ef229c7..0000000
--- a/opengl/extensions/arb_shading_language_100.li
+++ /dev/null
@@ -1,40 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := ARB_SHADING_LANGUAGE_100;
-
- - comment := "GL_ARB_shading_language_100 extension";
-
-Section Inherit
-
- - parent_gl_extension:GL_EXTENSION := GL_EXTENSION;
-
-Section Public
-
- - name:STRING_CONSTANT := "GL_ARB_shading_language_100";
-
- - make <-
- (
- // nothing
- );
-
\ No newline at end of file
diff --git a/opengl/extensions/arb_vertex_buffer_object.li b/opengl/extensions/arb_vertex_buffer_object.li
deleted file mode 100644
index fedf865..0000000
--- a/opengl/extensions/arb_vertex_buffer_object.li
+++ /dev/null
@@ -1,122 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := ARB_VERTEX_BUFFER_OBJECT;
-
- - comment := "ARB_vertex_buffer_object extension";
-
- - external := `
-
- // VBO Extension Definitions, From glext.h
- #define GL_ARRAY_BUFFER_ARB 0x8892
- #define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893
- #define GL_STATIC_DRAW_ARB 0x88E4
- typedef void (APIENTRY * PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
- typedef void (APIENTRY * PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
- typedef void (APIENTRY * PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
- typedef void (APIENTRY * PFNGLBUFFERDATAARBPROC) (GLenum target, int size, const GLvoid *data, GLenum usage);
-
- // VBO Extension Function Pointers
- PFNGLGENBUFFERSARBPROC liglGenBuffersARB = NULL;
- PFNGLBINDBUFFERARBPROC liglBindBufferARB = NULL;
- PFNGLBUFFERDATAARBPROC liglBufferDataARB = NULL;
- PFNGLDELETEBUFFERSARBPROC liglDeleteBuffersARB = NULL;
- unsigned int ARB_vertex_buffer_object_id;
- `;
-
-Section Inherit
-
- - parent_gl_extension:GL_EXTENSION := GL_EXTENSION;
-
-Section Public
-
- - name:STRING_CONSTANT := "ARB_vertex_buffer_object";
-
- - make <-
- (
- // Get Pointers To The GL Functions
- `liglGenBuffersARB = (PFNGLGENBUFFERSARBPROC) GPA("glGenBuffersARB");
- liglBindBufferARB = (PFNGLBINDBUFFERARBPROC) GPA("glBindBufferARB");
- liglBufferDataARB = (PFNGLBUFFERDATAARBPROC) GPA("glBufferDataARB");
- liglDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC) GPA("glDeleteBuffersARB");`;
- );
-
- - genbuffer:UINTEGER_32 <-
- (
- `liglGenBuffersARB(1, &ARB_vertex_buffer_object_id)`;
- `ARB_vertex_buffer_object_id`:UINTEGER_32
- );
-
- - genbuffers n:INTEGER :FAST_ARRAY[UINTEGER_32] <-
- (
- + p:POINTER;
- + result:FAST_ARRAY[UINTEGER_32];
-
- result := FAST_ARRAY[UINTEGER_32].create n;
- p := result.to_external;
- `liglGenBuffersARB(@n, @p)`;
- result
- );
-
- - bind buffer:UINTEGER_32 <-
- (
- `liglBindBufferARB(GL_ARRAY_BUFFER_ARB, @buffer)`;
- );
-
- - bind_index buffer:UINTEGER_32 <-
- (
- `liglBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, @buffer)`;
- );
-
- - disable <-
- (
- `liglBindBufferARB(GL_ARRAY_BUFFER_ARB, 0)`;
- );
-
- - disable_index <-
- (
- `liglBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0)`;
- );
-
- - buffer_data data:POINTER size sz:INTEGER <-
- (
- `liglBufferDataARB(GL_ARRAY_BUFFER_ARB, @sz, @data, GL_STATIC_DRAW_ARB)`;
- );
-
- - buffer_index_data data:POINTER size sz:INTEGER <-
- (
- `liglBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, @sz, @data, GL_STATIC_DRAW_ARB)`;
- );
-
- - delete id:UINTEGER_32 <-
- (
- `liglDeleteBuffersARB(1, (GLuint*)@id)`;
- );
-
- - delete_buffers ids:FAST_ARRAY[UINTEGER_32] count n:INTEGER <-
- (
- + p:POINTER;
-
- p := ids.to_external;
- `liglDeleteBuffersARB(@n, @p)`;
- );
\ No newline at end of file
diff --git a/opengl/extensions/arb_vertex_shader.li b/opengl/extensions/arb_vertex_shader.li
deleted file mode 100644
index 9005a8b..0000000
--- a/opengl/extensions/arb_vertex_shader.li
+++ /dev/null
@@ -1,44 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := ARB_VERTEX_SHADER;
-
- - comment := "GL_ARB_vertex_shader extension";
-
- - external := `
-
- #define GL_VERTEX_SHADER_ARB 0x8B31
- `;
-
-Section Inherit
-
- - parent_gl_extension:GL_EXTENSION := GL_EXTENSION;
-
-Section Public
-
- - name:STRING_CONSTANT := "GL_ARB_vertex_shader";
-
- - make <-
- (
- );
-
\ No newline at end of file
diff --git a/opengl/gl_abstract_texture.li b/opengl/gl_abstract_texture.li
deleted file mode 100644
index daf8e0a..0000000
--- a/opengl/gl_abstract_texture.li
+++ /dev/null
@@ -1,282 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_ABSTRACT_TEXTURE;
-
- - comment := "OpenGL rendered image";
-
- - external := `unsigned int texture_id;`;
-
-Section Inherit
-
- - parent_texture:Expanded TEXTURE;
-
-Section Public
-
- - decal:INTEGER <- `GL_DECAL`:INTEGER;
- - replace:INTEGER <- `GL_REPLACE`:INTEGER;
- - modulate:INTEGER <- `GL_MODULATE`:INTEGER;
- - blend:INTEGER <- `GL_BLEND`:INTEGER;
-
- - clamp:INTEGER <- `GL_CLAMP`:INTEGER;
- - repeat:INTEGER <- `GL_REPEAT`:INTEGER;
-
- - clamp_to_edge:INTEGER <- `0x812F`:INTEGER; //GL_CLAMP_TO_EDGE`:INTEGER;
- //-> not supported on every cards & GL implementations !!
-
-
- + id:UINTEGER_32; // OpenGL id
-
- - make image:IMAGE <-
- (
- + type,env_mode,mode:INTEGER;
- + data:POINTER;
-
- set_image image;
-
- (channels = 4).if {
- type := `GL_RGBA`:INTEGER;
- }.elseif {channels = 3} then {
- type := `GL_RGB`:INTEGER;
- }.elseif {channels = 1} then {
- type := `GL_LUMINANCE`:INTEGER;
- };
-
- mode := target;
- data := image_data.to_external;
-
- // create OpenGL texture
- `glGenTextures(1, &texture_id)`;
- id := `texture_id`:INTEGER;
-
- // set pixel aligment
- `glPixelStorei (GL_UNPACK_ALIGNMENT, 1)`;
-
- // select new texture
- `glBindTexture(@mode, texture_id)`;
-
- //--- OpenGL texture parameters
- filter
- .when filter_mipmap then {
-
- `glTexParameteri(@mode,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST)`;
- `glTexParameteri(@mode,GL_TEXTURE_MAG_FILTER,GL_LINEAR_MIPMAP_LINEAR)`;
- raw_create_mipmap (channels,width,height,type) data data;
-
- }.when filter_linear then {
- `glTexParameteri(@mode,GL_TEXTURE_MIN_FILTER,GL_LINEAR)`;
- `glTexParameteri(@mode,GL_TEXTURE_MAG_FILTER,GL_LINEAR)`;
-
- raw_create (channels,width,height,type) data data;
-
- }.when filter_nearest then {
- `glTexParameteri(@mode,GL_TEXTURE_MIN_FILTER,GL_NEAREST)`;
- `glTexParameteri(@mode,GL_TEXTURE_MAG_FILTER,GL_NEAREST)`;
-
- raw_create (channels,width,height,type) data data;
- };
- //---
-
- // set texture function
- env_mode := drawing_mode;
- `glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, @env_mode)`;
-
- // wrapping function (clamp or repeat)
- env_mode := wrapping_mode;
- `glTexParameteri(@mode, GL_TEXTURE_WRAP_S, @env_mode)`;
- `glTexParameteri(@mode, GL_TEXTURE_WRAP_T, @env_mode)`;
- );
-
- - make_from_data pixels:FAST_ARRAY[UINTEGER_8] size (w,h:INTEGER) type t:INTEGER <-
- (
- + image:IMAGE;
-
- image := IMAGE.create_empty "" size (w,h) type t allocate FALSE;
- image.set_data pixels;
-
- make image;
- );
-
- - make_from_framebuffer (x,y,w,h:INTEGER) type t:INTEGER <-
- (
- + env_mode,mode:INTEGER;
- + image:IMAGE;
-
- image := IMAGE.create_empty "" size (w,h) type t allocate FALSE;
- set_image image;
-
- mode := target;
-
-
- // create OpenGL texture
- `glGenTextures(1, &texture_id)`;
- id := `texture_id`:INTEGER;
-
- // set pixel aligment
- `glPixelStorei (GL_UNPACK_ALIGNMENT, 1)`;
-
- // select new texture
- `glBindTexture(@mode, texture_id)`;
-
- //--- OpenGL texture parameters
- filter
- .when filter_mipmap then {
- `glTexParameteri(@mode,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST)`;
- `glTexParameteri(@mode,GL_TEXTURE_MAG_FILTER,GL_LINEAR_MIPMAP_LINEAR)`;
- }.when filter_linear then {
- `glTexParameteri(@mode,GL_TEXTURE_MIN_FILTER,GL_LINEAR)`;
- `glTexParameteri(@mode,GL_TEXTURE_MAG_FILTER,GL_LINEAR)`;
- }.when filter_nearest then {
- `glTexParameteri(@mode,GL_TEXTURE_MIN_FILTER,GL_NEAREST)`;
- `glTexParameteri(@mode,GL_TEXTURE_MAG_FILTER,GL_NEAREST)`;
- };
- raw_copy (x,y,w,h) type t;
- //---
-
- // set texture function
- env_mode := drawing_mode;
- `glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, @env_mode)`;
-
- // wrapping function (clamp or repeat)
- env_mode := wrapping_mode;
- `glTexParameteri(@mode, GL_TEXTURE_WRAP_S, @env_mode)`;
- `glTexParameteri(@mode, GL_TEXTURE_WRAP_T, @env_mode)`;
- );
-
- - make_empty (w,h:INTEGER) type t:INTEGER <-
- // slow...
- (
- + mode,type:INTEGER;
- + image:IMAGE;
- + p:POINTER;
-
- image := IMAGE.create_empty "" size (w,h) type t allocate TRUE;
- set_image image;
-
- mode := target;
-
- (channels = 4).if {
- type := `GL_RGBA`:INTEGER;
- }.elseif {channels = 3} then {
- type := `GL_RGB`:INTEGER;
- }.elseif {channels = 1} then {
- type := `GL_LUMINANCE`:INTEGER;
- };
-
- // create OpenGL texture
- `glGenTextures(1, &texture_id)`;
- id := `texture_id`:INTEGER;
-
- // set pixel aligment
- `glPixelStorei (GL_UNPACK_ALIGNMENT, 1)`;
-
- // select new texture
- `glBindTexture(@mode, texture_id)`;
-
- //--- OpenGL texture parameters
- filter
- .when filter_mipmap then {
- `glTexParameteri(@mode,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST)`;
- `glTexParameteri(@mode,GL_TEXTURE_MAG_FILTER,GL_LINEAR_MIPMAP_LINEAR)`;
- }.when filter_linear then {
- `glTexParameteri(@mode,GL_TEXTURE_MIN_FILTER,GL_LINEAR)`;
- `glTexParameteri(@mode,GL_TEXTURE_MAG_FILTER,GL_LINEAR)`;
- }.when filter_nearest then {
- `glTexParameteri(@mode,GL_TEXTURE_MIN_FILTER,GL_NEAREST)`;
- `glTexParameteri(@mode,GL_TEXTURE_MAG_FILTER,GL_NEAREST)`;
- };
- p := image_data.to_external;
- `glTexImage2D(GL_TEXTURE_2D, 0, @t, @w, @h, 0, @type, GL_UNSIGNED_BYTE, @p)`;
- //---
- );
-
-
- - draw (x,y:INTEGER) <- deferred;
- - draw_strech (x,y,w,h:INTEGER) <- deferred;
-
-
- - push_attrib <-
- (
- `glPushAttrib(GL_TEXTURE_BIT)`;
- );
-
- - pop_attrib <-
- (
- `glPopAttrib()`;
- );
-
- - enable <-
- (
- parent_state.enable;
- enable_unit 0;
- );
-
- - disable <-
- (
- parent_state.disable;
- disable_unit 0;
- );
-
- - enable_unit n:INTEGER <-
- ( + mode:INTEGER;
- (OPENGL.arb_multitexture != NULL).if {
- OPENGL.arb_multitexture.active_texture n;
- };
- mode := target;
- `glEnable (@mode)`;
- );
-
- - disable_unit n:INTEGER <-
- ( + mode:INTEGER;
-
- (OPENGL.arb_multitexture != NULL).if {
- OPENGL.arb_multitexture.active_texture n;
- };
- mode := target;
- `glDisable (@mode)`;
- );
-
- - bind <-
- (
- bind_unit 0;
- );
-
- - bind_unit n:INTEGER <-
- (
- + id_tex,mode:INTEGER;
-
- enable_unit n;
-
- id_tex := id;
- mode := target;
- `glBindTexture(@mode, @id_tex)`;
- );
-
-Section GL_ABSTRACT_TEXTURE
-
- - target:INTEGER <- deferred;
-
- - raw_create (ch,w,h,type:INTEGER) data p:POINTER <- deferred;
- - raw_create_mipmap (ch,w,h,type:INTEGER) data p:POINTER <- deferred;
-
- - raw_copy (x,y,w,h:INTEGER) type t:INTEGER <- deferred;
\ No newline at end of file
diff --git a/opengl/gl_accum_buffer.li b/opengl/gl_accum_buffer.li
deleted file mode 100644
index b1f78e7..0000000
--- a/opengl/gl_accum_buffer.li
+++ /dev/null
@@ -1,50 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_ACCUM_BUFFER;
-
- - comment := "OpenGL Accumulation Buffer";
-
-Section Inherit
-
- - parent_accum_buffer:ACCUM_BUFFER := ACCUM_BUFFER;
-
-Section Public
-
- // accumulation functions
- - accum:INTEGER <- `GL_ACCUM`:INTEGER;
- - load:INTEGER <- `GL_LOAD`:INTEGER;
- - return:INTEGER <- `GL_RETURN`:INTEGER;
- - add:INTEGER <- `GL_ADD`:INTEGER;
- - mult:INTEGER <- `GL_MULT`:INTEGER;
-
-
- - clear <-
- (
- `glClear(GL_ACCUM_BUFFER_BIT)`;
- );
-
- - set_function f:INTEGER value val:REAL_32 <-
- (
- `glAccum(@f, @val)`;
- );
\ No newline at end of file
diff --git a/opengl/gl_alpha_test.li b/opengl/gl_alpha_test.li
deleted file mode 100644
index f67cab6..0000000
--- a/opengl/gl_alpha_test.li
+++ /dev/null
@@ -1,70 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_ALPHA_TEST;
-
- - comment := "Alpha Testing (only in RGBA mode)";
-
-Section Inherit
-
- - parent_alpha_test:ALPHA_TEST := ALPHA_TEST;
-
-Section Public
-
- // pixel test functions
- - always:INTEGER <- `GL_ALWAYS`:INTEGER;
- - never:INTEGER <- `GL_NEVER`:INTEGER;
- - less:INTEGER <- `GL_LESS`:INTEGER;
- - lequal:INTEGER <- `GL_LEQUAL`:INTEGER;
- - equal:INTEGER <- `GL_EQUAL`:INTEGER;
- - gequal:INTEGER <- `GL_GEQUAL`:INTEGER;
- - greater:INTEGER <- `GL_GREATER`:INTEGER;
- - notequal:INTEGER <- `GL_NOTEQUAL`:INTEGER;
-
-
- - enable <-
- (
- parent_state.enable;
- `glEnable(GL_ALPHA_TEST)`;
- );
-
- - disable <-
- (
- parent_state.disable;
- `glDisable(GL_ALPHA_TEST)`;
- );
-
- - push_attrib <-
- (
- `glPushAttrib(GL_ENABLE_BIT)`;
- );
-
- - pop_attrib <-
- (
- `glPopAttrib()`;
- );
-
- - apply f:INTEGER with val:REAL_32 <-
- (
- `glAlphaFunc(@f, @val)`;
- );
\ No newline at end of file
diff --git a/opengl/gl_blending.li b/opengl/gl_blending.li
deleted file mode 100644
index a4f97e2..0000000
--- a/opengl/gl_blending.li
+++ /dev/null
@@ -1,77 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_BLENDING;
-
- - comment := "Opengl Blending Mode";
-
-Section Inherit
-
- - parent_blending:BLENDING := BLENDING;
-
-Section Public
-
- // factors values
- - zero:INTEGER <- `GL_ZERO`:INTEGER;
- - one:INTEGER <- `GL_ONE`:INTEGER;
- - dst_color:INTEGER <- `GL_DST_COLOR`:INTEGER;
- - one_minus_dst_color:INTEGER <- `GL_ONE_MINUS_DST_COLOR`:INTEGER;
- - src_color:INTEGER <- `GL_SRC_COLOR`:INTEGER;
- - one_minus_src_color:INTEGER <- `GL_ONE_MINUS_SRC_COLOR`:INTEGER;
- - src_alpha:INTEGER <- `GL_SRC_ALPHA`:INTEGER;
- - one_minus_src_alpha:INTEGER <- `GL_ONE_MINUS_SRC_ALPHA`:INTEGER;
- - dst_alpha:INTEGER <- `GL_DST_ALPHA`:INTEGER;
- - one_minus_dst_alpha:INTEGER <- `GL_ONE_MINUS_DST_ALPHA`:INTEGER;
- - src_alpha_saturate:INTEGER <- `GL_SRC_ALPHA_SATURATE`:INTEGER;
-
- - enable <-
- (
- parent_state.enable;
- `glEnable(GL_BLEND)`;
- );
-
- - disable <-
- (
- parent_state.disable;
- `glDisable(GL_BLEND)`;
- );
-
- - push_attrib <-
- (
- `glPushAttrib(GL_ENABLE_BIT)`;
- );
-
- - pop_attrib <-
- (
- `glPopAttrib()`;
- );
-
- - apply (src_factor,dst_factor:INTEGER) <-
- (
- `glBlendFunc(@src_factor, @dst_factor)`;
- );
-
- - set_alpha_value alpha:REAL_32 <-
- (
- `glColor4f(1.0f, 1.0f, 1.0f, @alpha)`;
- );
\ No newline at end of file
diff --git a/opengl/gl_color_buffer.li b/opengl/gl_color_buffer.li
deleted file mode 100644
index 910e657..0000000
--- a/opengl/gl_color_buffer.li
+++ /dev/null
@@ -1,140 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_COLOR_BUFFER;
-
- - comment := "OpenGL pixel color buffer";
-
-Section Inherit
-
- - parent_color_buffer:COLOR_BUFFER := COLOR_BUFFER;
-
-Section Public
-
- - rgb:INTEGER <- `GL_RGB`:INTEGER;
- - rgba:INTEGER <- `GL_RGBA`:INTEGER;
- - red:INTEGER <- `GL_RED`:INTEGER;
- - green:INTEGER <- `GL_GREEN`:INTEGER;
- - blue:INTEGER <- `GL_BLUE`:INTEGER;
- - alpha:INTEGER <- `GL_ALPHA`:INTEGER;
- - luminance:INTEGER <- `GL_LUMINANCE`:INTEGER; // grey (single component)
- - luminance_alpha:INTEGER <- `GL_LUMINANCE_ALPHA`:INTEGER; // grey+alpha
- - stencil_index:INTEGER <- `GL_STENCIL_INDEX`:INTEGER;
- - depth_component:INTEGER <- `GL_DEPTH_COMPONENT`:INTEGER;
-
-
- - clear <-
- (
- `glClear(GL_COLOR_BUFFER_BIT)`;
- );
-
- - set_clear_value (r,g,b,a:REAL_32) <-
- (
- `glClearColor(@r, @g, @b, @a)`;
- );
-
- - set_color c:COLOR <-
- (
- + r,g,b:REAL_32;
-
- r := c.r;
- g := c.g;
- b := c.b;
- `glColor3f(@r, @g, @b)`;
- );
-
- - set_color3f (r,g,b:REAL_32) <-
- (
- `glColor3f(@r, @g, @b)`;
- );
-
- - set_color4f (r,g,b,a:REAL_32) <-
- (
- `glColor4f(@r, @g, @b, @a)`;
- );
-
- - set_mask (r,g,b,a:BOOLEAN) <-
- (
- `glColorMask(@r, @g, @b, @a)`;
- );
-
- - enable <-
- (
- `glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE)`;
- );
-
- - disable <-
- (
- `glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE)`;
- );
-
- - read (x,y:INTEGER) size (w,h:INTEGER) type t:INTEGER in buf:FAST_ARRAY[UINTEGER_8] <-
- ( + p:POINTER;
-
- p := buf.to_external;
- `glReadPixels(@x, at y, at w, at h, at t,GL_UNSIGNED_BYTE, at p)`;
- );
-
- // aliases
- - read_rgb (x,y:INTEGER) size (w,h:INTEGER) in buf:FAST_ARRAY[UINTEGER_8] <-
- (
- read (x,y) size (w,h) type rgb in buf;
- );
-
- - read_rgba (x,y:INTEGER) size (w,h:INTEGER) in buf:FAST_ARRAY[UINTEGER_8] <-
- (
- read (x,y) size (w,h) type rgba in buf;
- );
-
- - draw_pixels pixels:FAST_ARRAY[UINTEGER_8] size (w,h:INTEGER) type t:INTEGER <-
- ( + p:POINTER;
-
- p := pixels.to_external;
- `glDrawPixels(@w, at h,GL_UNSIGNED_BYTE, at t, at p)`;
- );
-
- - draw_rgb_pixels pixels:FAST_ARRAY[UINTEGER_8] size (w,h:INTEGER) <-
- (
- draw_pixels pixels size (w,h) type rgb;
- );
-
- - draw_rgba_pixels pixels:FAST_ARRAY[UINTEGER_8] size (w,h:INTEGER) <-
- (
- draw_pixels pixels size (w,h) type rgba;
- );
-
- - copy (x,y:INTEGER) size (w,h:INTEGER) type t:INTEGER <-
- (
- `glCopyPixels(@x, at y, at w, at h, at t)`;
- );
-
- - copy_rgb (x,y:INTEGER) size (w,h:INTEGER) <-
- (
- copy (x,y) size (w,h) type rgb;
- );
-
- - copy_rgba (x,y:INTEGER) size (w,h:INTEGER) <-
- (
- copy (x,y) size (w,h) type rgba;
- );
-
\ No newline at end of file
diff --git a/opengl/gl_culling.li b/opengl/gl_culling.li
deleted file mode 100644
index b48c27b..0000000
--- a/opengl/gl_culling.li
+++ /dev/null
@@ -1,73 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_CULLING;
-
- - comment := "OpenGL Culling Mode";
-
-Section Inherit
-
- - parent_culling:CULLING := CULLING;
-
-Section Public
-
- // culling modes
- - front:INTEGER <- `GL_FRONT`:INTEGER;
- - back:INTEGER <- `GL_BACK`:INTEGER;
- - clockwise:INTEGER <- `GL_CW`:INTEGER;
- - counter_clockwise:INTEGER <- `GL_CCW`:INTEGER;
-
-
- - apply mode:INTEGER <-
- (
- `glCullFace(@mode)`;
- );
-
- - set_orientation o:INTEGER <-
- (
- `glFrontFace(@o)`;
- );
-
- - enable <-
- (
- parent_state.enable;
- `glEnable(GL_CULL_FACE)`;
- );
-
- - disable <-
- (
- parent_state.disable;
- `glDisable(GL_CULL_FACE)`;
- );
-
- - push_attrib <-
- (
- `glPushAttrib(GL_ENABLE_BIT)`;
- );
-
- - pop_attrib <-
- (
- `glPopAttrib()`;
- );
-
-
diff --git a/opengl/gl_depth_buffer.li b/opengl/gl_depth_buffer.li
deleted file mode 100644
index ecd6e72..0000000
--- a/opengl/gl_depth_buffer.li
+++ /dev/null
@@ -1,89 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_DEPTH_BUFFER;
-
- - comment := "Opengl Depth Buffer";
-
-Section Inherit
-
- - parent_buffer:DEPTH_BUFFER := DEPTH_BUFFER;
-
-Section Public
-
- // pixel test functions
- - always:INTEGER <- `GL_ALWAYS`:INTEGER;
- - never:INTEGER <- `GL_NEVER`:INTEGER;
- - less:INTEGER <- `GL_LESS`:INTEGER;
- - lequal:INTEGER <- `GL_LEQUAL`:INTEGER;
- - equal:INTEGER <- `GL_EQUAL`:INTEGER;
- - gequal:INTEGER <- `GL_GEQUAL`:INTEGER;
- - greater:INTEGER <- `GL_GREATER`:INTEGER;
- - notequal:INTEGER <- `GL_NOTEQUAL`:INTEGER;
-
- - enable <-
- (
- parent_state.enable;
- `glEnable (GL_DEPTH_TEST)`;
- );
-
- - disable <-
- (
- parent_state.disable;
- `glDisable (GL_DEPTH_TEST)`;
- );
-
- - push_attrib <-
- (
- `glPushAttrib(GL_ENABLE_BIT)`;
- );
-
- - pop_attrib <-
- (
- `glPopAttrib()`;
- );
-
- - set_clear_value val:REAL_32 <-
- (
- `glClearDepth(@val)`;
- );
-
- - clear <-
- (
- `glClear(GL_DEPTH_BUFFER_BIT)`;
- );
-
- - set_function f:INTEGER <-
- (
- `glDepthFunc(@f)`;
- );
-
- - lock <-
- (
- `glDepthMask(GL_TRUE)`;
- );
-
- - unlock <-
- (
- `glDepthMask(GL_FALSE)`;
- );
\ No newline at end of file
diff --git a/opengl/gl_display_list.li b/opengl/gl_display_list.li
deleted file mode 100644
index e913fb9..0000000
--- a/opengl/gl_display_list.li
+++ /dev/null
@@ -1,71 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_DISPLAY_LIST;
-
- - author := "OpenGL display list";
-
-Section Inherit
-
- - parent_display_list:DISPLAY_LIST := DISPLAY_LIST;
-
-Section Public
-
- + id_list:INTEGER;// OpenGL id to call display list
-
- - create body:BLOCK :SELF <-
- (
- + result:SELF;
- result := SELF.clone;
- result.make body;
- result
- );
-
- - make body:BLOCK <-
- (
- + id:INTEGER;
-
- id := id_list := `glGenLists(1)`:INTEGER;
-
- `glNewList(@id, GL_COMPILE)`;
-
- body.value;
-
- `glEndList()`;
- );
-
- - call <-
- (
- + id:INTEGER;
-
- id := id_list;
- `glCallList(@id)`;
- );
-
- - destroy <-
- (
- + id:INTEGER;
-
- id := id_list;
- `glDeleteLists(@id, 1)`;
- );
diff --git a/opengl/gl_error.li b/opengl/gl_error.li
deleted file mode 100644
index 6c23522..0000000
--- a/opengl/gl_error.li
+++ /dev/null
@@ -1,67 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_ERROR;
-
- - comment := "OpenGL error";
-
-Section Inherit
-
- - parent_error:ERROR := ERROR;
-
-Section Public
-
- //
- // Error codes
- //
-
- - no_error:INTEGER <- `GL_NO_ERROR`:INTEGER;
- - invalid_enum:INTEGER <- `GL_INVALID_ENUM`:INTEGER;
- - invalid_value:INTEGER <- `GL_INVALID_VALUE`:INTEGER;
- - invalid_operation:INTEGER <- `GL_INVALID_OPERATION`:INTEGER;
- - stack_overflow:INTEGER <- `GL_STACK_OVERFLOW`:INTEGER;
- - stack_underflow:INTEGER <- `GL_STACK_UNDERFLOW`:INTEGER;
- - out_of_memory:INTEGER <- `GL_OUT_OF_MEMORY`:INTEGER;
-
-
- - get:INTEGER <-
- // return current error state variable
- (
- last_error := `glGetError()`:INTEGER;
- last_error
- );
-
-
- - get buffer:STRING from code:INTEGER <-
- // return details of error
- ( + str:NATIVE_ARRAY[CHARACTER];
- + i:INTEGER;
-
- str := `gluErrorString(@code)`:NATIVE_ARRAY[CHARACTER];
- {str.item i != '\0'}.while_do {
- // copy names of supported extensions
-
- buffer.add_last (str.item i);
- i := i+1;
- };
- );
\ No newline at end of file
diff --git a/opengl/gl_evaluator1d.li b/opengl/gl_evaluator1d.li
deleted file mode 100644
index a4fbdd8..0000000
--- a/opengl/gl_evaluator1d.li
+++ /dev/null
@@ -1,95 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_EVALUATOR1D;
-
- - comment := "Maps a curve line";
-
-Section Inherit
-
- + parent_evaluator1d:Expanded EVALUATOR1D;
-
-Section Public
-
- // types of the control points
- - vertex3:INTEGER <- `GL_MAP1_VERTEX_3`:INTEGER;
- - vertex4:INTEGER <- `GL_MAP1_VERTEX_4`:INTEGER;
- - index:INTEGER <- `GL_MAP1_INDEX`:INTEGER;
- - normal:INTEGER <- `GL_MAP1_NORMAL`:INTEGER;
- - color4:INTEGER <- `GL_MAP1_COLOR_4`:INTEGER;
- - texture_coord1:INTEGER <- `GL_MAP1_TEXTURE_COORD_1`:INTEGER;
- - texture_coord2:INTEGER <- `GL_MAP1_TEXTURE_COORD_2`:INTEGER;
- - texture_coord3:INTEGER <- `GL_MAP1_TEXTURE_COORD_3`:INTEGER;
- - texture_coord4:INTEGER <- `GL_MAP1_TEXTURE_COORD_4`:INTEGER;
-
- // mesh drawing modes
- - line:INTEGER <- `GL_LINE`:INTEGER;
- - point:INTEGER <- `GL_POINT`:INTEGER;
-
-
- - enable <-
- (
- + mode:INTEGER;
-
- mode := type;
- parent_state.enable;
- `glEnable(@mode)`;
- );
-
- - disable <-
- (
- + mode:INTEGER;
-
- mode := type;
- parent_state.disable;
- `glDisable(@mode)`;
- );
-
- - map (n_points,point_size:INTEGER) range (t1,t2:REAL_32) <-
- (
- + mode:INTEGER;
- + p:POINTER;
-
- mode := type;
- p := control_points.to_external;
- `glMap1f(@mode, @t1, @t2, @point_size, @n_points, @p)`;
- );
-
- // generate a point for the parametric value 'val'
- - evaluate val:REAL_32 <-
- (
- `glEvalCoord1f(@val)`;
- );
-
- // auto generate n points evenly spaced between (t1,t2)
- - generate_grid nb_points:INTEGER between (t1,t2:REAL_32) <-
- (
- `glMapGrid1f(@nb_points, @t1, @t2)`;
- );
-
- // Warning: mode is defined in the vertex buffer prototype
- - evaluate_mesh mode:INTEGER from start:INTEGER to end:INTEGER <-
- (
- `glEvalMesh1(@mode, @start, @end)`;
- );
-
\ No newline at end of file
diff --git a/opengl/gl_evaluator2d.li b/opengl/gl_evaluator2d.li
deleted file mode 100644
index 9419d72..0000000
--- a/opengl/gl_evaluator2d.li
+++ /dev/null
@@ -1,91 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_EVALUATOR2D;
-
- - comment := "Maps a spline surface";
-
-Section Inherit
-
- + parent_evaluator2d:Expanded EVALUATOR2D;
-
-Section Public
-
- // types of the control points
- - vertex3:INTEGER <- `GL_MAP2_VERTEX_3`:INTEGER;
- - vertex4:INTEGER <- `GL_MAP2_VERTEX_4`:INTEGER;
- - index:INTEGER <- `GL_MAP2_INDEX`:INTEGER;
- - normal:INTEGER <- `GL_MAP2_NORMAL`:INTEGER;
- - color4:INTEGER <- `GL_MAP2_COLOR_4`:INTEGER;
- - texture_coord1:INTEGER <- `GL_MAP2_TEXTURE_COORD_1`:INTEGER;
- - texture_coord2:INTEGER <- `GL_MAP2_TEXTURE_COORD_2`:INTEGER;
- - texture_coord3:INTEGER <- `GL_MAP2_TEXTURE_COORD_3`:INTEGER;
- - texture_coord4:INTEGER <- `GL_MAP2_TEXTURE_COORD_4`:INTEGER;
-
- // mesh drawing modes
- - line:INTEGER <- `GL_LINE`:INTEGER;
- - point:INTEGER <- `GL_POINT`:INTEGER;
- - fill:INTEGER <- `GL_FILL`:INTEGER;
-
- - enable <-
- (
- + mode:INTEGER;
-
- mode := type;
- parent_state.enable;
- `glEnable(@mode)`;
- );
-
- - disable <-
- (
- + mode:INTEGER;
-
- mode := type;
- parent_state.disable;
- `glDisable(@mode)`;
- );
-
- - map (u_order,u_size:INTEGER) and (v_order,v_size:INTEGER) range (u1,v1:REAL_32) to (u2,v2:REAL_32) <-
- (
- + mode:INTEGER;
- + p:POINTER;
-
- mode := type;
- p := control_points.to_external;
- `glMap2f(@mode, at u1, at u2, at u_size, at u_order, at v1, at v2, at v_size, at v_order, at p)`;
- );
-
- - evaluate (x,y:REAL_32) <-
- (
- `glEvalCoord2f(@x, at y)`;
- );
-
- - generate_grid (w,h:INTEGER) between (u1,u2:REAL_32) and (v1,v2:REAL_32)<-
- (
- `glMapGrid2f(@w, at u1, at u2, at h, at v1, at v2)`;
- );
-
- - evaluate_mesh mode:INTEGER from (start1,start2:INTEGER) to (end1,end2:INTEGER) <-
- (
- `glEvalMesh2(@mode, @start1, @end1, @start2, @end2)`;
- );
\ No newline at end of file
diff --git a/opengl/gl_extension.li b/opengl/gl_extension.li
deleted file mode 100644
index 04922c3..0000000
--- a/opengl/gl_extension.li
+++ /dev/null
@@ -1,72 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_EXTENSION;
-
- - comment := "OpenGL ARB extensions manager";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - extension_names:STRING;
-
- - name:STRING_CONSTANT <- STRING_CONSTANT;
-
-
- - create :SELF <-
- // dont clone prototype
- ( + result:SELF;
- (SELF.is_supported).if {
- result := SELF;
- result.make;
- };
- result
- );
-
- - make <- deferred;
-
- - is_supported:BOOLEAN <-
- (
- + extensions:NATIVE_ARRAY[CHARACTER];
- + i:INTEGER;
- + result:BOOLEAN;
-
- (extension_names = NULL).if {
- extensions := `glGetString(GL_EXTENSIONS)`:NATIVE_ARRAY[CHARACTER];
- extension_names := STRING.create 256;
-
- {extensions.item i != '\0'}.while_do {
- // copy names of supported extensions
-
- extension_names.add_last (extensions.item i);
- i := i+1;
- };
- };
- (extension_names.has_substring name).if {
- result := TRUE;
- };
- result
- );
\ No newline at end of file
diff --git a/opengl/gl_fog.li b/opengl/gl_fog.li
deleted file mode 100644
index 3cced08..0000000
--- a/opengl/gl_fog.li
+++ /dev/null
@@ -1,84 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_FOG;
-
- - comment := "Opengl Fog";
-
-Section Inherit
-
- + parent_fog:Expanded FOG;
-
-Section Public
-
- - enable <-
- (
- parent_state.enable;
- `glEnable(GL_FOG)`;
- );
-
- - disable <-
- (
- parent_state.disable;
- `glDisable(GL_FOG)`;
- );
-
- - push_attrib <-
- (
- `glPushAttrib(GL_ENABLE_BIT)`;
- );
-
- - pop_attrib <-
- (
- `glPopAttrib()`;
- );
-
- - render <-
- (
- + m:INTEGER;
- + p:POINTER;
- + r:REAL_32;
-
- (fogmode = filter_linear).if {
- m := `GL_LINEAR`:INTEGER;
- } else {
- m := `GL_EXP2`:INTEGER; // GL_EXP for old pc
- };
- `glFogi(GL_FOG_MODE, @m)`;
-
- p := color.getv.to_external;
- `glFogfv(GL_FOG_COLOR, @p)`;
-
- r := density;
- `glFogf(GL_FOG_DENSITY, @r)`;
-
- `glHint(GL_FOG_HINT, GL_DONT_CARE)`; // GL_DONT_CARE, GL_NICEST or GL_FASTEST
- r := start;
- `glFogf(GL_FOG_START, @r)`;
-
- r := end;
- `glFogf(GL_FOG_END, @r)`;
- `glEnable(GL_FOG)`;
- );
-
-
\ No newline at end of file
diff --git a/opengl/gl_font_abstract.li b/opengl/gl_font_abstract.li
deleted file mode 100644
index a992fca..0000000
--- a/opengl/gl_font_abstract.li
+++ /dev/null
@@ -1,116 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_FONT_ABSTRACT;
-
- - comment := "OpenGl rendered font";
-
-Section Inherit
-
- + parent_font:Expanded FONT;
-
-Section Public
-
- + base:UINTEGER_32; // GL base display list
- + text_mode:GL_DISPLAY_LIST;
-
- - unload <-
- (
- + b:UINTEGER_32;
- + n:INTEGER;
-
- b := base;
- n := nb_chars;
- `glDeleteLists(@b, @n)`;
-
- text_mode.destroy;
- );
-
- - enable <-
- (
- + b:INTEGER;
- + w,h:INTEGER;
-
- (text_mode = NULL).if {
- // not loaded
-
- b := base;
- w := OPENGL.viewport.width;
- h := OPENGL.viewport.height;
-
- text_mode := GL_DISPLAY_LIST.create {
- `glListBase(@b-32)`;
-
- `glPushAttrib(GL_ENABLE_BIT)`;// push states flags
-
- //Set projection matrix
- `glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
- gluOrtho2D(0.0f, @w, @h, 0.0f);`;
-
- //Set modelview matrix
- `glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
- glLoadIdentity();`;
-
- //Set states
- `glDisable(GL_DEPTH_TEST)`;
- `glDisable(GL_BLEND)`;
- `glDisable(GL_TEXTURE_2D)`;
- `glDisable (GL_CULL_FACE)`;
- };
- };
- text_mode.call;
- );
-
- - disable <-
- (
- //restore matrices
- `glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();`;
-
- //reset other states
- `glListBase(0)`;
- `glPopAttrib()`;
- );
-
- - print text:ABSTRACT_STRING at (x,y:INTEGER) <-
- (
- + b:UINTEGER_32;
- + n:INTEGER;
- + txt:NATIVE_ARRAY[CHARACTER];
-
- txt := text.to_external;
- n := text.count;
- b := base;
-
- `glListBase(@b - 32)`;
-
- //Print the text
- `glRasterPos2i(@x, @y)`;
- `glCallLists(@n, GL_UNSIGNED_BYTE, @txt)`;
- );
-
\ No newline at end of file
diff --git a/opengl/gl_index_buffer.li b/opengl/gl_index_buffer.li
deleted file mode 100644
index 73f2463..0000000
--- a/opengl/gl_index_buffer.li
+++ /dev/null
@@ -1,106 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_INDEX_BUFFER;
-
-Section Inherit
-
- - parent_index_buffer:INDEX_BUFFER := INDEX_BUFFER;
-
-Section Public
-
- + index:FAST_ARRAY[UINTEGER_16];
-
- + index_id:UINTEGER_32;
-
-
- - make sz:INTEGER <-
- (
- index := FAST_ARRAY[UINTEGER_16].create_with_capacity sz;
- );
-
- - build <-
- (
- + p:POINTER;
-
- (OPENGL.arb_vertex_buffer_object != NULL).if {
- // create index array
- (index.count > 0).if {
- index_id := OPENGL.arb_vertex_buffer_object.genbuffer;
- OPENGL.arb_vertex_buffer_object.bind_index index_id;
-
- // load data into GPU cache
- p := index.to_external;
- OPENGL.arb_vertex_buffer_object.buffer_index_data p size (index.count*UINTEGER_16.object_size);
- };
- };
- );
-
- - bind <-
- (
- (index.count > 0).if {
- (OPENGL.arb_vertex_buffer_object != NULL).if {
- // use GPU index buffer
- OPENGL.arb_vertex_buffer_object.bind_index index_id;
- };
- };
- );
-
- - draw mode:INTEGER size sz:INTEGER <-
- (
- + p:POINTER;
-
- (OPENGL.arb_vertex_buffer_object != NULL).if {
- `glDrawElements (@mode, @sz, GL_UNSIGNED_SHORT, 0)`;
- } else {
- p := index.to_external;
- `glDrawElements (@mode, @sz, GL_UNSIGNED_SHORT, @p)`;
- };
- (OPENGL.arb_vertex_buffer_object != NULL).if {
- OPENGL.arb_vertex_buffer_object.disable_index;
- };
- );
-
- - begin_indices <-
- (
- );
-
- - end <-
- (
- build;
- );
-
- - add_index i:UINTEGER_16 <-
- (
- index.add_last i;
- );
-
- - destroy <-
- // bug!!!
- (
- (OPENGL.arb_vertex_buffer_object != NULL).if {
- (index.count > 0).if {
- OPENGL.arb_vertex_buffer_object.delete index_id;
- };
- };
- );
\ No newline at end of file
diff --git a/opengl/gl_light.li b/opengl/gl_light.li
deleted file mode 100644
index 7b5b694..0000000
--- a/opengl/gl_light.li
+++ /dev/null
@@ -1,131 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_LIGHT;
-
- - comment := "OpenGL Light";
-
-Section Inherit
-
- + parent_light:Expanded LIGHT;
-
-Section Public
-
- // OpenGl allow only 8 differents lights at a time
- - nb_lights:INTEGER;
-
- + id_light:INTEGER; // OpenGL id: LIGHT0 - LIGHT7
-
- - make (a,d,s:COLOR, pos:VECTOR3[REAL_32]) <-
- (
- parent_light.make (a,d,s,pos);
- (nb_lights < 8).if {
-
- id_light := `GL_LIGHT0`:INTEGER + nb_lights;
-
- nb_lights := nb_lights + 1;
- } else {
- GL_ERROR.print "too much lights";
- };
- );
-
- - enable <-
- (
- + id:INTEGER;
- + p:POINTER;
- + vec:FAST_ARRAY[REAL_32];
-
- parent_state.enable;
- id := id_light;
-
- modified.if {
- p := ambient.getv.to_external;
- `glLightfv(@id, GL_AMBIENT, @p)`;
-
- p := diffuse.getv.to_external;
- `glLightfv(@id, GL_DIFFUSE, @p)`;
-
- p := specular.getv.to_external;
- `glLightfv(@id, GL_SPECULAR, @p)`;
-
- vec := position.getv;
- is_directional.if {
- vec.add_last 0.0;
- p := vec.to_external;
- `glLightfv(@id, GL_POSITION, @p)`;
- } else {
- vec.add_last 1.0;
- p := vec.to_external;
- `glLightfv(@id, GL_POSITION, @p)`;
- };
- modified := FALSE;
- };
- `glEnable(@id)`;
- );
-
- - disable <-
- (
- + id:INTEGER;
-
- id := id_light;
- `glDisable(@id)`;
- );
-
- - set_model_ambient col:RGBA <-
- ( + p:POINTER;
- p := col.getv.to_external;
- `glLightModelfv(GL_LIGHT_MODEL_AMBIENT, @p)`;
- );
-
- - set_model_local_viewer b:BOOLEAN <-
- (
- `glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, @b)`;
- );
-
- - set_model_two_side b:BOOLEAN <-
- (
- `glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, @b)`;
- );
-
-
- - push_attrib <-
- (
- `glPushAttrib(GL_ENABLE_BIT)`;
- );
-
- - pop_attrib <-
- (
- `glPopAttrib()`;
- );
-
-
- - enable_default_light <-
- (
- `glEnable(GL_LIGHT0)`;
- );
-
- - disable_default_light <-
- (
- `glDisable(GL_LIGHT0)`;
- );
-
\ No newline at end of file
diff --git a/opengl/gl_material.li b/opengl/gl_material.li
deleted file mode 100644
index cfc8053..0000000
--- a/opengl/gl_material.li
+++ /dev/null
@@ -1,72 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_MATERIAL;
-
- - comment := "Material: lighting properties of an object";
-
-Section Inherit
-
- + parent_material:Expanded MATERIAL;
-
-Section Public
-
- - apply mode:INTEGER <-
- (
- + m:INTEGER;
- + p:POINTER;
- + val:REAL_32;
-
- (mode = mode_front).if {
- m := `GL_FRONT`:INTEGER;
- }.elseif {mode = mode_back} then {
- m := `GL_BACK`:INTEGER;
- } else {
- m := `GL_FRONT_AND_BACK`:INTEGER;
- };
-
- p := ambient.getv.to_external;
- `glMaterialfv(@m, GL_AMBIENT, @p)`;
-
- p := diffuse.getv.to_external;
- `glMaterialfv(@m, GL_DIFFUSE, @p)`;
-
- p := specular.getv.to_external;
- `glMaterialfv(@m, GL_SPECULAR, @p)`;
-
- val := shininess;
- `glMaterialf(@m, GL_SHININESS, @val)`;
-
- p := emission.getv.to_external;
- `glMaterialfv(@m, GL_EMISSION, @p)`;
- );
-
- - enable_color <-
- (
- `glEnable(GL_COLOR_MATERIAL)`;
- );
-
- - disable_color <-
- (
- `glDisable(GL_COLOR_MATERIAL)`;
- );
\ No newline at end of file
diff --git a/opengl/gl_name_stack.li b/opengl/gl_name_stack.li
deleted file mode 100644
index e7bcbf8..0000000
--- a/opengl/gl_name_stack.li
+++ /dev/null
@@ -1,52 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_NAME_STACK;
-
- - comment := "Used by pickable objects using Selection buffer";
-
-Section Inherit
-
- - parent_name_stack:NAME_STACK := NAME_STACK;
-
-Section Public
-
- - init <-
- (
- `glInitNames()`;
- );
-
- - load n:UINTEGER_32 <-
- (
- `glLoadName(@n)`;
- );
-
- - push n:UINTEGER_32 <-
- (
- `glPushName(@n)`;
- );
-
- - pop <-
- (
- `glPopName()`;
- );
\ No newline at end of file
diff --git a/opengl/gl_plane.li b/opengl/gl_plane.li
deleted file mode 100644
index 92f6466..0000000
--- a/opengl/gl_plane.li
+++ /dev/null
@@ -1,82 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_PLANE;
-
- - comment := "a*x+b*y+c*z+d >= 0 clipping plane";
-
-Section Inherit
-
- + parent_plane:Expanded PLANE;
-
-Section Public
-
- - nb_planes:INTEGER;
-
- + id:INTEGER; // OpenGL plane id
-
- - load_clipping_plane <-
- // called while plane creation
- (
- // OpenGl allow only 6 clipping planes at a time.
- (nb_planes >= 6).if {
- GL_ERROR.print "too much clipping planes";
- };
- id := `GL_CLIP_PLANE0`:INTEGER + nb_planes;
- nb_planes := nb_planes + 1;
- );
-
- - clip <-
- (
- + i:INTEGER;
- + p:POINTER;
-
- enable;
-
- i := id;
- `glEnable(@i)`;
-
- p := getv.to_external;
- `glClipPlane(@i, @p)`;
- );
-
- - push_attrib <-
- (
- `glPushAttrib(GL_ENABLE_BIT)`;
- );
-
- - pop_attrib <-
- (
- `glPopAttrib()`;
- );
-
- - unclip <-
- (
- + i:INTEGER;
-
- disable;
-
- i := id;
- `glDisable(@i)`;
- );
-
\ No newline at end of file
diff --git a/opengl/gl_quadrics.li b/opengl/gl_quadrics.li
deleted file mode 100644
index be24f21..0000000
--- a/opengl/gl_quadrics.li
+++ /dev/null
@@ -1,78 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_QUADRICS;
-
- - comment := "glu quadrics";
-
- - external := `GLUquadric* quadric;`;
-
-Section Inherit
-
- - parent_quadrics:QUADRICS := QUADRICS;
-
-Section Public
-
- - fill_mode:INTEGER <- `GLU_FILL`:INTEGER;
- - point_mode:INTEGER <- `GLU_POINT`:INTEGER;
- - line_mode:INTEGER <- `GLU_LINE`:INTEGER;
-
- - begin_quadric <-
- (
- `quadric = gluNewQuadric()`;
- );
-
- - end_quadric <-
- (
- `gluDeleteQuadric(quadric)`;
- );
-
- - enable_texture <-
- (
- `gluQuadricTexture(quadric,GL_TRUE)`;
- );
-
- - disable_texture <-
- (
- `gluQuadricTexture(quadric,GL_FALSE)`;
- );
-
- - set_style style:INTEGER <-
- (
- `gluQuadricDrawStyle(quadric, at style)`;
- );
-
- - draw_sphere (radius,slices,stacks:REAL_32) <-
- (
- `gluSphere(quadric, at radius, at slices, at stacks)`;
- );
-
- - draw_cylinder (base,top,height,slices,stacks:REAL_32) <-
- (
- `gluCylinder(quadric, at base, at top, at height, at slices, at stacks)`;
- );
-
- - draw_disk (inner,outer,slices,loops:REAL_32) <-
- (
- `gluDisk(quadric, at inner, at outer, at slices, at loops)`;
- );
diff --git a/opengl/gl_scissor.li b/opengl/gl_scissor.li
deleted file mode 100644
index e66a6de..0000000
--- a/opengl/gl_scissor.li
+++ /dev/null
@@ -1,68 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_SCISSOR;
-
- - comment := "Viewport clipping";
-
-Section Inherit
-
- - parent_scissor:SCISSOR := SCISSOR;
-
-Section Public
-
- - enable <-
- (
- parent_state.enable;
- `glEnable(GL_SCISSOR_TEST)`;
- );
-
- - disable <-
- (
- parent_state.disable;
- `glDisable(GL_SCISSOR_TEST)`;
- );
-
- - cut v:VIEWPORT <-
- (
- + x,y,w,h:UINTEGER_32;
-
- x := v.x0;
- y := v.y0;
- w := v.width;
- h := v.height;
- `glScissor(@x, at y, at w, at h)`;
- );
-
- - cut4i (x,y,width,height:UINTEGER_32) <-
- (
- `glScissor(@x, at y, at width, at height)`;
- );
-
- - get_scissor_box viewport:VIEWPORT <- // ?????
- (
- + p:POINTER;
-
- p := viewport.getv.to_external;
- `glGetIntegerv(GL_SCISSOR_BOX, @p)`;
- );
\ No newline at end of file
diff --git a/opengl/gl_shader.li b/opengl/gl_shader.li
deleted file mode 100644
index 28b8528..0000000
--- a/opengl/gl_shader.li
+++ /dev/null
@@ -1,200 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_SHADER;
-
- - comment := "OpengGL GLSL Shader";
-
-Section Inherit
-
- - parent_shader:SHADER := SHADER;
-
-Section Public
-
- //
- // OpengGL ID handlers
- //
- + vertex_shader_id:UINTEGER_32;
- + fragment_shader_id:UINTEGER_32;
- + program_id:UINTEGER_32;
-
- + is_loaded:BOOLEAN;
-
-
- - make (vertex_shader,fragment_shader:ABSTRACT_STRING) <-
- (
- + source:STRING;
-
- // create shader program
- program_id := OPENGL.arb_shader_object.create_program;
-
- //
- // vertex shader
- //
- source := get_source vertex_shader;
- (source != NULL).if {
-
- // create shader object
- vertex_shader_id := OPENGL.arb_shader_object.create_vertex_shader;
-
- // set source code
- OPENGL.arb_shader_object.shader_source vertex_shader_id string source;
-
- // compile shader
- OPENGL.arb_shader_object.compile vertex_shader_id;
-
- // attach shader to program
- OPENGL.arb_shader_object.attach_object (program_id, vertex_shader_id);
-
- is_loaded := TRUE;
- };
-
- //
- // fragment shader
- //
- source := get_source fragment_shader;
- (source != NULL).if {
-
- // create shader object
- fragment_shader_id := OPENGL.arb_shader_object.create_fragment_shader;
-
- // set source code
- OPENGL.arb_shader_object.shader_source fragment_shader_id string source;
-
- // compile shader
- OPENGL.arb_shader_object.compile fragment_shader_id;
-
- // attach shader to program
- OPENGL.arb_shader_object.attach_object (program_id, fragment_shader_id);
-
- is_loaded := TRUE;
- };
-
- is_loaded.if {
- // link program
- OPENGL.arb_shader_object.link_program program_id;
- };
- );
-
- - has_compiled:BOOLEAN <-
- (
- (OPENGL.arb_shader_object.get_infolog_status vertex_shader_id = 1) && {OPENGL.arb_shader_object.get_infolog_status fragment_shader_id = 1}
- );
-
- - get_infolog buffer:STRING <-
- (
- + sz:UINTEGER_32;
- + tmp:FAST_ARRAY[CHARACTER];
-
- sz := OPENGL.arb_shader_object.get_infolog_length vertex_shader_id;
- tmp := FAST_ARRAY[CHARACTER].create sz;
-
- OPENGL.arb_shader_object.get_infolog vertex_shader_id in tmp size sz;
- tmp.lower.to (tmp.upper) do { i:INTEGER;
- buffer.add_last (tmp.item i);
- };
-
- sz := OPENGL.arb_shader_object.get_infolog_length fragment_shader_id;
- tmp := FAST_ARRAY[CHARACTER].create sz;
-
- OPENGL.arb_shader_object.get_infolog fragment_shader_id in tmp size sz;
- tmp.lower.to (tmp.upper) do { i:INTEGER;
- buffer.add_last (tmp.item i);
- };
- );
-
- - enable <-
- (
- is_loaded.if {
- // use program
- OPENGL.arb_shader_object.use_program program_id;
- };
- );
-
- - disable <-
- (
- is_loaded.if {
- OPENGL.arb_shader_object.use_program 0;
- };
- );
-
- - get_uniform_location varname:ABSTRACT_STRING :INTEGER <-
- (
- OPENGL.arb_shader_object.get_uniform_location (program_id, varname)
- );
-
- - set_uniform1f loc:INTEGER to val:REAL_32 <-
- (
- OPENGL.arb_shader_object.uniform1f (loc, val);
- );
-
- - set_uniform2f loc:INTEGER to (v0,v1:REAL_32) <-
- (
- OPENGL.arb_shader_object.uniform2f (loc, v0,v1);
- );
-
- - set_uniform3f loc:INTEGER to (v0,v1,v2:REAL_32) <-
- (
- OPENGL.arb_shader_object.uniform3f (loc, v0,v1,v2);
- );
-
- - set_uniform4f loc:INTEGER to (v0,v1,v2,v3:REAL_32) <-
- (
- OPENGL.arb_shader_object.uniform4f (loc, v0,v1,v2,v3);
- );
-
- - bind_sampler tex:TEXTURE unit u:INTEGER location loc:INTEGER <-
- (
- tex.bind_unit u;
- set_uniform1f loc to u;
- );
-
- - delete <-
- (
- OPENGL.arb_shader_object.delete_object vertex_shader_id;
- OPENGL.arb_shader_object.delete_object fragment_shader_id;
- OPENGL.arb_shader_object.delete_object program_id;
- );
-
-Section Private
-
- - get_source filename:ABSTRACT_STRING :STRING <-
- (
- + file:POINTER;
- + source:STRING;
- + sz:INTEGER;
-
- (filename != NULL).if {
- // read shader source code
- file := FS_MIN.open_read filename;
- (file != NULL).if {
- sz := FS_MIN.file_size file;
- source := STRING.create (sz+1);
-
- FS_MIN.read file in source size sz;
- FS_MIN.close file;
- };
- };
- source
- );
-
\ No newline at end of file
diff --git a/opengl/gl_stencil_buffer.li b/opengl/gl_stencil_buffer.li
deleted file mode 100644
index f244c3d..0000000
--- a/opengl/gl_stencil_buffer.li
+++ /dev/null
@@ -1,102 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_STENCIL_BUFFER;
-
- - comment := "Opengl Stencil Buffer";
-
-Section Inherit
-
- - parent_buffer:STENCIL_BUFFER := STENCIL_BUFFER;
-
-Section Public
-
- // pixel test functions
- - always:INTEGER <- `GL_ALWAYS`:INTEGER;
- - never:INTEGER <- `GL_NEVER`:INTEGER;
- - less:INTEGER <- `GL_LESS`:INTEGER;
- - lequal:INTEGER <- `GL_LEQUAL`:INTEGER;
- - equal:INTEGER <- `GL_EQUAL`:INTEGER;
- - gequal:INTEGER <- `GL_GEQUAL`:INTEGER;
- - greater:INTEGER <- `GL_GREATER`:INTEGER;
- - notequal:INTEGER <- `GL_NOTEQUAL`:INTEGER;
-
- // stencil operations
- - keep:INTEGER <- `GL_KEEP`:INTEGER;
- - replace:INTEGER <- `GL_REPLACE`:INTEGER;
- - incr:INTEGER <- `GL_INCR`:INTEGER;
- - decr:INTEGER <- `GL_DECR`:INTEGER;
- - invert:INTEGER <- `GL_INVERT`:INTEGER;
-
-
- - enable <-
- (
- parent_state.enable;
- `glEnable (GL_STENCIL_TEST)`;
- );
-
- - disable <-
- (
- parent_state.disable;
- `glDisable (GL_STENCIL_TEST)`;
- );
-
- - push_attrib <-
- (
- `glPushAttrib(GL_ENABLE_BIT)`;
- );
-
- - pop_attrib <-
- (
- `glPopAttrib()`;
- );
-
- - set_clear_value val:REAL_32 <-
- (
- `glClearStencil(@val)`;
- );
-
- - clear <-
- (
- `glClear(GL_STENCIL_BUFFER_BIT)`;
- );
-
- - set_function f:INTEGER value val:INTEGER_32 mask m:UINTEGER_32 <-
- (
- `glStencilFunc(@f, @val, @m)`;
- );
-
- - when_pass op1:INTEGER when_fail op2:INTEGER when_zfail op3:INTEGER <-
- (
- `glStencilOp(@op2, @op3, @op1)`;
- );
-
- - lock <-
- // stencil buffer is read-only
- (
- `glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP)`;
- );
-
- - unlock <-
- (
- );
\ No newline at end of file
diff --git a/opengl/gl_texture1d.li b/opengl/gl_texture1d.li
deleted file mode 100644
index 044cbce..0000000
--- a/opengl/gl_texture1d.li
+++ /dev/null
@@ -1,117 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_TEXTURE1D;
-
- - comment := "OpenGL 1D texture";
-
-Section Inherit
-
- + parent_abstract_texture:Expanded GL_ABSTRACT_TEXTURE;
-
-Section Public
-
- - draw (x,y:INTEGER) <- // fixme
- (
- + w,h:INTEGER;
-
- w := width;
- h := height;
-
- bind;
-
- `glBegin (GL_QUADS);
- glTexCoord2f (0, 0);
- glVertex2f (@x, @y);
- glTexCoord2f (1, 0);
- glVertex2f (@x + @w, @y);
- glTexCoord2f (1, 1);
- glVertex2f (@x + @w, @y + @h);
- glTexCoord2f (0, 1);
- glVertex2f (@x, @y + @h);
- glEnd ();
- `;
- );
-
- - draw_strech (x,y,w,h:INTEGER) <- // fixme
- (
- bind;
-
- `glBegin (GL_QUADS);
- glTexCoord2f (0, 0);
- glVertex2f (@x, @y);
- glTexCoord2f (1, 0);
- glVertex2f (@x + @w, @y);
- glTexCoord2f (1, 1);
- glVertex2f (@x + @w, @y + @h);
- glTexCoord2f (0, 1);
- glVertex2f (@x, @y + @h);
- glEnd ();
- `;
- );
-
- - replace_region (x,y,w,h:INTEGER) with_data (pixels:FAST_ARRAY[UINTEGER_8],type:INTEGER) <-
- // y & height are always 1
- ( + p:POINTER;
-
- p := pixels.to_external;
- `glTexSubImage1D(GL_TEXTURE_1D, 0, @x, @w, @type, GL_UNSIGNED_BYTE, @p)`;
- );
-
- - replace_region (x,y,w,h:INTEGER) with image:IMAGE <-
- (
- + p:POINTER;
- + type:INTEGER;
-
- type := image.channels;
- p := image.get_pixels.to_external;
- `glTexSubImage1D(GL_TEXTURE_1D, 0, @x, @w, @type, GL_UNSIGNED_BYTE, @p)`;
- );
-
- - replace_region (x,y,w,h:INTEGER) with_framebuffer_at (x0,y0:INTEGER) <-
- // w and y = 1
- (
- `glCopyTexSubImage1D(GL_TEXTURE_1D, 0, @x, @x0, at y0, @w)`;
- );
-
-Section GL_ABSTRACT_TEXTURE
-
- - target:INTEGER <- `GL_TEXTURE_1D`:INTEGER;
-
- - raw_create (ch,w,h,type:INTEGER) data p:POINTER <-
- (
- `glTexImage1D(GL_TEXTURE_1D, 0, @ch, @w, 0, @type, GL_UNSIGNED_BYTE, @p)`;
- );
-
- - raw_create_mipmap (ch,w,h,type:INTEGER) data p:POINTER <-
- (
- `gluBuild1DMipmaps(GL_TEXTURE_1D, @ch, @w, @type, GL_UNSIGNED_BYTE, @p)`;
- );
-
- - raw_copy (x,y,w,h:INTEGER) type t:INTEGER <-
- (
- `glCopyTexImage1D(GL_TEXTURE_1D, 0, @t, @x, @y, @w, @h, 0)`;
- );
-
-
-
\ No newline at end of file
diff --git a/opengl/gl_texture2d.li b/opengl/gl_texture2d.li
deleted file mode 100644
index 2d99b8d..0000000
--- a/opengl/gl_texture2d.li
+++ /dev/null
@@ -1,116 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_TEXTURE2D;
-
- - comment := "OpenGL 2D texture";
-
-Section Inherit
-
- + parent_abstract_texture:Expanded GL_ABSTRACT_TEXTURE;
-
-Section Public
-
- - draw (x,y:INTEGER) <-
- (
- + w,h:INTEGER;
-
- w := width;
- h := height;
-
- bind;
-
- `glBegin (GL_QUADS);
- glTexCoord2f (0, 0);
- glVertex2f (@x, @y);
- glTexCoord2f (1, 0);
- glVertex2f (@x + @w, @y);
- glTexCoord2f (1, 1);
- glVertex2f (@x + @w, @y + @h);
- glTexCoord2f (0, 1);
- glVertex2f (@x, @y + @h);
- glEnd ();
- `;
- );
-
- - draw_strech (x,y,w,h:INTEGER) <-
- (
- bind;
-
- `glBegin (GL_QUADS);
- glTexCoord2f (0, 0);
- glVertex2f (@x, @y);
- glTexCoord2f (1, 0);
- glVertex2f (@x + @w, @y);
- glTexCoord2f (1, 1);
- glVertex2f (@x + @w, @y + @h);
- glTexCoord2f (0, 1);
- glVertex2f (@x, @y + @h);
- glEnd ();
- `;
- );
-
- - replace_region (x,y,w,h:INTEGER) with_data (pixels:FAST_ARRAY[UINTEGER_8],type:INTEGER) <-
- ( + p:POINTER;
-
- p := pixels.to_external;
- `glTexSubImage2D(GL_TEXTURE_2D, 0, @x, @y, @w, @h, @type, GL_UNSIGNED_BYTE, @p)`;
- );
-
- - replace_region (x,y,w,h:INTEGER) with image:IMAGE <-
- (
- + p:POINTER;
- + type:INTEGER;
-
- type := image.channels;
- p := image.get_pixels.to_external;
- `glTexSubImage2D(GL_TEXTURE_2D, 0, @x, @y, @w, @h, @type, GL_UNSIGNED_BYTE, @p)`;
- );
-
- - replace_region (x,y,w,h:INTEGER) with_framebuffer_at (x0,y0:INTEGER) <-
- ( + t:INTEGER;
-
- t := channels;
- `glCopyTexSubImage2D(GL_TEXTURE_2D, 0, @x, at y, @x0, at y0, @w, at h)`;
- // `glCopyTexImage2D(GL_TEXTURE_2D, 0, @t, @x, @y, @w, @h, 0)`;
- );
-
-Section GL_ABSTRACT_TEXTURE
-
- - target:INTEGER <- `GL_TEXTURE_2D`:INTEGER;
-
- - raw_create (ch,w,h,type:INTEGER) data p:POINTER <-
- (
- `glTexImage2D(GL_TEXTURE_2D, 0, @ch, @w, @h, 0, @type, GL_UNSIGNED_BYTE, @p)`;
- );
-
- - raw_create_mipmap (ch,w,h,type:INTEGER) data p:POINTER <-
- (
- `gluBuild2DMipmaps(GL_TEXTURE_2D, @ch, @w, @h, @type, GL_UNSIGNED_BYTE, @p)`;
- );
-
- - raw_copy (x,y,w,h:INTEGER) type t:INTEGER <-
- (
- `glCopyTexImage2D(GL_TEXTURE_2D, 0, @t, @x, @y, @w, @h, 0)`;
- );
-
\ No newline at end of file
diff --git a/opengl/gl_transform.li b/opengl/gl_transform.li
deleted file mode 100644
index 01c04cd..0000000
--- a/opengl/gl_transform.li
+++ /dev/null
@@ -1,215 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_TRANSFORM;
-
- - comment := "3 types of transformation: modelview, projection, viewport";
-
-Section Inherit
-
- - parent_transform:TRANSFORM := TRANSFORM;
-
-Section Public
-
- - load_identity <-
- // clear transformation
- (
- `glLoadIdentity()`;
- );
-
- - push_matrix <-
- (
- `glPushMatrix()`;
- );
-
- - pop_matrix <-
- (
- `glPopMatrix()`;
- );
-
- - load_matrix m:MATRIX4[REAL_32] <-
- ( + p:POINTER;
-
- p := m.to_external;
- `glLoadMatrixf(@p)`;
- );
-
- - mult_matrix_by m:MATRIX4[REAL_32] <-
- ( + p:POINTER;
-
- p := m.to_external;
- `glMultMatrixf(@p)`;
- );
-
- //
- // Viewing & Modeling transformations
- //
-
- - set_modelview_mode <-
- (
- `glMatrixMode(GL_MODELVIEW)`;
- );
-
- - translatef (x,y,z:REAL_32) <-
- (
- `glTranslatef (@x, at y, at z)`;
- );
-
- - rotatef (val,x,y,z:REAL_32) <-
- (
- `glRotatef (@val, at x, at y, at z)`;
- );
-
- - scalef (x,y,z:REAL_32) <-
- (
- `glScalef (@x, at y, at z)`;
- );
-
- - get_modelview matrix:MATRIX4[REAL_32] <-
- ( + p:POINTER;
-
- p := matrix.to_external;
- `glGetFloatv(GL_MODELVIEW_MATRIX, @p)`;
- );
-
- //
- // Projection transformations
- //
-
- - set_projection_mode <-
- (
- `glMatrixMode(GL_PROJECTION)`;
- );
-
- - get_projection matrix:MATRIX4[REAL_32] <-
- ( + p:POINTER;
-
- p := matrix.to_external;
- `glGetFloatv(GL_PROJECTION_MATRIX, @p)`;
- );
-
- - perspective (fovy,aspect,near,far:REAL_32) <-
- (
- `gluPerspective(@fovy, @aspect, @near, @far)`;
- );
-
- - frustum (left,right,bottom,top,near,far:REAL_32) <-
- (
- `glFrustum(@left, at right, at bottom, at top, at near, at far)`;
- );
-
- - orthographic (left,right,bottom,top,near,far:REAL_32) <-
- (
- `glOrtho(@left, at right, at bottom, at top, at near, at far)`;
- );
-
- - orthographic2d (left,right,bottom,top:REAL_32) <-
- (
- `gluOrtho2D(@left, at right, at bottom, at top)`;
- );
-
- - pickmatrix (x,y,w,h:UINTEGER_32) in v:VIEWPORT <-
- (
- + p:POINTER;
-
- p := v.getv.to_external;
- `gluPickMatrix(@x, @y, @w, @h, @p)`;
- );
-
- //
- // Viewport transformations
- //
-
- - set_viewport v:VIEWPORT <-
- (
- + x,y,w,h:UINTEGER_32;
-
- x := v.x0;
- y := v.y0;
- w := v.width;
- h := v.height;
- `glViewport(@x, at y, at w, at h)`;
- );
-
- - set_viewport4i (x,y,width,height:UINTEGER_32) <-
- (
- `glViewport(@x, at y, at width, at height)`;
- );
-
- - get_viewport viewport:VIEWPORT <- // ?????
- (
- + p:POINTER;
-
- p := viewport.getv.to_external;
- `glGetIntegerv(GL_VIEWPORT, @p)`;
- );
-
- //
- // Tranformation utility
- //
-
- - begin_ortho (w,h:INTEGER) <-
- (
- // define viewport
- set_viewport4i (0, 0, w, h);
-
- // modify projection
- set_projection_mode;
-
- // save old projection
- push_matrix;
-
- // clear our ortho projection
- load_identity;
-
- // set viewing volume
- orthographic (0, w, h, 0, -99999, 99999);
-
- // restore modelview mode
- set_modelview_mode;
-
- // clear tranformations
- load_identity;
-
- // disable states not suited for ortho mode
- `glDisable (GL_DEPTH_TEST); // fixme
- glDisable (GL_CULL_FACE);
- glDisable (GL_BLEND);
- glEnable (GL_ALPHA_TEST);
- glColor4f (1,1,1,1);`
- );
-
- - end_ortho <-
- (
- // modify projection
- set_projection_mode;
-
- // restore the previous matrix
- pop_matrix;
-
- // go back to normal mode
- set_modelview_mode;
- );
-
-
-
\ No newline at end of file
diff --git a/opengl/gl_vertex_array.li b/opengl/gl_vertex_array.li
deleted file mode 100644
index 47d3a5d..0000000
--- a/opengl/gl_vertex_array.li
+++ /dev/null
@@ -1,409 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_VERTEX_ARRAY;
-
-Section Inherit
-
- - parent_vertex_buffer:VERTEX_BUFFER := VERTEX_BUFFER;
-
-Section Public
-
- + vertex:FAST_ARRAY[REAL_32];
- + texels:FAST_ARRAY[REAL_32];
- + normals:FAST_ARRAY[REAL_32];
- + colors:FAST_ARRAY[REAL_32];
-
- + vertex_id:UINTEGER_32;
- + texels_id:UINTEGER_32;
- + normals_id:UINTEGER_32;
- + colors_id:UINTEGER_32;
-
- + drawing_mode:INTEGER;
-
- + capacity:INTEGER;
-
-
- - make sz:INTEGER <-
- (
- vertex := FAST_ARRAY[REAL_32].create_with_capacity sz;
- texels := FAST_ARRAY[REAL_32].create_with_capacity sz;
- normals := FAST_ARRAY[REAL_32].create_with_capacity sz;
- colors := FAST_ARRAY[REAL_32].create_with_capacity sz;
-
- capacity := sz;
- );
-
- - points:INTEGER <- `GL_POINTS`:INTEGER;
- - lines:INTEGER <- `GL_LINES`:INTEGER;
- - polygon:INTEGER <- `GL_POLYGON`:INTEGER;
- - triangles:INTEGER <- `GL_TRIANGLES`:INTEGER;
- - quads:INTEGER <- `GL_QUADS`:INTEGER;
- - line_strip:INTEGER <- `GL_LINE_STRIP`:INTEGER;
- - line_loop:INTEGER <- `GL_LINE_LOOP`:INTEGER;
- - triangle_strip:INTEGER <- `GL_TRIANGLE_STRIP`:INTEGER;
- - triangle_fan:INTEGER <- `GL_TRIANGLE_FAN`:INTEGER;
- - quad_strip:INTEGER <- `GL_QUAD_STRIP`:INTEGER;
-
-
- - build <-
- (
- + p:POINTER;
-
- (OPENGL.arb_vertex_buffer_object != NULL).if {
- // create vertex array
- (vertex.count > 0).if {
- vertex_id := OPENGL.arb_vertex_buffer_object.genbuffer;
- OPENGL.arb_vertex_buffer_object.bind vertex_id;
-
- // load data into GPU cache
- p := vertex.to_external;
- OPENGL.arb_vertex_buffer_object.buffer_data p size (3*vertex.count*REAL_32.object_size);
- };
- (texels.count > 0).if {
- texels_id := OPENGL.arb_vertex_buffer_object.genbuffer;
- OPENGL.arb_vertex_buffer_object.bind texels_id;
-
- // load data into GPU cache
- p := texels.to_external;
- OPENGL.arb_vertex_buffer_object.buffer_data p size (2*texels.count*REAL_32.object_size);
- };
- (colors.count > 0).if {
- colors_id := OPENGL.arb_vertex_buffer_object.genbuffer;
- OPENGL.arb_vertex_buffer_object.bind colors_id;
-
- // load data into GPU cache
- p := colors.to_external;
- OPENGL.arb_vertex_buffer_object.buffer_data p size (3*colors.count*REAL_32.object_size);
- };
- (normals.count > 0).if {
- normals_id := OPENGL.arb_vertex_buffer_object.genbuffer;
- OPENGL.arb_vertex_buffer_object.bind normals_id;
-
- // load data into GPU cache
- p := normals.to_external;
- OPENGL.arb_vertex_buffer_object.buffer_data p size (3*normals.count*REAL_32.object_size);
- };
- };
- );
-
- - disable <-
- (
- // disable pointers
- (vertex.count > 0).if {
- `glDisableClientState (GL_VERTEX_ARRAY)`;
- };
- (texels.count > 0).if {
- `glDisableClientState (GL_TEXTURE_COORD_ARRAY)`;
- };
- (colors.count > 0).if {
- `glDisableClientState (GL_COLOR_ARRAY)`;
- };
- (normals.count > 0).if {
- `glDisableClientState (GL_NORMAL_ARRAY)`;
- };
- );
-
- - draw <-
- (
- + sz,mode:INTEGER;
-
- // render all at once
- sz := capacity;
- mode := drawing_mode;
- `glDrawArrays (@mode, 0, @sz)`;
-
- disable;
- );
-
- - draw_using index_array:INDEX_BUFFER <-
- (
- index_array.bind;
- index_array.draw drawing_mode size capacity;
- disable;
- );
-
- - bind <-
- (
- + p:POINTER;
-
- (vertex.count > 0).if {
- `glEnableClientState(GL_VERTEX_ARRAY)`;
- (OPENGL.arb_vertex_buffer_object != NULL).if {
- // use GPU vertex buffer
- OPENGL.arb_vertex_buffer_object.bind vertex_id;
- `glVertexPointer(3, GL_FLOAT, 0, (char*)NULL)`;
- } else {
- p := vertex.to_external;
- `glVertexPointer(3, GL_FLOAT, 0, @p)`;
- };
- };
-
- (texels.count > 0).if {
- `glEnableClientState(GL_TEXTURE_COORD_ARRAY)`;
- (OPENGL.arb_vertex_buffer_object != NULL).if {
- OPENGL.arb_vertex_buffer_object.bind texels_id;
- `glTexCoordPointer(2, GL_FLOAT, 0, (char*)NULL)`;
- } else {
- p := texels.to_external;
- `glTexCoordPointer(2, GL_FLOAT, 0, @p)`;
- };
- };
-
- (colors.count > 0).if {
- `glEnableClientState(GL_COLOR_ARRAY)`;
- (OPENGL.arb_vertex_buffer_object != NULL).if {
- OPENGL.arb_vertex_buffer_object.bind colors_id;
- `glColorPointer(3, GL_FLOAT, 0, (char*)NULL)`;
- } else {
- p := colors.to_external;
- `glColorPointer(3, GL_FLOAT, 0, @p)`;
- };
- };
-
- (normals.count > 0).if {
- `glEnableClientState(GL_NORMAL_ARRAY)`;
- (OPENGL.arb_vertex_buffer_object != NULL).if {
- OPENGL.arb_vertex_buffer_object.bind normals_id;
- `glNormalPointer(GL_FLOAT, 0, (char*)NULL)`;
- } else {
- p := normals.to_external;
- `glNormalPointer(GL_FLOAT, 0, @p)`;
- };
- };
- );
-
- - bind_unit n:INTEGER <-
- (
- + p:POINTER;
-
- (vertex.count > 0).if {
- `glEnableClientState(GL_VERTEX_ARRAY)`;
- (OPENGL.arb_vertex_buffer_object != NULL).if {
- // use GPU vertex buffer
- OPENGL.arb_vertex_buffer_object.bind vertex_id;
- `glVertexPointer(3, GL_FLOAT, 0, (char*)NULL)`;
- } else {
- p := vertex.to_external;
- `glVertexPointer(3, GL_FLOAT, 0, @p)`;
- };
- };
-
- (texels.count > 0).if {
- `glEnableClientState(GL_TEXTURE_COORD_ARRAY)`;
-
- (OPENGL.arb_multitexture != NULL).if {
- OPENGL.arb_multitexture.client_active_texture n;
- };
- (OPENGL.arb_vertex_buffer_object != NULL).if {
- OPENGL.arb_vertex_buffer_object.bind texels_id;
- `glTexCoordPointer(2, GL_FLOAT, 0, (char*)NULL)`;
- } else {
- p := texels.to_external;
- `glTexCoordPointer(2, GL_FLOAT, 0, @p)`;
- };
- };
-
- (colors.count > 0).if {
- `glEnableClientState(GL_COLOR_ARRAY)`;
- (OPENGL.arb_vertex_buffer_object != NULL).if {
- OPENGL.arb_vertex_buffer_object.bind colors_id;
- `glColorPointer(3, GL_FLOAT, 0, (char*)NULL)`;
- } else {
- p := colors.to_external;
- `glColorPointer(3, GL_FLOAT, 0, @p)`;
- };
- };
-
- (normals.count > 0).if {
- `glEnableClientState(GL_NORMAL_ARRAY)`;
- (OPENGL.arb_vertex_buffer_object != NULL).if {
- OPENGL.arb_vertex_buffer_object.bind normals_id;
- `glNormalPointer(GL_FLOAT, 0, (char*)NULL)`;
- } else {
- p := normals.to_external;
- `glNormalPointer(GL_FLOAT, 0, @p)`;
- };
- };
- );
-
-
- - begin_triangles <-
- (
- drawing_mode := triangles;
- );
-
- - begin_lines <-
- (
- drawing_mode := lines;
- );
-
- - begin_points <-
- (
- drawing_mode := points;
- );
-
- - begin_quads <-
- (
- drawing_mode := quads;
- );
-
- - begin_polygon <-
- (
- drawing_mode := polygon;
- );
-
- - begin_line_strip <-
- (
- drawing_mode := line_strip;
- );
-
- - begin_line_loop <-
- (
- drawing_mode := line_loop;
- );
-
- - begin_triangle_strip <-
- (
- drawing_mode := triangle_strip;
- );
-
- - begin_triangle_fan <-
- (
- drawing_mode := triangle_fan;
- );
-
- - begin_quads_strip <-
- (
- drawing_mode := quad_strip;
- );
-
- - end <-
- (
- build;
- );
-
- - add_vertex2f (x,y:REAL_32) <-
- (
- vertex.add_last x;
- vertex.add_last y;
- vertex.add_last 0;
- );
-
- - add_vertex3f (x,y,z:REAL_32) <-
- (
- vertex.add_last x;
- vertex.add_last y;
- vertex.add_last z;
- );
-
- - add_vertex3f (x,y,z:REAL_32) color col:COLOR <-
- (
- add_vertex3f (x,y,z);
- add_color col;
- );
-
- - add_vertex v:VERTEX <-
- (
- vertex.add_last (v.x);
- vertex.add_last (v.y);
- vertex.add_last (v.z);
- );
-
- - add_vertex v:VERTEX color col:COLOR <-
- (
- add_vertex v;
- add_color col;
- );
-
- - add_texel2f (s,t:REAL_32) <-
- (
- texels.add_last s;
- texels.add_last t;
- );
-
- - add_normal3f (x,y,z:REAL_32) <-
- (
- normals.add_last x;
- normals.add_last y;
- normals.add_last z;
- );
-
- - add_normal v:VECTOR3[REAL_32] <-
- (
- add_normal3f (v.x, v.y, v.z);
- );
-
- - add_color (c:COLOR) <-
- (
- colors.add_last (c.r);
- colors.add_last (c.g);
- colors.add_last (c.b);
- );
-
- - add_color3f (r,g,b:REAL_32) <-
- (
- colors.add_last r;
- colors.add_last g;
- colors.add_last b;
- );
-
- - get_vertex_data:FAST_ARRAY[REAL_32] <-
- (
- vertex
- );
-
- - get_texels_data:FAST_ARRAY[REAL_32] <-
- (
- texels
- );
-
- - get_normals_data:FAST_ARRAY[REAL_32] <-
- (
- normals
- );
-
- - get_colors_data:FAST_ARRAY[REAL_32] <-
- (
- colors
- );
-
-
- - destroy <-
- // bug!!!
- (
- (OPENGL.arb_vertex_buffer_object != NULL).if {
- (vertex.count > 0).if {
- OPENGL.arb_vertex_buffer_object.delete vertex_id;
- };
- (texels.count > 0).if {
- OPENGL.arb_vertex_buffer_object.delete texels_id;
- };
- (colors.count > 0).if {
- OPENGL.arb_vertex_buffer_object.delete colors_id;
- };
- (normals.count > 0).if {
- OPENGL.arb_vertex_buffer_object.delete normals_id;
- };
- };
- );
\ No newline at end of file
diff --git a/opengl/gl_vertex_buffer.li b/opengl/gl_vertex_buffer.li
deleted file mode 100644
index 23e48e4..0000000
--- a/opengl/gl_vertex_buffer.li
+++ /dev/null
@@ -1,221 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_VERTEX_BUFFER;
-
-Section Inherit
-
- - parent_vertex_buffer:VERTEX_BUFFER := VERTEX_BUFFER;
-
-Section Public
-
- - make sz:INTEGER <-
- (
- // rien
- );
-
- - destroy <-
- (
- // rien
- );
-
- - build <-
- (
- // rien
- );
-
- - points:INTEGER <- `GL_POINTS`:INTEGER;
- - lines:INTEGER <- `GL_LINES`:INTEGER;
- - polygon:INTEGER <- `GL_POLYGON`:INTEGER;
- - triangles:INTEGER <- `GL_TRIANGLES`:INTEGER;
- - quads:INTEGER <- `GL_QUADS`:INTEGER;
- - line_strip:INTEGER <- `GL_LINE_STRIP`:INTEGER;
- - line_loop:INTEGER <- `GL_LINE_LOOP`:INTEGER;
- - triangle_strip:INTEGER <- `GL_TRIANGLE_STRIP`:INTEGER;
- - triangle_fan:INTEGER <- `GL_TRIANGLE_FAN`:INTEGER;
- - quad_strip:INTEGER <- `GL_QUAD_STRIP`:INTEGER;
-
-
- - begin_triangles <-
- (
- drawing_mode := triangles;
- `glBegin (GL_TRIANGLES)`;
- );
-
- - begin_lines <-
- (
- drawing_mode := lines;
- `glBegin (GL_LINES)`;
- );
-
- - begin_points <-
- (
- drawing_mode := points;
- `glBegin (GL_POINTS)`;
- );
-
- - begin_quads <-
- (
- drawing_mode := quads;
- `glBegin (GL_QUADS)`;
- );
-
- - begin_polygon <-
- (
- drawing_mode := polygon;
- `glBegin (GL_POLYGON)`;
- );
-
- - begin_line_strip <-
- (
- drawing_mode := line_strip;
- `glBegin (GL_LINE_STRIP)`;
- );
-
- - begin_line_loop <-
- (
- drawing_mode := line_loop;
- `glBegin (GL_LINE_LOOP)`;
- );
-
- - begin_triangle_strip <-
- (
- drawing_mode := triangle_strip;
- `glBegin (GL_TRIANGLE_STRIP)`;
- );
-
- - begin_triangle_fan <-
- (
- drawing_mode := triangle_fan;
- `glBegin (GL_TRIANGLE_FAN)`;
- );
-
- - begin_quads_strip <-
- (
- drawing_mode := quad_strip;
- `glBegin (GL_QUAD_STRIP)`;
- );
-
- - end <-
- (
- `glEnd()`;
- );
-
- - draw <-
- (
- `glFlush()`;
- );
-
- - add_vertex2f (x,y:REAL_32) <-
- (
- `glVertex2f (@x, @y)`;
- );
- - add_vertex3f (x,y,z:REAL_32) <-
- (
- `glVertex3f (@x, @y, @z)`;
- );
-
- - add_vertex3f (x,y,z:REAL_32) color col:COLOR <-
- (
- + r,g,b:REAL_32;
-
- r := col.r;
- g := col.g;
- b := col.b;
-
- `glColor3f (@r, @g, @b)`;
- `glVertex3f (@x, @y, @z)`;
- );
-
- - add_vertex v:VERTEX <-
- (
- + x,y,z:REAL_32;
-
- x := v.x;
- y := v.y;
- z := v.z;
- `glVertex3f (@x, @y, @z)`;
- );
-
- - add_vertex v:VERTEX color col:COLOR <-
- (
- + r,g,b:REAL_32;
-
- r := col.r;
- g := col.g;
- b := col.b;
- `glColor3f (@r, @g, @b)`;
-
- add_vertex v;
- );
-
- - add_texel2f (s,t:REAL_32) <-
- (
- `glTexCoord2f(@s, @t)`;
- );
-
- - add_normal3f (x,y,z:REAL_32) <-
- (
- `glNormal3f(@x, @y, @z)`;
- );
-
- - add_normal v:VECTOR3[REAL_32] <-
- (
- add_normal3f (v.x, v.y, v.z);
- );
-
- - add_color c:COLOR <-
- (
- + r,g,b:REAL_32;
-
- r := c.r;
- g := c.g;
- b := c.b;
- `glColor3f(@r, @g, @b)`;
- );
-
- - add_color3f (r,g,b:REAL_32) <-
- (
- `glColor3f(@r, @g, @b)`;
- );
-
- - get_vertex_data:FAST_ARRAY[REAL_32] <-
- (
- not_yet_implemented; NULL
- );
-
- - get_texels_data:FAST_ARRAY[REAL_32] <-
- (
- not_yet_implemented; NULL
- );
-
- - get_normals_data:FAST_ARRAY[REAL_32] <-
- (
- not_yet_implemented; NULL
- );
-
- - get_colors_data:FAST_ARRAY[REAL_32] <-
- (
- not_yet_implemented; NULL
- );
-
\ No newline at end of file
diff --git a/opengl/opengl_abstract.li b/opengl/opengl_abstract.li
deleted file mode 100644
index c5ee6d1..0000000
--- a/opengl/opengl_abstract.li
+++ /dev/null
@@ -1,256 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := OPENGL_ABSTRACT;
-
-Section Inherit
-
- + parent_renderer:Expanded RENDERER;
-
- - parent_opengl_specific:OPENGL_SPECIFIC := OPENGL_SPECIFIC;
-
-Section Public
-
- //
- // Renderer Modules
- //
-
- - transform:TRANSFORM <- GL_TRANSFORM;
- - texture1d:TEXTURE <- GL_TEXTURE1D;
- - texture2d:TEXTURE <- GL_TEXTURE2D;
- - font:FONT <- GL_FONT;
- - light:LIGHT <- GL_LIGHT;
- - material:MATERIAL <- GL_MATERIAL;
- - plane:PLANE <- GL_PLANE;
- - quadrics:QUADRICS <- GL_QUADRICS;
- - blending:BLENDING <- GL_BLENDING;
- - culling:CULLING <- GL_CULLING;
- - fog:FOG := GL_FOG;
-
- //
- // Renderer features
- //
-
- - vb:VERTEX_BUFFER := GL_VERTEX_BUFFER; // renderer current Vertex Buffer
- - vertex_array:VERTEX_BUFFER <- GL_VERTEX_ARRAY;
- - vertex_buffer:VERTEX_BUFFER <- GL_VERTEX_BUFFER;
- - index_buffer:INDEX_BUFFER <- GL_INDEX_BUFFER;
- - display_list:DISPLAY_LIST <- GL_DISPLAY_LIST;
-
- - color_buffer:COLOR_BUFFER <- GL_COLOR_BUFFER;
- - depth_buffer:DEPTH_BUFFER <- GL_DEPTH_BUFFER;
- - stencil_buffer:STENCIL_BUFFER <- GL_STENCIL_BUFFER;
- - accum_buffer:ACCUM_BUFFER <- GL_ACCUM_BUFFER;
- - alpha_test:ALPHA_TEST <- GL_ALPHA_TEST;
- - scissor:SCISSOR <- GL_SCISSOR;
-
- - evaluator1d:EVALUATOR1D <- GL_EVALUATOR1D;
- - evaluator2d:EVALUATOR2D <- GL_EVALUATOR2D;
-
- - shader:SHADER <- GL_SHADER;
-
- - name_stack:NAME_STACK <- GL_NAME_STACK;
-
- - error:ERROR <- GL_ERROR;
-
-
- - initialize <-
- (
- set_quality quality;
-
- color_buffer.set_clear_value (0,0,0,1);
-
- enable_shading;
-
- depth_buffer.set_clear_value 1.0;
- depth_buffer.set_function (GL_DEPTH_BUFFER.lequal);
- depth_buffer.enable;
-
- blending.apply (blending.src_alpha, blending.one);
- blending.set_alpha_value 0.5;
- );
-
- - begin_frame <-
- // pre rendering
- (
- clear_screen;
-
- // reset world matrix
- transform.load_identity;
- );
-
- - end_frame <-
- // post rendering
- (
- swap_buffers;
- );
-
- - new_frame body:BLOCK <-
- (
- begin_frame;
- body.value;
- end_frame;
- );
-
- - clear_screen <-
- (
- `glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);`;
- );
-
- - active_vertex_array sizemax:INTEGER <-
- (
- vb := GL_VERTEX_ARRAY.create sizemax;
- );
-
- - enable_shading <-
- (
- `glShadeModel (GL_SMOOTH)`;
- );
-
- - disable_shading <-
- (
- `glShadeModel (GL_FLAT)`;
- );
-
- - enable_lighting <-
- (
- `glEnable(GL_LIGHTING)`;
- );
-
- - disable_lighting <-
- (
- `glDisable(GL_LIGHTING)`;
- );
-
-
- - wireframe_mode on:BOOLEAN <-
- (
- on.if {
- `glPolygonMode(GL_FRONT, GL_LINE)`;
- `glPolygonMode(GL_BACK, GL_LINE)`;
- } else {
- `glPolygonMode(GL_FRONT, GL_FILL)`;
- `glPolygonMode(GL_BACK, GL_FILL)`;
- };
- );
-
- - enable_auto_normal <-
- (
- `glEnable(GL_AUTO_NORMAL)`;
- );
-
- - disable_auto_normal <-
- (
- `glDisable(GL_AUTO_NORMAL)`;
- );
-
-
- - set_point_size sz:REAL_32 <-
- (
- `glPointSize(@sz)`;
- );
-
- - set_line_width w:REAL_32 <-
- (
- `glLineWidth(@w)`;
- );
-
- - set_fog f:FOG <-
- (
- fog := f;
- );
-
- - set_quality q:INTEGER <-
- (
- + mode:INTEGER;
-
- q
- .when nicest_quality then {
- mode := `GL_NICEST`:INTEGER;
- }
- .when fastest_quality then {
- mode := `GL_FASTEST`:INTEGER;
- }
- .when default_quality then {
- mode := `GL_DONT_CARE`:INTEGER;
- };
- `glHint(GL_PERSPECTIVE_CORRECTION_HINT, @mode)`;
- );
-
- //
- // Render modes (GL_RENDER (default), GL_SELECT, GL_FEEDBACK)
- //
-
- - begin_selection_in buffer:FAST_ARRAY[UINTEGER_32] size sz:INTEGER <-
- (
- + p:POINTER;
-
- p := buffer.to_external;
- `glSelectBuffer (@sz, @p);`;
-
- `(void) glRenderMode (GL_SELECT)`;
- );
-
- - end_selection:INTEGER <-
- (
- `glRenderMode (GL_RENDER)`:INTEGER
- );
-
-
- - set_fullscreen <-
- (
- is_fullscreeen := TRUE;
- );
-
- //
- // Renderer informations
- //
-
- - video_card_name buf:STRING <-
- (
- get_value (`GL_RENDERER`:INTEGER) on buf;
- );
- - video_card_vendor buf:STRING <-
- (
- get_value (`GL_VENDOR`:INTEGER) on buf;
- );
- - video_card_version buf:STRING <-
- (
- get_value (`GL_VERSION`:INTEGER) on buf;
- );
-
-Section Private
-
- - get_value val:INTEGER on str:STRING <-
- (
- + tmp:NATIVE_ARRAY[CHARACTER];
- + i:INTEGER;
-
- tmp := `glGetString(@val)`:NATIVE_ARRAY[CHARACTER];
- {tmp.item i != '\0'}.while_do {
- // string copy
- str.add_last (tmp.item i);
- i := i+1;
- };
- );
-
\ No newline at end of file
diff --git a/opengl/opengl_specific.li b/opengl/opengl_specific.li
deleted file mode 100644
index 17a3d42..0000000
--- a/opengl/opengl_specific.li
+++ /dev/null
@@ -1,94 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := OPENGL_SPECIFIC;
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- //
- // OpenGL Extensions
- //
-
- - arb_multitexture:ARB_MULTITEXTURE;
- - arb_vertex_buffer_object:ARB_VERTEX_BUFFER_OBJECT;
-
- - arb_shader_object:ARB_SHADER_OBJECT;
- - arb_vertex_shader:ARB_VERTEX_SHADER;
- - arb_fragment_shader:ARB_FRAGMENT_SHADER;
- - arb_shading_language_100:ARB_SHADING_LANGUAGE_100;
-
-
- - use_arb_multitexture:BOOLEAN <-
- (
- arb_multitexture := ARB_MULTITEXTURE.create;
- arb_multitexture != NULL
- );
-
- - use_arb_vertex_buffer_object:BOOLEAN <-
- (
- arb_vertex_buffer_object := ARB_VERTEX_BUFFER_OBJECT.create;
- arb_vertex_buffer_object != NULL
- );
-
- - use_arb_shader_object:BOOLEAN <-
- (
- arb_shader_object := ARB_SHADER_OBJECT.create;
- arb_shader_object != NULL
- );
-
- - use_arb_vertex_shader:BOOLEAN <-
- (
- arb_vertex_shader := ARB_VERTEX_SHADER.create;
- arb_vertex_shader != NULL
- );
-
- - use_arb_fragment_shader:BOOLEAN <-
- (
- arb_fragment_shader := ARB_FRAGMENT_SHADER.create;
- arb_fragment_shader != NULL
- );
-
- - use_arb_shading_language_100:BOOLEAN <-
- (
- arb_shading_language_100 := ARB_SHADING_LANGUAGE_100.create;
- arb_shading_language_100 != NULL
- );
-
- - use_shaders:BOOLEAN <-
- (
- use_arb_shader_object && {use_arb_vertex_shader} && {use_arb_fragment_shader} && {use_arb_shading_language_100}
- );
-
- - use_extensions <-
- // load everything
- (
- use_arb_vertex_buffer_object;
- use_arb_multitexture;
-
- use_shaders;
- //...
- );
\ No newline at end of file
diff --git a/plane.li b/plane.li
deleted file mode 100644
index d617f9d..0000000
--- a/plane.li
+++ /dev/null
@@ -1,54 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := PLANE;
-
- - comment := "a*x+b*y+c*z+d >= 0 clipping plane";
-
-Section Inherit
-
- + parent_vector:Expanded VECTOR4[REAL_32];
-
- + parent_state:Expanded STATE;
-
-Section Public
-
- - a:REAL_32 <- x;
- - b:REAL_32 <- y;
- - c:REAL_32 <- z;
- - d:REAL_32 <- w;
-
- - make (p1,p2,p3,p4:REAL_32) <-
- (
- x := p1;
- y := p2;
- z := p3;
- w := p4;
-
- load_clipping_plane;
- );
-
- - load_clipping_plane <- ();
-
- - clip <- deferred;
- - unclip <- deferred;
\ No newline at end of file
diff --git a/quadrics.li b/quadrics.li
deleted file mode 100644
index c523fc6..0000000
--- a/quadrics.li
+++ /dev/null
@@ -1,60 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := QUADRICS;
-
- - comment := "3D Primitive (sphere,cylinder,...)";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - fill_mode:INTEGER <- 1;
- - point_mode:INTEGER <- 2;
- - line_mode:INTEGER <- 3;
-
- - begin_quadric <- deferred;
- - end_quadric <- deferred;
-
- - new_quadric body:BLOCK <-
- (
- begin_quadric;
- body.value;
- end_quadric;
- );
-
- - enable_texture <- deferred;
-
- - disable_texture <- deferred;
-
- - set_style style:INTEGER <- deferred;
-
- //
- // Quadrics
- //
-
- - draw_sphere (radius,slices,stacks:REAL_32) <- deferred;
- - draw_cylinder (base,top,height,slices,stacks:REAL_32) <- deferred;
- - draw_disk (inner,outer,slices,loops:REAL_32) <- deferred;
\ No newline at end of file
diff --git a/readme.txt b/readme.txt
deleted file mode 100644
index 409f2ff..0000000
--- a/readme.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-
- Welcome to the OpenGL-Lisaac binding!
-
- ~~~~
-Install.
-========
-
-Add the following lines to your path.li (see the example modif_path.li):
-
-Section Common
- + libs := lisaac + "../libs/";
-
- - libs + "math/";
- - libs + "math/low_level/";
-
- - libs + "opengl-binding/";
-
- - libs + "opengl-binding/opengl/";
- - libs + "opengl-binding/opengl/extensions/";
- - libs + "opengl-binding/image_format/";
-
- - libs + "opengl-binding/gfx_engine/";
- - libs + "opengl-binding/gfx_engine/primitives/";
- - libs + "opengl-binding/gfx_engine/particles";
- - libs + "opengl-binding/gfx_engine/model_format/";
- - libs + "opengl-binding/gfx_engine/low_level/";
-
-Section UNIX
-
- - libs + "opengl-binding/unix/";
-
- * "gcc " + input_file + " -O3 -fomit-frame-pointer -lm -lX11 -lGL -lGLU -o " +
- output_file + " -L" + path_lib_x11 + option_gcc;
-
-Section WINDOWS
-
- - libs + "opengl-binding/windows/";
-
- * "gcc " + input_file + " -o " + output_file + ".exe -lwinmm -lgdi32 -lopengl32 -lglu32" + option_gcc;
-
-
-Directory description.
-======================
-
-* OpenGL plateform dependant low level:
- opengl-binding/unix/
- opengl-binding/windows/
-
-* OpenGL plateform indepenpant binding:
- opengl-binding/opengl/
-
-* lisaac image loading library
- opengl-binding/image_format/
-
-* graphics engine on top of OpenGL binding:
- opengl-binding/gfx_engine/
-
-* test application using graphics engine:
- examples/gl_test/
-
-
-Good luck,
-Best regards,
-
- Damien.
diff --git a/renderer.li b/renderer.li
deleted file mode 100644
index f9f98a6..0000000
--- a/renderer.li
+++ /dev/null
@@ -1,188 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := RENDERER;
-
- - comment := "abstract prototype for render systems";
-
-Section Inherit
-
- - parent_settings:SETTINGS := SETTINGS;
-
-Section Public
-
- + name:STRING;
-
- //
- // Renderer Modules
- //
-
- - transform:TRANSFORM <- deferred; // 3D transformation & projection
- - font:FONT <- deferred;
- - texture1d:TEXTURE <- deferred;
- - texture2d:TEXTURE <- deferred;
- - light:LIGHT <- deferred;
- - material:MATERIAL <- deferred;
- - plane:PLANE <- deferred;
- - quadrics:QUADRICS <- deferred;
- - blending:BLENDING <- deferred;
- - culling:CULLING <- deferred;
- - fog:FOG;
-
- //
- // Renderer features
- //
-
- - viewport:VIEWPORT; // current viewport
-
- - vb:VERTEX_BUFFER; // current vertex buffer
- - vertex_array:VERTEX_BUFFER <- deferred;
- - vertex_buffer:VERTEX_BUFFER <- deferred;
- - index_buffer:INDEX_BUFFER <- deferred;
- - display_list:DISPLAY_LIST <- deferred;
-
- - color_buffer:COLOR_BUFFER <- deferred;
- - depth_buffer:DEPTH_BUFFER <- deferred;
- - stencil_buffer:STENCIL_BUFFER <- deferred;
- - accum_buffer:ACCUM_BUFFER <- deferred;
- - alpha_test:ALPHA_TEST <- deferred;
- - scissor:SCISSOR <- deferred;
-
- - evaluator1d:EVALUATOR1D <- deferred;
- - evaluator2d:EVALUATOR2D <- deferred;
-
- - shader:SHADER <- deferred;
-
- - name_stack:NAME_STACK <- deferred;
-
- - error:ERROR <- (deferred;NULL);
-
- //
- // Renderer callbacks
- //
-
- - listener:LISTENER := LISTENER;
-
- - set_listener l:LISTENER <-
- (
- listener := l;
- );
-
- - reshape:RESHAPE := RESHAPE;
-
- - set_reshape r:RESHAPE <-
- (
- reshape := r;
- reshape.make Self;
- );
-
- //
- // Renderer settings
- //
-
- // make with default settings
- - make (w,h:INTEGER) title s:ABSTRACT_STRING fullscreen b:BOOLEAN <-
- (
- deferred;
- );
-
- - make settings:SETTINGS title s:ABSTRACT_STRING <-
- (
- parent_settings := settings;
- make (width, height) title s fullscreen has_fullscreen;
- );
-
- - init_subsystems <-
- (
- KEYCODE.make;
- INPUT_SYSTEM.make;
-
- reshape.make Self;
- );
-
- //
- // Renderer info
- //
-
- - video_card_name buf:STRING <- deferred;
- - video_card_vendor buf:STRING <- deferred;
- - video_card_version buf:STRING <- deferred;
-
- //
- // Misc.
- //
-
- - active_vertex_array sizemax:INTEGER <- deferred;
- - set_fog f:FOG <- deferred;
-
-
- //
- // Selection mode
- //
-
- - begin_selection_in buffer:FAST_ARRAY[UINTEGER_32] size sz:INTEGER <- deferred;
- - end_selection:INTEGER <- deferred;
-
-
-
- - set_fullscreen <- deferred;
-
- - shutdown <- deferred;
-
-
- - begin_frame <- deferred;
- - end_frame <- deferred;
-
- - clear_screen <- deferred;
- - new_frame body:BLOCK <- deferred;
-
-
- - enable_shading <- deferred;
- - disable_shading <- deferred;
-
- - enable_lighting <- deferred;
- - disable_lighting <- deferred;
-
- - enable_auto_normal <- deferred;
- - disable_auto_normal <- deferred;
-
- - wireframe_mode on:BOOLEAN <- deferred;
-
- - set_point_size sz:REAL_32 <- deferred;
- - set_line_width w:REAL_32 <- deferred;
-
- //
- // Time handling
- //
- - get_ticks:UINTEGER_32 <- deferred;
- - start_ticks <- deferred;
-
- - delay ms:UINTEGER_32 <- deferred;
-
-
- - fatal_error msg:ABSTRACT_STRING <-
- (
- error.print msg;
- die_with_code exit_failure_code;
- );
-
diff --git a/reshape.li b/reshape.li
deleted file mode 100644
index 78c1086..0000000
--- a/reshape.li
+++ /dev/null
@@ -1,58 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := RESHAPE;
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Private
-
- - r:RENDERER;
-
-Section Public
-
- - make renderer:RENDERER <-
- (
- r := renderer;
- );
-
- //
- // Reshape Events
- //
-
- - on_resize (w,h:INTEGER) <-
- (
- r.transform.set_viewport (r.viewport);
-
- // modify projection matrix
- r.transform.new_projection {
- r.transform.load_identity;
-
- r.transform.perspective (r.fov, w.to_real/h.to_real, 0.1, 1000.0);
- };
- // clear modelview matrix
- r.transform.load_identity;
- );
-
\ No newline at end of file
diff --git a/rgb.li b/rgb.li
deleted file mode 100644
index 606f1b1..0000000
--- a/rgb.li
+++ /dev/null
@@ -1,40 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := RGB;
-
- - comment := "(r,g,b) color";
-
-Section Inherit
-
- + parent_vector:Expanded VECTOR3[REAL_32];
-
- - parent_color:COLOR := COLOR;
-
-Section Public
-
- - r:REAL_32 <- x;
- - g:REAL_32 <- y;
- - b:REAL_32 <- z;
-
- - getv:FAST_ARRAY[REAL_32] <- parent_vector.getv;
\ No newline at end of file
diff --git a/rgba.li b/rgba.li
deleted file mode 100644
index 163d7aa..0000000
--- a/rgba.li
+++ /dev/null
@@ -1,42 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := RGBA;
-
- - comment := "(r,g,b,a) color";
-
-Section Inherit
-
- + parent_vector:Expanded VECTOR4[REAL_32];
-
- - parent_color:COLOR := COLOR;
-
-Section Public
-
- - r:REAL_32 <- x;
- - g:REAL_32 <- y;
- - b:REAL_32 <- z;
- - a:REAL_32 <- w;
-
- - getv:FAST_ARRAY[REAL_32] <- parent_vector.getv;
-
\ No newline at end of file
diff --git a/scissor.li b/scissor.li
deleted file mode 100644
index 82c4b5b..0000000
--- a/scissor.li
+++ /dev/null
@@ -1,38 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := SCISSOR;
-
- - comment := "Viewport clipping";
-
-Section Inherit
-
- + parent_state:Expanded STATE;
-
-Section Public
-
- - cut v:VIEWPORT <- deferred;
-
- - cut4i (x,y,width,height:UINTEGER_32) <- deferred;
-
- - get_scissor_box viewport:VIEWPORT <- deferred;
\ No newline at end of file
diff --git a/settings.li b/settings.li
deleted file mode 100644
index f616e94..0000000
--- a/settings.li
+++ /dev/null
@@ -1,127 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := SETTINGS;
-
- - comment := "Renderer settings";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - nicest_quality:INTEGER <- 1;
- - fastest_quality:INTEGER <- 2;
- - default_quality:INTEGER <- 3;
-
-
- - quality:INTEGER := nicest_quality;
-
- - width:INTEGER;
- - height:INTEGER;
-
- - fov:REAL_32 := 45.0;
-
- - is_fullscreen:BOOLEAN;
-
-
- - has_doublebuffer:BOOLEAN := TRUE;
- - buffer_size:INTEGER := 32;
-
- - has_depth_buffer:BOOLEAN := TRUE;
- - depth_size:INTEGER := 16;
-
- - has_stencil_buffer:BOOLEAN;
- - stencil_size:INTEGER := 1;
-
- - has_accum_buffer:BOOLEAN;
- - accum_red_size:INTEGER := 8;
- - accum_green_size:INTEGER := 8;
- - accum_blue_size:INTEGER := 8;
- - accum_alpha_size:INTEGER := 8;
-
- - has_alpha:BOOLEAN := TRUE;
-
- - red_size:INTEGER := 8;
- - green_size:INTEGER := 8;
- - blue_size:INTEGER := 8;
- - alpha_size:INTEGER := 8;
-
-
- - set_dimensions (w,h:INTEGER) <-
- (
- width := w;
- heigth := h;
- );
-
- - set_fov val:REAL_32 <-
- (
- fov := val;
- );
-
- - use_fullscreen <-
- (
- has_fullscreen := TRUE;
- );
-
- - use_doublebuffer <-
- (
- has_doublebuffer := TRUE;
- );
-
- - use_alpha_channel <-
- (
- has_alpha := TRUE;
- );
-
- - use_depth_buffer <-
- (
- has_depth_buffer := TRUE;
- );
-
- - use_stencil_buffer <-
- (
- has_stencil_buffer := TRUE;
- );
-
- - use_accum_buffer <-
- (
- has_accum_buffer := TRUE;
- );
-
- - use_default <-
- (
- quality := nicest_quality;
-
- use_doublebuffer;
- use_depth_buffer;
- use_alpha_channel;
- set_fov 45;
-
- buffer_size := 32;
- depth_size := 16;
- stencil_size := 1;
- red_size := blue_size := green_size := alpha_size := 8;
- accum_red_size := accum_blue_size := accum_green_size := accum_alpha_size := 8;
- );
\ No newline at end of file
diff --git a/shader.li b/shader.li
deleted file mode 100644
index 4188f6e..0000000
--- a/shader.li
+++ /dev/null
@@ -1,58 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := SHADER;
-
- - comment := "Abstract Shader";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - create (vertex_shader,fragment_shader:ABSTRACT_STRING) :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make (vertex_shader,fragment_shader);
- result
- );
-
- - make (vertex_shader,fragment_shader:ABSTRACT_STRING) <- deferred;
-
- - has_compiled:BOOLEAN <- deferred;
- - get_infolog buffer:STRING <- deferred;
-
- - enable <- deferred;
- - disable <- deferred;
-
- - get_uniform_location varname:ABSTRACT_STRING :INTEGER <- deferred;
-
- - set_uniform1f loc:INTEGER to val:REAL_32 <- deferred;
- - set_uniform2f loc:INTEGER to (v0,v1:REAL_32) <- deferred;
- - set_uniform3f loc:INTEGER to (v0,v1,v2:REAL_32) <- deferred;
- - set_uniform4f loc:INTEGER to (v0,v1,v2,v3:REAL_32) <- deferred;
-
- - bind_sampler tex:TEXTURE unit u:INTEGER location loc:INTEGER <- deferred;
-
- - delete <- deferred;
\ No newline at end of file
diff --git a/state.li b/state.li
deleted file mode 100644
index 0772b80..0000000
--- a/state.li
+++ /dev/null
@@ -1,87 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := STATE;
-
- - comment := "The renderer is a Finite-State Machine";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Private
-
- + stack:LINKED_LIST[BOOLEAN];
-
-Section Public
-
- //
- // Current states:
- // - lights
- // - planes
- // - textures
- // - depth test
- // - alpha test
- // - stencil test
- // - scissor test
- // - blending
- // - culling
- // - fog
-
- + is_enabled:BOOLEAN;
-
-
- - enable <-
- (
- is_enabled := TRUE;
- );
-
- - disable <-
- (
- is_enabled := FALSE;
- );
-
- - push_attrib <- deferred;
- - pop_attrib <- deferred;
- - new_attrib body:BLOCK <-
- (
- push_attrib;
- body.value;
- pop_attrib;
- );
-
-
- - save <-
- (
- (stack = NULL).if {
- stack := LINKED_LIST[BOOLEAN].create;
- };
- stack.add_last is_enabled;
- );
-
- - restore <-
- (
- ? {(stack != NULL) && {stack.count > 1}};
- is_enabled := stack.last;
- stack.remove_last;
- );
\ No newline at end of file
diff --git a/stencil_buffer.li b/stencil_buffer.li
deleted file mode 100644
index a0580d2..0000000
--- a/stencil_buffer.li
+++ /dev/null
@@ -1,43 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := STENCIL_BUFFER;
-
- - comment := "store some bits for each pixels ";
-
-Section Inherit
-
- + parent_depth_buffer:Expanded DEPTH_BUFFER; // extends depth buffer
-
-Section Public
-
- // stencil operations
- - keep:INTEGER <- 1; // do not change value
- - replace:INTEGER <- 2; // replace value
- - incr:INTEGER <- 3; // increment value
- - decr:INTEGER <- 4; // decrement value
- - invert:INTEGER <- 5; // invert bits value
-
-
- - set_function f:INTEGER value val:INTEGER_32 mask m:UINTEGER_32 <- deferred;
- - when_pass op1:INTEGER when_fail op2:INTEGER when_zfail op3:INTEGER <- deferred;
\ No newline at end of file
diff --git a/texture.li b/texture.li
deleted file mode 100644
index 31609fc..0000000
--- a/texture.li
+++ /dev/null
@@ -1,120 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := TEXTURE;
-
- - comment := "rendered image";
-
-Section Inherit
-
- + parent_image:IMAGE := IMAGE;
-
- + parent_state:Expanded STATE;
-
-Section Public
-
- //
- // texture parameters
- //
-
- // filters: how to draw texture
- - filter_nearest:INTEGER <- 1;
- - filter_linear:INTEGER <- 2;
- - filter_mipmap:INTEGER <- 3;
-
- - filter:INTEGER := filter_mipmap;
-
- // texture functions: how to combine texture on its polygon
- - decal:INTEGER <- 1;
- - replace:INTEGER <- 2;
- - modulate:INTEGER <- 3;
- - blend:INTEGER <- 4;
-
- - drawing_mode:INTEGER := modulate;
-
- // border behaviour: what to draw when texels outside [0,1]
- - clamp:INTEGER <- 1;
- - repeat:INTEGER <- 2;
- - clamp_to_edge:INTEGER <- 3;
-
- - wrapping_mode:INTEGER := repeat;
-
- //
- // Create.
- //
-
- - create_from image:IMAGE :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make image;
- result
- );
-
- - create_from_data pixels:FAST_ARRAY[UINTEGER_8] size (w,h:INTEGER) type t:INTEGER :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make_from_data pixels size (w,h) type t;
- result
- );
-
- - create_from_framebuffer (x,y,w,h:INTEGER) type t:INTEGER :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make_from_framebuffer (x,y,w,h) type t;
- result
- );
-
- - create_empty (w,h:INTEGER) type t:INTEGER :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make_empty (w,h) type t;
- result
- );
-
- - make image:IMAGE <- deferred;
- - make_from_data pixels:FAST_ARRAY[UINTEGER_8] size (x,y,w,h:INTEGER) type t:INTEGER <- deferred;
- - make_from_framebuffer (x,y,w,h:INTEGER) type t:INTEGER <- deferred;
-
- - replace_region (x,y,w,h:INTEGER) with_data (pixels:FAST_ARRAY[UINTEGER_8],type:INTEGER) <- deferred;
- - replace_region (x,y,w,h:INTEGER) with image:IMAGE <- deferred;
-
- - replace_region (x,y,w,h:INTEGER) with_framebuffer_at (x0,y0:INTEGER) <- deferred;
-
- - enable_unit n:INTEGER <- deferred;
- - disable_unit n:INTEGER <- deferred;
-
- - bind <- deferred;
- - bind_unit n:INTEGER <- deferred;
-
- - set_image image:IMAGE <-
- (
- parent_image := image;
- );
-
- - draw (x,y:INTEGER) <- deferred;
-
- - draw_strech (x,y,w,h:INTEGER) <- deferred;
-
- - set_filter f:INTEGER <- filter := f;
- - set_drawing_mode f:INTEGER <- drawing_mode := f;
- - set_wrapping_mode f:INTEGER <- wrapping_mode := f;
\ No newline at end of file
diff --git a/transform.li b/transform.li
deleted file mode 100644
index b71a561..0000000
--- a/transform.li
+++ /dev/null
@@ -1,102 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := TRANSFORM;
-
- - comment := "3 types of transformation: modelview, projection, viewport";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - load_identity <- deferred;
-
- - push_matrix <- deferred;
- - pop_matrix <- deferred;
- - new_matrix body:BLOCK <-
- (
- push_matrix;
- body.value;
- pop_matrix;
- );
-
- // operations on current matrix
- - load_matrix m:MATRIX4[REAL_32] <- deferred;
- - mult_matrix_by m:MATRIX4[REAL_32] <- deferred;
-
-
- //
- // Viewing & Modeling transformations
- //
-
- - set_modelview_mode <- deferred;
-
- - translatef (x,y,z:REAL_32) <- deferred;
- - rotatef (val,x,y,z:REAL_32) <- deferred;
- - scalef (x,y,z:REAL_32) <- deferred;
-
- - get_modelview matrix:MATRIX4[REAL_32] <- deferred;
-
- //
- // Projection transformations
- //
-
- - set_projection_mode <- deferred;
- - new_projection body:BLOCK <-
- (
- set_projection_mode;
- body.value;
- set_modelview_mode;
- );
-
- - perspective (fovy,aspect,near,far:REAL_32) <- deferred;
- - frustum (left,right,bottom,top,near,far:REAL_32) <- deferred;
-
- - orthographic (left,right,bottom,top,near,far:REAL_32) <- deferred;
- - orthographic2d (left,right,bottom,top:REAL_32) <- deferred;
-
- - pickmatrix (x,y,w,h:UINTEGER_32) in v:VIEWPORT <- deferred;
-
- //
- // Viewport transformations
- //
-
- - set_viewport v:VIEWPORT <- deferred;
- - set_viewport4i (x,y,width,height:UINTEGER_32) <- deferred;
- - get_viewport viewport:VIEWPORT <- deferred;
-
- //
- // Tranformation utility
- //
-
- - begin_ortho (w,h:INTEGER) <- deferred;
- - end_ortho <- deferred;
- - ortho_mode (w,h:INTEGER) do body:BLOCK <-
- (
- begin_ortho (w,h);
- body.value;
- end_ortho;
- );
-
\ No newline at end of file
diff --git a/unix/gl_font.li b/unix/gl_font.li
deleted file mode 100644
index dae2bf7..0000000
--- a/unix/gl_font.li
+++ /dev/null
@@ -1,66 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_FONT;
-
- - comment := "X11 - OpenGl rendered font";
-
- - external := `static XFontStruct *font;`;
-
-Section Inherit
-
- + parent_font_abstract:Expanded GL_FONT_ABSTRACT;
-
-Section Public
-
- - default:FONT <-
- (
- create "-*-helvetica-bold-r-normal--24-*-*-*-p-*-iso8859-1"
- );
-
- - load <-
- (
- + fontname:NATIVE_ARRAY[CHARACTER];
- + b:UINTEGER_32;
- + n:INTEGER;
-
- n := nb_chars;
- base := `glGenLists(@n)`:UINTEGER_32;
-
- fontname := name.to_external;
- `font = XLoadQueryFont(win.dpy, @fontname)`;
- (`font`:POINTER = NULL).if {
-
- RENDERER.error.print "Error loading font, loading default...";
-
- // last chance..
- `font = XLoadQueryFont(win.dpy,"fixed")`;
- (`font`:POINTER = NULL).if {
- RENDERER.fatal_error "Can't load font";
- };
- };
- b := base;
- `glXUseXFont(font->fid, 32, @n, @b)`;// start at char 32 -> build n display lists
- `XFreeFont(win.dpy, font)`;
- );
-
\ No newline at end of file
diff --git a/unix/input_system.li b/unix/input_system.li
deleted file mode 100644
index fe511e3..0000000
--- a/unix/input_system.li
+++ /dev/null
@@ -1,118 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := INPUT_SYSTEM;
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - make <-
- (
- );
-
- - keys:FAST_ARRAY[BOOLEAN] :=
- ( + result:FAST_ARRAY[BOOLEAN];
-
- result := FAST_ARRAY[BOOLEAN].create 256;
- result.set_all_with FALSE;
- result
- );
-
- - mouse_x:INTEGER;
- - mouse_y:INTEGER;
-
- - get_mouse_pos:(INTEGER,INTEGER) <-
- (
- (mouse_x, mouse_y)
- );
-
- - update:BOOLEAN <-
- (
- + type,k:INTEGER;
- + w,h,b:INTEGER;
-
- {`XPending (win.dpy)`:INTEGER != 0}.while_do {
- `XNextEvent (win.dpy, &event)`;
- type := `event.type`:INTEGER;
-
- type
-
- //
- // Event Keyboard
- //
- .when `KeyPress`:INTEGER then {
- k := KEYCODE.get_key;
- keys.put TRUE to k;
- OPENGL.listener.on_keydown k;
- }
- .when `KeyRelease`:INTEGER then {
- k := KEYCODE.get_key;
- keys.put FALSE to k;
- OPENGL.listener.on_keyup k;
- }
- .when `ButtonPress`:INTEGER then {
- b := `event.xbutton.button`:INTEGER;
- OPENGL.listener.on_mouseclick (((b = 1).to_integer <<1) | (b = 3).to_integer);
- }
- .when `MotionNotify`:INTEGER then {
- mouse_x := `event.xmotion.x`:INTEGER;
- mouse_y := `event.xmotion.y`:INTEGER;
- OPENGL.listener.on_mousemove (mouse_x,mouse_y);
- }
- .when `ConfigureNotify`:INTEGER then {
- w := `event.xconfigure.width`:INTEGER;
- h := `event.xconfigure.height`:INTEGER;
-
- ((w != OPENGL.width) && {h != OPENGL.height}).if {
- OPENGL.resize (w,h);
- };
- };
- };
- TRUE
- );
-
- - keydown k:INTEGER :BOOLEAN <-
- (
- keys.item k
- );
-
- - keyup k:INTEGER :BOOLEAN <-
- (
- ! keys.item k
- );
-
- - set_up k:INTEGER <-
- (
- keys.put FALSE to k;
- );
-
- - warp_mouse (x,y:INTEGER) <-
- (
- mouse_x := x;
- mouse_y := y;
- `XWarpPointer (win.dpy, None, win.win, 0, 0, 0, 0, @x, @y)`;
- );
-
diff --git a/unix/keycode.li b/unix/keycode.li
deleted file mode 100644
index 36650a5..0000000
--- a/unix/keycode.li
+++ /dev/null
@@ -1,99 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := KEYCODE;
-
- - comment := "X11 key mapping";
-
- - external :=
- `
- char keybuf[64];
- KeySym keysym;`;
-
-Section Inherit
-
- + parent_keycode:Expanded ABSTRACT_KEYCODE;
-
-Section Public
-
- - make <-
- (
- keys := HASHED_DICTIONARY[INTEGER,INTEGER].create;
-
- keys.add k_tab to (`XK_Tab`:INTEGER);
- keys.add k_enter to (`XK_Return`:INTEGER);
- keys.add k_escape to (`XK_Escape`:INTEGER);
- keys.add k_space to (`XK_space`:INTEGER);
- keys.add k_backspace to (`XK_BackSpace`:INTEGER);
-
- keys.add k_pause to (`XK_Pause`:INTEGER);
-
- keys.add k_up to (`XK_Up`:INTEGER);
- keys.add k_down to (`XK_Down`:INTEGER);
- keys.add k_left to (`XK_Left`:INTEGER);
- keys.add k_right to (`XK_Right`:INTEGER);
-
- keys.add k_shift to (`XK_Shift_L`:INTEGER);
- keys.add k_shift to (`XK_Shift_R`:INTEGER);
- keys.add k_del to (`XK_Delete`:INTEGER);
- keys.add k_ctrl to (`XK_Control_L`:INTEGER);
- keys.add k_ctrl to (`XK_Control_R`:INTEGER);
- keys.add k_alt to (`XK_Alt_R`:INTEGER);
- keys.add k_alt to (`XK_Alt_L`:INTEGER);
- keys.add k_ins to (`XK_Insert`:INTEGER);
- keys.add k_pgdn to (`XK_Page_Down`:INTEGER);
- keys.add k_pgup to (`XK_Page_Up`:INTEGER);
-
- keys.add k_f1 to (`XK_F1`:INTEGER);
- keys.add k_f2 to (`XK_F2`:INTEGER);
- keys.add k_f3 to (`XK_F3`:INTEGER);
- keys.add k_f4 to (`XK_F4`:INTEGER);
- keys.add k_f5 to (`XK_F5`:INTEGER);
- keys.add k_f6 to (`XK_F6`:INTEGER);
- keys.add k_f7 to (`XK_F7`:INTEGER);
- keys.add k_f8 to (`XK_F8`:INTEGER);
- keys.add k_f9 to (`XK_F9`:INTEGER);
- keys.add k_f10 to (`XK_F10`:INTEGER);
- keys.add k_f11 to (`XK_F11`:INTEGER);
- keys.add k_f12 to (`XK_F12`:INTEGER);
- );
-
- - get_key:INTEGER <-
- (
- + result,key:INTEGER;
-
- `XLookupString(&event.xkey, keybuf, sizeof(keybuf), &keysym, 0)`;
- key := `keysym`:INTEGER;
-
- keys.has key.if {
- result := keys.at key;
- } else {
- result := `*keybuf`:INTEGER;// conversions...
- result.in_range ('A'.to_integer) to ('Z'.to_integer).if {
- result := result - 'A'.to_integer + 'a'.to_integer;
- }.elseif {result.in_range 1 to 26} then {
- result := result + 'a'.to_integer - 1;
- };
- };
- result
- );
\ No newline at end of file
diff --git a/unix/opengl.li b/unix/opengl.li
deleted file mode 100644
index 8666623..0000000
--- a/unix/opengl.li
+++ /dev/null
@@ -1,293 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := OPENGL;
-
- - external :=
- `#include <GL/glx.h>
- #include <GL/gl.h>
- #include <GL/glu.h>
- #include <X11/Xlib.h>
- #include <X11/keysym.h>
- #include <X11/extensions/xf86vmode.h>
- #include <sys/time.h>
-
- #define GPA(funcname) glXGetProcAddressARB(funcname);
-
- struct glx_window_t
- {
- Display *dpy;
- int screen;
- Window win;
- GLXContext context;
- XSetWindowAttributes attributes;
-
- XF86VidModeModeInfo deskMode;
- XVisualInfo *vi;
- };
-
- struct glx_window_t win;
- XF86VidModeModeInfo **modes;
- int numModes, bestMode;
- int vidModeMajorVersion, vidModeMinorVersion;
-
- XEvent event;
-
- static struct timeval start, now, tv;
-
- static int attribs[32];
- `;
-
-Section Inherit
-
- - parent_opengl_abstract:OPENGL_ABSTRACT := OPENGL_ABSTRACT;
-
-Section Public
-
- + name:STRING := "Opengl - X11";
-
- - swap_buffers <-
- // post rendering
- (
- // flip double buffer
- `glXSwapBuffers (win.dpy, win.win)`;
- );
-
-
- - resize (w,h:INTEGER) <-
- (
- (h != 0).if {
- width := w;
- height := h;
-
- viewport.make (0, 0, w, h);
-
- reshape.on_resize (w,h);
- };
- );
-
- - start_ticks <-
- (
- `gettimeofday(&start, NULL)`;
- );
-
- - get_ticks:UINTEGER_32 <-
- (
- `gettimeofday(&now, NULL)`;
- `(now.tv_sec-start.tv_sec)*1000+(now.tv_usec-start.tv_usec)/1000`:UINTEGER_32
- );
-
- - delay ms:UINTEGER_32 <-
- (
- // + then,now,elapsed:UINTEGER_32;
-
- `tv.tv_sec = @ms/1000`;
- `tv.tv_usec = (@ms%1000)*1000`;
- `select(0, NULL, NULL, NULL, &tv)`;
- );
-
-
- - make (w,h:INTEGER) title s:ABSTRACT_STRING fullscreen b:BOOLEAN <-
- (
- + nb_mode,n,size:INTEGER;
- + title:NATIVE_ARRAY[CHARACTER];
-
- init_subsystems;
-
- is_fullscreen := b;
- width := w;
- height := h;
- viewport := VIEWPORT.create (0,0,w,h);
-
- // Creation fenetre X:
- `win.dpy = XOpenDisplay (NULL)`;
- `win.screen = DefaultScreen (win.dpy)`;
- `bestMode = 0`;
-
- `XF86VidModeQueryVersion(win.dpy, &vidModeMajorVersion,&vidModeMinorVersion)`;
-
- `XF86VidModeGetAllModeLines (win.dpy, win.screen, &numModes, &modes)`;
-
- `win.deskMode = *modes[0];`;
-
- // make OpenGL attributes list
- `attribs[0] = GLX_RGBA`;
- `attribs[1] = GLX_RED_SIZE`;
- size := red_size;
- `attribs[2] = @size`;
- `attribs[3] = GLX_GREEN_SIZE`;
- size := green_size;
- `attribs[4] = @size`;
- `attribs[5] = GLX_BLUE_SIZE`;
- size := blue_size;
- `attribs[6] = @size`;
-
- n := 7;
- has_alpha.if {
- `attribs[@n] = GLX_ALPHA_SIZE`;
- n := n+1;
- size := alpha_size;
- `attribs[@n] = @size`;
- n := n+1;
- };
- has_doublebuffer.if {
- `attribs[@n] = GLX_DOUBLEBUFFER`;
- n := n+1;
- };
- has_depth_buffer.if {
- `attribs[@n] = GLX_DEPTH_SIZE`;
- n := n+1;
-
- size := depth_size;
- `attribs[@n] = @size`;
- n := n+1;
- };
- has_stencil_buffer.if {
- `attribs[@n] = GLX_STENCIL_SIZE`;
- n := n+1;
-
- size := stencil_size;
- `attribs[@n] = @size`;
- n := n+1;
- };
- has_accum_buffer.if {
- `attribs[@n] = GLX_ACCUM_RED_SIZE`;
- n := n+1;
- size := accum_red_size;
- `attribs[@n] = @size`;
- n := n+1;
-
- `attribs[@n] = GLX_ACCUM_GREEN_SIZE`;
- n := n+1;
- size := accum_green_size;
- `attribs[@n] = @size`;
- n := n+1;
-
- `attribs[@n] = GLX_ACCUM_BLUE_SIZE`;
- n := n+1;
- size := accum_blue_size;
- `attribs[@n] = @size`;
- n := n+1;
-
- has_alpha.if {
- `attribs[@n] = GLX_ACCUM_ALPHA_SIZE`;
- n := n+1;
- size := accum_alpha_size;
- `attribs[@n] = @size`;
- n := n+1;
- };
- };
- // terminate list
- `attribs[@n] = (int) None`;
-
- `win.vi = glXChooseVisual (win.dpy, win.screen, attribs)`;
- (`win.vi`:POINTER = NULL).if {
- fatal_error "Failed to set XVisual";
- };
-
- nb_mode := `numModes`:INTEGER;
- 0.to (nb_mode-1) do { i:INTEGER;
- `
- if ((modes[@i]->hdisplay == @w) &&
- (modes[@i]->vdisplay == @h))
- {
- bestMode = @i;
- }
- `;
- };
-
- // create OpenGL context
- `win.context = glXCreateContext (win.dpy, win.vi, 0, GL_TRUE)`;
- (`win.context`:POINTER = NULL).if {
- `XDestroyWindow (win.dpy, win.win)`;
- `XCloseDisplay (win.dpy)`;
-
- fatal_error "failed to create a rendering context";
- };
-
- // create a color map
- `win.attributes.colormap = XCreateColormap (win.dpy, RootWindow (win.dpy, win.vi->screen),win.vi->visual, AllocNone)`;
- `win.attributes.border_pixel = 0`;
- //`win.attributes.background_pixel = 0`;
-
- is_fullscreen.if {
- `XF86VidModeSwitchToMode (win.dpy, win.screen, modes[bestMode])`;
- `XF86VidModeSetViewPort (win.dpy, win.screen, 0, 0)`;
- width := `modes[bestMode]->hdisplay`:INTEGER;
- height := `modes[bestMode]->vdisplay`:INTEGER;
- `XFree (modes)`;
-
- // create fullscreen window
- `win.attributes.override_redirect = 1`;
- `win.attributes.event_mask = ExposureMask | KeyPressMask| ButtonPressMask|ButtonReleaseMask | PointerMotionMask | StructureNotifyMask`;
-
- `win.win = XCreateWindow (win.dpy, RootWindow (win.dpy, win.vi->screen),0, 0, @w, @h, 0, win.vi->depth, InputOutput, win.vi->visual,CWBorderPixel | CWColormap | CWEventMask | CWOverrideRedirect, &win.attributes)`;
-
- // warp mouse at center of the screen
- `XWarpPointer (win.dpy, None, win.win, 0, 0, 0, 0, @w / 2, @h / 2)`;
- `XMapRaised (win.dpy, win.win)`;
- `XGrabKeyboard (win.dpy, win.win, True, GrabModeAsync,GrabModeAsync, CurrentTime)`;
-
- `XGrabPointer (win.dpy, win.win, True, ButtonPressMask,GrabModeAsync, GrabModeAsync, win.win, None, CurrentTime)`;
- } else {
- // window mode
- `win.attributes.event_mask = ExposureMask | KeyPressMask | ButtonPressMask|ButtonReleaseMask | PointerMotionMask | StructureNotifyMask`;
-
- // create simple window
- `win.win = XCreateWindow (win.dpy, RootWindow (win.dpy, win.vi->screen),0, 0, @w, @h, 0, win.vi->depth, InputOutput, win.vi->visual,CWBorderPixel | CWColormap | CWEventMask, &win.attributes)`;
-
- title := s.to_external;
- `XSetStandardProperties(win.dpy, win.win, @title, @title, None, NULL, 0, NULL)`;
- `XMapRaised (win.dpy, win.win)`;
- };
- // `int x,y,borderDummy`;
- //`Window winDummy`;
- `glXMakeCurrent (win.dpy, win.win, win.context)`;
- // `XGetGeometry(win.dpy, win.win, &winDummy, &x, &y,&x, &y, &borderDummy, &x)`;
-
- (`glXIsDirect (win.dpy, win.context)`:INTEGER = 0).if {
- fatal_error "no direct rendering possible\n";
- };
- // Title window:
- // title := s.to_external;
- //`XStoreName(win.dpy,win.win, at title)`;
-
- initialize;
- resize (width,height);
- );
-
- - shutdown <-
- (
- // release context
- (`win.context`:POINTER != NULL).if {
- `glXMakeCurrent (win.dpy, None, NULL)`;
- `glXDestroyContext (win.dpy, win.context)`;
- `win.context = NULL`;
- };
- is_fullscreen.if {
- `XF86VidModeSwitchToMode (win.dpy, win.screen, &win.deskMode)`;
- `XF86VidModeSetViewPort (win.dpy, win.screen, 0, 0)`;
- };
- `XDestroyWindow (win.dpy, win.win)`;
- `XCloseDisplay (win.dpy)`;
- );
\ No newline at end of file
diff --git a/vertex.li b/vertex.li
deleted file mode 100644
index b7dd167..0000000
--- a/vertex.li
+++ /dev/null
@@ -1,34 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := VERTEX;
-
- - comment := "(x,y,z) point";
-
-Section Inherit
-
- + parent_vector:Expanded VECTOR3[REAL_32];
-
-Section Public
-
-
\ No newline at end of file
diff --git a/vertex_buffer.li b/vertex_buffer.li
deleted file mode 100644
index 5a68095..0000000
--- a/vertex_buffer.li
+++ /dev/null
@@ -1,175 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := VERTEX_BUFFER;
-
- - comment := "api independant vertex buffer";
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section Public
-
- - drawing_mode:INTEGER;
- - capacity:INTEGER;
-
- - points:INTEGER <- 1;
- - lines:INTEGER <- 2;
- - polygon:INTEGER <- 3;
- - triangles:INTEGER <- 4;
- - quads:INTEGER <- 5;
- - line_strip:INTEGER <- 6;
- - line_loop:INTEGER <- 7;
- - triangle_strip:INTEGER <- 8;
- - triangle_fan:INTEGER <- 9;
- - quad_strip:INTEGER <- 10;
-
-
- - create sz:INTEGER :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make sz;
- result
- );
-
- - create_subarray :SELF <-
- ( + result:SELF;
- result := SELF.clone;
- result.make capacity;
- result
- );
-
- - make sz:INTEGER <- deferred;
-
- - destroy <- deferred;
-
- - begin_points <- deferred;
- - begin_lines <- deferred;
- - begin_polygon <- deferred;
- - begin_triangles <- deferred;
- - begin_quads <- deferred;
- - begin_line_strip <- deferred;
- - begin_line_loop <- deferred;
- - begin_triangle_strip <- deferred;
- - begin_triangle_fan <- deferred;
- - begin_quad_strip <- deferred;
-
- - end <- deferred;
-
- - new_points body:BLOCK <-
- (
- begin_points;
- body.value;
- end;
- );
-
- - new_lines body:BLOCK <-
- (
- begin_lines;
- body.value;
- end;
- );
-
- - new_polygon body:BLOCK <-
- (
- begin_polygon;
- body.value;
- end;
- );
-
- - new_triangles body:BLOCK <-
- (
- begin_triangles;
- body.value;
- end;
- );
-
- - new_quads body:BLOCK <-
- (
- begin_quads;
- body.value;
- end;
- );
-
- - new_line_strip body:BLOCK <-
- (
- begin_line_strip;
- body.value;
- end;
- );
-
- - new_line_loop body:BLOCK <-
- (
- begin_line_loop;
- body.value;
- end;
- );
-
- - new_triangle_strip body:BLOCK <-
- (
- begin_triangle_strip;
- body.value;
- end;
- );
-
- - new_triangle_fan body:BLOCK <-
- (
- begin_triangle_fan;
- body.value;
- end;
- );
-
- - new_quad_strip body:BLOCK <-
- (
- begin_quad_strip;
- body.value;
- end;
- );
-
- - add_vertex2f (x,y:REAL_32) <- deferred;
- - add_vertex3f (x,y,z:REAL_32) <- deferred;
- - add_vertex v:VERTEX <- deferred;
- - add_vertex v:VERTEX color col:COLOR <- deferred;
- - add_vertex3f (x,y,z:REAL_32) color col:COLOR <- deferred;
-
- - add_texel2f (s,t:REAL_32) <- deferred;
- - add_normal3f (x,y,z:REAL_32) <- deferred;
- - add_normal v:VECTOR3[REAL_32] <- deferred;
-
- - add_color (c:COLOR) <- deferred;
- - add_color3f (r,g,b:REAL_32) <- deferred;
-
- - build <- deferred;
-
- - bind <- deferred;
- - bind_unit n:INTEGER <- deferred;
-
- - draw <- deferred;
- - draw_using index_array:INDEX_BUFFER <- deferred;
-
-
- - get_vertex_data:FAST_ARRAY[REAL_32] <- deferred;
- - get_texels_data:FAST_ARRAY[REAL_32] <- deferred;
- - get_normals_data:FAST_ARRAY[REAL_32] <- deferred;
- - get_colors_data:FAST_ARRAY[REAL_32] <- deferred;
\ No newline at end of file
diff --git a/viewport.li b/viewport.li
deleted file mode 100644
index c9d3435..0000000
--- a/viewport.li
+++ /dev/null
@@ -1,38 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := VIEWPORT;
-
- - comment := "(x0,y0,width,height) viewport";
-
-Section Inherit
-
- + parent_vector:Expanded VECTOR4[UINTEGER_32];
-
-Section Public
-
- - x0:UINTEGER_32 <- x;
- - y0:UINTEGER_32 <- y;
- - width:UINTEGER_32 <- z;
- - height:UINTEGER_32 <- w;
-
\ No newline at end of file
diff --git a/windows/gl_font.li b/windows/gl_font.li
deleted file mode 100644
index 6ae94e4..0000000
--- a/windows/gl_font.li
+++ /dev/null
@@ -1,73 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := GL_FONT;
-
- - comment := "Win32 - OpenGl rendered font";
-
- - external := `static HFONT hFont,hOldFont;`;
-
-Section Inherit
-
- + parent_font_abstract:Expanded GL_FONT_ABSTRACT;
-
-Section Public
-
- - default:FONT <-
- (
- create "Arial"
- );
-
- - load <-
- (
- + fontname:NATIVE_ARRAY[CHARACTER];
- + b,h:UINTEGER_32;
- + n:INTEGER;
-
- n := nb_chars;
- base := `glGenLists(@n)`:UINTEGER_32;
-
- h := font_height;
- fontname := name.to_external;
- `hFont = CreateFont(@h,0,0,0,FW_BOLD,
- FALSE,// italic
- FALSE,// underlined
- FALSE,// strikeout
- ANSI_CHARSET,OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,
- ANTIALIASED_QUALITY, // font quality
- FF_DONTCARE|DEFAULT_PITCH,
- @fontname);
- `;
- // select font & save old font to avoid memory leak
- `hOldFont = (HFONT)SelectObject(win.hdc, hFont)`;
-
- // cree des bitmaps a partir de la fonte
- b := base;
- `wglUseFontBitmaps(win.hdc, 32, @n, @b)`;
- );
-
- - unload <-
- (
- parent_font_abstract.unload;
- `SelectObject(win.hdc, hOldFont)`;
- );
\ No newline at end of file
diff --git a/windows/input_system.li b/windows/input_system.li
deleted file mode 100644
index 887ba2c..0000000
--- a/windows/input_system.li
+++ /dev/null
@@ -1,196 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := INPUT_SYSTEM;
-
- - comment := "gfx_engine: handle input";
-
- - external :=
- `
- extern void resize (int,int); // pour l'instant
- extern void event_keydown (int,int);
- extern void event_keyup (int,int);
- extern void event_mousemove (int,int);
- extern void event_mouseclick (int);
-
- MSG msg;
- POINT p;
-
- LRESULT CALLBACK WinProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- LONG lRet = 0;
- PAINTSTRUCT ps;
-
-
- switch (uMsg)
- {
- case WM_SIZE:
- if (!fullscreen)
- // resize only in windowed mode
- {
- resize (LOWORD(lParam),HIWORD(lParam));
- GetClientRect(win.hwnd, &win.rect);
- }
- break;
- case WM_KEYDOWN:
-
- event_keydown (wParam, lParam);
-
- break;
- case WM_KEYUP:
-
- event_keyup (wParam, lParam);
- break;
- // Mouse
- case WM_MOUSEMOVE:
-
- event_mousemove ((short)LOWORD(lParam), (short)HIWORD(lParam));
-
- break;
-
- case WM_LBUTTONDOWN:
- case WM_RBUTTONDOWN:
-
- event_mouseclick ((((wParam & MK_LBUTTON) != 0) << 1) | ((wParam & MK_RBUTTON) != 0));
-
- break;
-
- case WM_PAINT:
- BeginPaint(win.hwnd, &ps);
- EndPaint(win.hwnd, &ps);
- break;
-
- case WM_CLOSE:
- PostQuitMessage(0);
- break;
-
- default:
- return DefWindowProc(hwnd, uMsg, wParam, lParam);
- }
- return 0;
- }`;
-
-Section Inherit
-
- - parent_object:OBJECT := OBJECT;
-
-Section External
-
- - event_keydown (wparam,lparam:INTEGER) <-
- (
- + k:INTEGER;
-
- k := KEYCODE.get_key wparam;
- keys.put TRUE to k;
- OPENGL.listener.on_keydown k;
- );
-
- - event_keyup (wparam,lparam:INTEGER) <-
- (
- + k:INTEGER;
-
- k := KEYCODE.get_key wparam;
- keys.put FALSE to k;
- OPENGL.listener.on_keyup k;
- );
-
- - event_mousemove (x,y:INTEGER) <-
- (
- mouse_x := x;
- mouse_y := y;
-
- OPENGL.listener.on_mousemove (x,y);
- );
-
- - event_mouseclick b:INTEGER <-
- (
- OPENGL.listener.on_mouseclick b;
- );
-
-Section Public
-
- - make <-
- (
- // Remove this after compiler has been fixed...
- event_keydown (0,0);
- event_keyup (0,0);
- event_mousemove (0,0);
- event_mouseclick 0;
- );
-
- - keys:FAST_ARRAY[BOOLEAN] :=
- ( + result:FAST_ARRAY[BOOLEAN];
-
- result := FAST_ARRAY[BOOLEAN].create 256;
- result.set_all_with FALSE;
- result
- );
-
- - mouse_x:INTEGER;
- - mouse_y:INTEGER;
-
- // hack for windows
- - get_mouse_pos:(INTEGER,INTEGER) <-
- (
- `GetCursorPos(&p)`;
- (`p.x`:INTEGER, `p.y`:INTEGER)
- );
-
- - update:BOOLEAN <-
- (
- + go:BOOLEAN;
-
- go := TRUE;
- {go && {`PeekMessage (&msg, NULL, 0, 0, PM_REMOVE)` != 0}}.while_do {
- (`msg.message`:INTEGER = `WM_QUIT`:INTEGER).if {
- go := FALSE;
- } else {
- `TranslateMessage (&msg)`;
- `DispatchMessage (&msg)`;
- };
- };
- go
- );
-
- - keydown k:INTEGER :BOOLEAN <-
- (
- keys.item k
- );
-
- - keyup k:INTEGER :BOOLEAN <-
- (
- ! keys.item k
- );
-
- - set_up k:INTEGER <-
- (
- keys.put FALSE to k;
- );
-
- - warp_mouse (x,y:INTEGER) <-
- (
- mouse_x := x;
- mouse_y := y;
- `SetCursorPos (@x, at y)`;
- );
-
\ No newline at end of file
diff --git a/windows/keycode.li b/windows/keycode.li
deleted file mode 100644
index 3f8071c..0000000
--- a/windows/keycode.li
+++ /dev/null
@@ -1,83 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := KEYCODE;
-
- - comment := "Win32 key mapping";
-
-Section Inherit
-
- + parent_keycode:Expanded ABSTRACT_KEYCODE;
-
-Section Public
-
- - make <-
- (
- keys := HASHED_DICTIONARY[INTEGER,INTEGER].create;
-
- keys.add k_tab to (`VK_TAB`:INTEGER); // cf winuser.h
- keys.add k_enter to (`VK_RETURN`:INTEGER);
- keys.add k_escape to (`VK_ESCAPE`:INTEGER);
- keys.add k_space to (`VK_SPACE`:INTEGER);
- keys.add k_backspace to (`VK_BACK`:INTEGER);
-
- keys.add k_pause to (`VK_PAUSE`:INTEGER);
-
- keys.add k_up to (`VK_UP`:INTEGER);
- keys.add k_down to (`VK_DOWN`:INTEGER);
- keys.add k_left to (`VK_LEFT`:INTEGER);
- keys.add k_right to (`VK_RIGHT`:INTEGER);
-
- keys.add k_shift to (`VK_SHIFT`:INTEGER);
- keys.add k_del to (`VK_DELETE`:INTEGER);
- keys.add k_ctrl to (`VK_CONTROL`:INTEGER);
- // keys.add k_alt to (`XK_Alt_R`:INTEGER);
- keys.add k_ins to (`VK_INSERT`:INTEGER);
- keys.add k_pgdn to (`VK_NEXT`:INTEGER); //??
- keys.add k_pgup to (`VK_PRIOR`:INTEGER);//??
-
- keys.add k_f1 to (`VK_F1`:INTEGER);
- keys.add k_f2 to (`VK_F2`:INTEGER);
- keys.add k_f3 to (`VK_F3`:INTEGER);
- keys.add k_f4 to (`VK_F4`:INTEGER);
- keys.add k_f5 to (`VK_F5`:INTEGER);
- keys.add k_f6 to (`VK_F6`:INTEGER);
- keys.add k_f7 to (`VK_F7`:INTEGER);
- keys.add k_f8 to (`VK_F8`:INTEGER);
- keys.add k_f9 to (`VK_F9`:INTEGER);
- keys.add k_f10 to (`VK_F10`:INTEGER);
- keys.add k_f11 to (`VK_F11`:INTEGER);
- keys.add k_f12 to (`VK_F12`:INTEGER);
- );
-
- - get_key key:INTEGER :INTEGER <-
- (
- + result:INTEGER;
-
- keys.has key.if {
- result := keys.at key;
- } else {
- result := key;
- };
- result
- );
\ No newline at end of file
diff --git a/windows/opengl.li b/windows/opengl.li
deleted file mode 100644
index a34f60d..0000000
--- a/windows/opengl.li
+++ /dev/null
@@ -1,283 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Lisaac-OpenGL Library //
-// //
-// LSIIT - ULP - CNRS - INRIA - FRANCE //
-// //
-// This program is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program. If not, see <http://www.gnu.org/licenses/>. //
-// //
-// http://isaacproject.u-strasbg.fr/ //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
- + name := OPENGL;
-
- - external :=
- `#include <windows.h>
- #include <GL/gl.h>
- #include <GL/glu.h>
- //#include <GL/glext.h>
-
- #define GPA(funcname) wglGetProcAddress(funcname);
-
- struct glwin_window_t
- {
- HWND hwnd; // window handle
- RECT rect; // window rect
- HDC hdc; // device gdi
- HGLRC hrc; // device ogl
-
- HINSTANCE instance;
- WNDCLASS class;
- };
-
- struct glwin_window_t win;
- DEVMODE settings;
- int fullscreen;
-
- #define TIME_WRAP_VALUE (~(DWORD)0)
-
- PIXELFORMATDESCRIPTOR pfd;
- int pixelformat;
-
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
- LPSTR lpCmdLine, int nCmdShow)
- {
- win.instance = hInstance;
- main (0, NULL);
- return 0;
- }`;
-
-Section Inherit
-
- - parent_opengl_abstract:OPENGL_ABSTRACT := OPENGL_ABSTRACT;
-
-Section Public
-
- + name:STRING := "Opengl - Win32";
-
- - swap_buffers <-
- // post rendering
- (
- // flip double buffer
- `SwapBuffers (win.hdc)`;
- );
-
-Section External
-
- - resize (w,h:INTEGER) <-
- (
- (h != 0).if {
- width := w;
- height := h;
-
- viewport.make (0, 0, w, h);
-
- reshape.on_resize (w,h);
- };
- );
-
-Section Public
-
- - start:UINTEGER_32;
- - now:UINTEGER_32;
- - ticks:UINTEGER_32;
-
- - start_ticks <-
- (
- start := get_ticks;
- );
-
- - get_ticks:UINTEGER_32 <-
- (
- now := `timeGetTime()`:UINTEGER_32;
- (now < start).if {
- ticks := (`TIME_WRAP_VALUE`:UINTEGER_32 - start) + now;
- } else {
- ticks := now - start;
- };
- ticks
- );
-
- - delay ms:UINTEGER_32 <-
- (
- `Sleep(@ms)`;
- );
-
- - make (w,h:INTEGER) title s:ABSTRACT_STRING fullscreen b:BOOLEAN <-
- (
- + style,size:INTEGER;
- + wintitle:NATIVE_ARRAY[CHARACTER];
-
- init_subsystems;
-
- is_fullscreen := b;
- width := w;
- height := h;
- viewport := VIEWPORT.create (0,0,w,h);
-
- // Creation fenetre:
- `fullscreen = @b;
-
- memset(&win.class, 0, sizeof(WNDCLASS));
- win.class.style = CS_HREDRAW | CS_VREDRAW;
- win.class.lpfnWndProc = WinProc;
- win.class.hInstance = win.instance;
- win.class.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- win.class.hCursor = LoadCursor(NULL, IDC_ARROW);
- win.class.hbrBackground = (HBRUSH) (COLOR_WINDOW+1);
- win.class.lpszClassName = "IsaacClass";
-
- RegisterClass(&win.class);`;
-
- is_fullscreen.if {
- style := `WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN`:INTEGER;
-
- gl_fullscreen;
- //`ShowCursor(FALSE)`;
- } else {
- // simple window
- style := `WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN`:INTEGER;
- };
-
- `win.rect.left = 0;
- win.rect.right = @w;
- win.rect.top = 0;
- win.rect.bottom = @h;
-
- AdjustWindowRect (&win.rect, @style, 0);`;
-
- // create window
- wintitle := s.to_external;
- `win.hwnd = CreateWindow("IsaacClass", @wintitle, @style, 0, 0, win.rect.right - win.rect.left, win.rect.bottom - win.rect.top, NULL, NULL, win.instance, NULL);`;
- (`win.hwnd`:INTEGER = 0).if {
- fatal_error "failed to create window";
- };
-
- `ShowWindow (win.hwnd, SW_SHOWNORMAL);
- UpdateWindow (win.hwnd);
- SetFocus (win.hwnd);
-
- win.hdc = GetDC (win.hwnd);`;
-
- // choose pixel format compatible for OpenGL
- `pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
- pfd.nVersion = 1;
- pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;`;
- has_doublebuffer.if {
- `pfd.dwFlags |= PFD_DOUBLEBUFFER`;
- };
- `pfd.dwLayerMask = PFD_MAIN_PLANE;
- pfd.iPixelType = PFD_TYPE_RGBA;`; // PFD_TYPE_COLORINDEX;
-
- size := buffer_size;
- `pfd.cColorBits = @size`;
-
- has_depth_buffer.if {
- size := depth_size;
- `pfd.cDepthBits = @size`;
- } else {
- `pfd.cDepthBits = 0`;
- };
- has_stencil_buffer.if {
- size := stencil_size;
- `pfd.cStencilBits = @size`;
- } else {
- `pfd.cStencilBits = 0`;
- };
- has_accum_buffer.if {
- size := accum_red_size;
- `pfd.cAccumRedBits = @size`;
- size := accum_green_size;
- `pfd.cAccumGreenBits = @size`;
- size := accum_blue_size;
- `pfd.cAccumBlueBits = @size`;
- size := accum_alpha_size;
- `pfd.cAccumAlphaBits = @size`;
- size := accum_red_size+accum_green_size+accum_blue_size+accum_alpha_size;
- `pfd.cAccumBits = @size`;
- } else {
- `pfd.cAccumBits = 0`;
- };
- size := red_size;
- `pfd.cRedBits = @size`;
- size := green_size;
- `pfd.cGreenBits = @size`;
- size := blue_size;
- `pfd.cBlueBits = @size`;
- size := alpha_size;
- `pfd.cAlphaBits = @size`;
-
- `pixelformat = ChoosePixelFormat(win.hdc, &pfd);`;
- (`pixelformat`:INTEGER = 0).if {
- fatal_error "ChoosePixelFormat failed";
- };
- (`SetPixelFormat(win.hdc, pixelformat, &pfd)`:INTEGER = 0).if {
- fatal_error "SetPixelFormat failed";
- };
-
- `DescribePixelFormat(win.hdc, pixelformat, sizeof(pfd), &pfd)`;
-
- // create OpenGL rendering context
- `win.hrc = wglCreateContext (win.hdc);
- wglMakeCurrent(win.hdc, win.hrc);
- `;
-
- initialize;
- resize (width,height);
- );
-
- //Section External
-
- - gl_fullscreen <-
- (
- + w,h,result:INTEGER;
-
- w := width;
- h := height;
-
- `memset(&settings,0,sizeof(settings))`;
- (`EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&settings)`:INTEGER = 0).if {
- fatal_error "failed to display display settings";
- };
- `settings.dmPelsWidth = @w;
- settings.dmPelsHeight = @h;
- settings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;`;
-
- result := `ChangeDisplaySettings(&settings,CDS_FULLSCREEN)`:INTEGER;
- (result != `DISP_CHANGE_SUCCESSFUL`:INTEGER).if {
- fatal_error "Fullscreen mode not compatible";
- };
- );
-
-Section Public
-
- - shutdown <-
- (
- // release OpenGl context
- (`win.hrc`:INTEGER != 0).if {
- `wglMakeCurrent (NULL, NULL)`;
- `wglDeleteContext (win.hrc)`;
- };
- // release gdi context
- (`win.hdc`:INTEGER != 0).if {
- `ReleaseDC(win.hwnd, win.hdc)`;
- };
- is_fullscreen.if {
- `ChangeDisplaySettings(NULL,0)`;
- `ShowCursor(TRUE)`;
- };
- `UnregisterClass("IsaacClass", win.instance)`;
- `PostQuitMessage(0)`;
- );
\ No newline at end of file
--
Lisaac library opengl-binding
More information about the Lisaac-commits
mailing list