gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] gzz/gfx librenderables/renderables.py libcallgl...


From: Janne V. Kujala
Subject: [Gzz-commits] gzz/gfx librenderables/renderables.py libcallgl...
Date: Mon, 04 Nov 2002 03:29:39 -0500

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Janne V. Kujala <address@hidden>        02/11/04 03:29:37

Modified files:
        gfx/librenderables: renderables.py 
        gfx/libcallgl  : callgl.cxx 
Added files:
        gfx/demo       : irreguellipse.py 

Log message:
        Start IrregularEllipse renderable

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/librenderables/renderables.py.diff?tr1=1.126&tr2=1.127&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/libcallgl/callgl.cxx.diff?tr1=1.33&tr2=1.34&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/demo/irreguellipse.py?rev=1.1

Patches:
Index: gzz/gfx/libcallgl/callgl.cxx
diff -u gzz/gfx/libcallgl/callgl.cxx:1.33 gzz/gfx/libcallgl/callgl.cxx:1.34
--- gzz/gfx/libcallgl/callgl.cxx:1.33   Fri Nov  1 14:13:45 2002
+++ gzz/gfx/libcallgl/callgl.cxx        Mon Nov  4 03:29:35 2002
@@ -720,7 +720,8 @@
                 << getTokenString(TARGET) 
                 << " program\n"; 
 
-#ifdef GL_PROGRAM_ERROR_STRING_ARB // XXX: how to test support?
+#if 0 // XXX: disabled until we have glwrapper support
+//#ifdef GL_PROGRAM_ERROR_STRING_ARB // XXX: how to test support?
        glBindProgramARB(TARGET, id);
        glProgramStringARB(TARGET, GL_PROGRAM_FORMAT_ASCII_ARB, 
                           source.length(), (GLubyte*)source.data());
Index: gzz/gfx/librenderables/renderables.py
diff -u gzz/gfx/librenderables/renderables.py:1.126 
gzz/gfx/librenderables/renderables.py:1.127
--- gzz/gfx/librenderables/renderables.py:1.126 Sun Nov  3 13:28:16 2002
+++ gzz/gfx/librenderables/renderables.py       Mon Nov  4 03:29:35 2002
@@ -1116,6 +1116,82 @@
         """,
 }    ,
 
+# coords1: paper => window
+# coords2: frame => paper (assumed to be affine)
+#
+# texscale is paper-texture scaling
+# ripple_scale is the amplitude-period scale of the texture
+{
+    "Type" : "2",
+    "Name": "IrregularEllipse",
+    "Data": """float texscale; float ripple_scale; int mode; CallGLCode setup;
+               float dicefactor;""",
+    "Params" : """
+           float texscale, float ripple_scale, int mode, String setupcode,
+           float dicefactor
+       """,
+    "ParamCode" : """
+            this->texscale = texscale;
+            this->ripple_scale = ripple_scale;
+            this->mode = mode;
+            setup = CallGLCode(string(setupcode.begin(), 
setupcode.end()).c_str());
+           this->dicefactor = dicefactor;
+       """,
+    "RenderCode" : """
+        DBG(dbg) << "IrregularEllipse\\n";
+
+        int n = 20;
+        std::vector<ZPt> vert(n+1);
+        std::vector<ZVec> norm(n+1);
+
+        for (int i = 0; i <= n; i++) { 
+            float a = i * 2*M_PI / n;
+            vert[i] = coords2.transform(ZPt(cos(a), sin(a), 0));
+        }
+
+        int angles = 3;
+
+        setup();
+        
+        glBegin(GL_QUAD_STRIP);
+        for (int i = 0; i <= n; i++) {
+            ZPt p = vert[i];
+            ZVec norm = (vert[(i+1) % n] - vert[(i+n-1) % 
n]).cw90().normalize();
+            norm *= 0.5 * ripple_scale * texscale;
+
+
+            float dotvec[4] = {0,0,0,0};
+            float angle = atan2(-norm.x, norm.y); // angle(norm.cw90())
+
+            float a = (angle + M_PI) * angles * (1 / M_PI);
+            int ind = (int)a;
+            float f = a - (int)a;
+            
+            dotvec[ind % angles] = 1 - f;
+            dotvec[(ind + 1) % angles] = f;
+
+            if (mode)
+                glColor4fv(dotvec);
+            else
+                glColor4f(0, 0, 0, 1);
+        
+            // XXX: need to compute multiplier according to
+            //      quad inside/outside length difference
+            glTexCoord4f(p.x, p.y, p.z, texscale);
+            glSecondaryColor3fEXT(1,1,1);
+            coords1.vertex(p - norm);
+            glSecondaryColor3fEXT(0,0,0);
+            coords1.vertex(p + norm);
+        }
+        glEnd();
+
+        glPopAttrib();
+
+        DBG(dbg) << "IrregularEllipse done\\n";
+
+        """,
+}    ,
+
 {
     "Type": "2",
     "Name": "CalendarPaper",




reply via email to

[Prev in Thread] Current Thread [Next in Thread]