]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/nehe/5/5.factor
factor: trim using lists
[factor.git] / extra / nehe / 5 / 5.factor
old mode 100755 (executable)
new mode 100644 (file)
index 1a416c9..190312f
-USING: arrays kernel math opengl opengl.gl opengl.glu ui\r
-ui.gadgets ui.render threads accessors ;\r
-IN: nehe.5\r
-\r
-TUPLE: nehe5-gadget < gadget rtri rquad thread quit? ;\r
-: width 256 ;\r
-: height 256 ;\r
-: redraw-interval 10 ;\r
-\r
-: <nehe5-gadget> (  -- gadget )\r
-  nehe5-gadget new-gadget\r
-    0.0 >>rtri\r
-    0.0 >>rquad ;\r
-\r
-M: nehe5-gadget pref-dim* ( gadget -- dim )\r
-  drop width height 2array ;\r
-\r
-M: nehe5-gadget draw-gadget* ( gadget -- )\r
-  GL_PROJECTION glMatrixMode\r
-  glLoadIdentity\r
-  45.0 width height / >float 0.1 100.0 gluPerspective\r
-  GL_MODELVIEW glMatrixMode\r
-  glLoadIdentity\r
-  GL_SMOOTH glShadeModel\r
-  0.0 0.0 0.0 0.0 glClearColor\r
-  1.0 glClearDepth\r
-  GL_DEPTH_TEST glEnable\r
-  GL_LEQUAL glDepthFunc\r
-  GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST glHint\r
-  GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT bitor glClear\r
-  glLoadIdentity\r
-  -1.5 0.0 -6.0 glTranslatef\r
-  dup rtri>> 0.0 1.0 0.0 glRotatef\r
-\r
-  GL_TRIANGLES [\r
-    1.0 0.0 0.0 glColor3f\r
-    0.0 1.0 0.0 glVertex3f\r
-    0.0 1.0 0.0 glColor3f\r
-    -1.0 -1.0 1.0 glVertex3f\r
-    0.0 0.0 1.0 glColor3f\r
-    1.0 -1.0 1.0 glVertex3f\r
-\r
-    1.0 0.0 0.0 glColor3f\r
-    0.0 1.0 0.0 glVertex3f\r
-    0.0 0.0 1.0 glColor3f\r
-    1.0 -1.0 1.0 glVertex3f\r
-    0.0 1.0 0.0 glColor3f\r
-    1.0 -1.0 -1.0 glVertex3f\r
-\r
-    1.0 0.0 0.0 glColor3f\r
-    0.0 1.0 0.0 glVertex3f\r
-    0.0 1.0 0.0 glColor3f\r
-    1.0 -1.0 -1.0 glVertex3f\r
-    0.0 0.0 1.0 glColor3f\r
-    -1.0 -1.0 -1.0 glVertex3f\r
-\r
-    1.0 0.0 0.0 glColor3f\r
-    0.0 1.0 0.0 glVertex3f\r
-    0.0 0.0 1.0 glColor3f\r
-    -1.0 -1.0 -1.0 glVertex3f\r
-    0.0 1.0 0.0 glColor3f\r
-    -1.0 -1.0 1.0 glVertex3f\r
-  ] do-state\r
-\r
-  glLoadIdentity\r
-\r
-  1.5 0.0 -7.0 glTranslatef\r
-  dup rquad>> 1.0 0.0 0.0 glRotatef\r
-  GL_QUADS [\r
-    0.0 1.0 0.0 glColor3f\r
-    1.0 1.0 -1.0 glVertex3f\r
-    -1.0 1.0 -1.0 glVertex3f\r
-    -1.0 1.0 1.0 glVertex3f\r
-    1.0 1.0 1.0 glVertex3f\r
-\r
-    1.0 0.5 0.0 glColor3f\r
-    1.0 -1.0 1.0 glVertex3f\r
-    -1.0 -1.0 1.0 glVertex3f\r
-    -1.0 -1.0 -1.0 glVertex3f\r
-    1.0 -1.0 -1.0 glVertex3f\r
-\r
-    1.0 0.0 0.0 glColor3f\r
-    1.0 1.0 1.0 glVertex3f\r
-    -1.0 1.0 1.0 glVertex3f\r
-    -1.0 -1.0 1.0 glVertex3f\r
-    1.0 -1.0 1.0 glVertex3f\r
-\r
-    1.0 1.0 0.0 glColor3f\r
-    1.0 -1.0 -1.0 glVertex3f\r
-    -1.0 -1.0 -1.0 glVertex3f\r
-    -1.0 1.0 -1.0 glVertex3f\r
-    1.0 1.0 -1.0 glVertex3f\r
-\r
-    0.0 0.0 1.0 glColor3f\r
-    -1.0 1.0 1.0 glVertex3f\r
-    -1.0 1.0 -1.0 glVertex3f\r
-    -1.0 -1.0 -1.0 glVertex3f\r
-    -1.0 -1.0 1.0 glVertex3f\r
-\r
-    1.0 0.0 1.0 glColor3f\r
-    1.0 1.0 -1.0 glVertex3f\r
-    1.0 1.0 1.0 glVertex3f\r
-    1.0 -1.0 1.0 glVertex3f\r
-    1.0 -1.0 -1.0 glVertex3f\r
-  ] do-state \r
-  [ 0.2 + ] change-rtri\r
-  [ 0.15 - ] change-rquad drop ;\r
-\r
-: nehe5-update-thread ( gadget -- )  \r
-  dup quit?>> [\r
-    drop\r
-  ] [\r
-    redraw-interval sleep \r
-    dup relayout-1  \r
-    nehe5-update-thread \r
-  ] if ;\r
-\r
-M: nehe5-gadget graft* ( gadget -- )\r
-  f >>quit?\r
-  [ nehe5-update-thread ] in-thread drop ;\r
-\r
-M: nehe5-gadget ungraft* ( gadget -- )\r
-  t >>quit? drop ;\r
-\r
-\r
-: run5 ( -- )\r
-  <nehe5-gadget> "NeHe Tutorial 5" open-window ;\r
+USING: accessors calendar kernel literals math
+opengl.demo-support opengl.gl opengl.glu threads ui ui.gadgets
+ui.pixel-formats ui.render ;
+IN: nehe.5
+
+TUPLE: nehe5-gadget < gadget rtri rquad thread quit? ;
+CONSTANT: width 256
+CONSTANT: height 256
+: redraw-interval ( -- dt ) 10 milliseconds ;
+
+: <nehe5-gadget> (  -- gadget )
+    nehe5-gadget new
+    0.0 >>rtri
+    0.0 >>rquad ;
+
+M: nehe5-gadget draw-gadget* ( gadget -- )
+    GL_PROJECTION glMatrixMode
+    glLoadIdentity
+    45.0 width height / >float 0.1 100.0 gluPerspective
+    GL_MODELVIEW glMatrixMode
+    glLoadIdentity
+    GL_SMOOTH glShadeModel
+    0.0 0.0 0.0 0.0 glClearColor
+    1.0 glClearDepth
+    GL_DEPTH_TEST glEnable
+    GL_LEQUAL glDepthFunc
+    GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST glHint
+    GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT bitor glClear
+    glLoadIdentity
+    -1.5 0.0 -6.0 glTranslatef
+    dup rtri>> 0.0 1.0 0.0 glRotatef
+
+    GL_TRIANGLES [
+        1.0 0.0 0.0 glColor3f
+        0.0 1.0 0.0 glVertex3f
+        0.0 1.0 0.0 glColor3f
+        -1.0 -1.0 1.0 glVertex3f
+        0.0 0.0 1.0 glColor3f
+        1.0 -1.0 1.0 glVertex3f
+
+        1.0 0.0 0.0 glColor3f
+        0.0 1.0 0.0 glVertex3f
+        0.0 0.0 1.0 glColor3f
+        1.0 -1.0 1.0 glVertex3f
+        0.0 1.0 0.0 glColor3f
+        1.0 -1.0 -1.0 glVertex3f
+
+        1.0 0.0 0.0 glColor3f
+        0.0 1.0 0.0 glVertex3f
+        0.0 1.0 0.0 glColor3f
+        1.0 -1.0 -1.0 glVertex3f
+        0.0 0.0 1.0 glColor3f
+        -1.0 -1.0 -1.0 glVertex3f
+
+        1.0 0.0 0.0 glColor3f
+        0.0 1.0 0.0 glVertex3f
+        0.0 0.0 1.0 glColor3f
+        -1.0 -1.0 -1.0 glVertex3f
+        0.0 1.0 0.0 glColor3f
+        -1.0 -1.0 1.0 glVertex3f
+    ] do-state
+
+    glLoadIdentity
+
+    1.5 0.0 -7.0 glTranslatef
+    dup rquad>> 1.0 0.0 0.0 glRotatef
+    GL_QUADS [
+        0.0 1.0 0.0 glColor3f
+        1.0 1.0 -1.0 glVertex3f
+        -1.0 1.0 -1.0 glVertex3f
+        -1.0 1.0 1.0 glVertex3f
+        1.0 1.0 1.0 glVertex3f
+
+        1.0 0.5 0.0 glColor3f
+        1.0 -1.0 1.0 glVertex3f
+        -1.0 -1.0 1.0 glVertex3f
+        -1.0 -1.0 -1.0 glVertex3f
+        1.0 -1.0 -1.0 glVertex3f
+
+        1.0 0.0 0.0 glColor3f
+        1.0 1.0 1.0 glVertex3f
+        -1.0 1.0 1.0 glVertex3f
+        -1.0 -1.0 1.0 glVertex3f
+        1.0 -1.0 1.0 glVertex3f
+
+        1.0 1.0 0.0 glColor3f
+        1.0 -1.0 -1.0 glVertex3f
+        -1.0 -1.0 -1.0 glVertex3f
+        -1.0 1.0 -1.0 glVertex3f
+        1.0 1.0 -1.0 glVertex3f
+
+        0.0 0.0 1.0 glColor3f
+        -1.0 1.0 1.0 glVertex3f
+        -1.0 1.0 -1.0 glVertex3f
+        -1.0 -1.0 -1.0 glVertex3f
+        -1.0 -1.0 1.0 glVertex3f
+
+        1.0 0.0 1.0 glColor3f
+        1.0 1.0 -1.0 glVertex3f
+        1.0 1.0 1.0 glVertex3f
+        1.0 -1.0 1.0 glVertex3f
+        1.0 -1.0 -1.0 glVertex3f
+    ] do-state
+    [ 0.2 + ] change-rtri
+    [ 0.15 - ] change-rquad drop ;
+
+: nehe5-update-thread ( gadget -- )
+    dup quit?>> [
+        drop
+    ] [
+        redraw-interval sleep
+        dup relayout-1
+        nehe5-update-thread
+    ] if ;
+
+M: nehe5-gadget graft* ( gadget -- )
+    f >>quit?
+    [ nehe5-update-thread ] curry in-thread ;
+
+M: nehe5-gadget ungraft* ( gadget -- )
+    t >>quit? drop ;
+
+MAIN-WINDOW: run5
+    {
+        { title "NeHe Tutorial 5" }
+        { pref-dim { $ width $ height } }
+        { pixel-format-attributes {
+            windowed
+            double-buffered
+            T{ depth-bits { value 16 } }
+        } }
+    }
+    <nehe5-gadget> >>gadgets ;