[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