USING: kernel namespaces threads math math.vectors quotations sequences opengl opengl.gl colors ui ui.gestures ui.gadgets ui.gadgets.packs ui.gadgets.labels ui.gadgets.buttons ui.gadgets.lib ui.gadgets.slate ui.gadgets.theme vars rewrite-closures self pos ori turtle opengl.camera lsys.tortoise lsys.tortoise.graphics lsys.strings.rewrite lsys.strings.interpret ; ! lsys.strings ! lsys.strings.rewrite ! lsys.strings.interpret IN: lsys.ui ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! VAR: slate ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! VAR: camera ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! VAR: model ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! : display ( -- ) black gl-clear GL_FLAT glShadeModel GL_PROJECTION glMatrixMode glLoadIdentity -1 1 -1 1 1.5 200 glFrustum GL_MODELVIEW glMatrixMode glLoadIdentity camera> do-look-at GL_FRONT_AND_BACK GL_LINE glPolygonMode white gl-color GL_LINES glBegin { 0 0 0 } gl-vertex { 0 0 1 } gl-vertex glEnd color> set-color model> glCallList ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! : result>model ( -- ) slate> find-gl-context model> GL_COMPILE glNewList result> interpret glEndList ; : build-model ( -- ) tortoise-stack> delete-all vertices> delete-all reset-turtle default-values> call model-values> call result>model [ display ] closed-quot slate> set-slate-action slate> relayout-1 ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! USING: hashtables namespaces.lib ui.gadgets.handler ; : camera-action ( quot -- quot ) [ drop [ ] camera> with-self slate> relayout-1 ] make* closed-quot ; VAR: frame VAR: handler DEFER: model-chooser DEFER: scene-chooser DEFER: empty-model ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! : lsys-controller ( -- ) { [ "Load"