gzz-commits
[Top][All Lists]
Advanced

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

[Gzz-commits] gzz/gzz gfx/gl/PageSpanPaper.java gfx/gl/pagesp...


From: Janne V. Kujala
Subject: [Gzz-commits] gzz/gzz gfx/gl/PageSpanPaper.java gfx/gl/pagesp...
Date: Sun, 02 Mar 2003 08:49:33 -0500

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Janne V. Kujala <address@hidden>        03/03/02 08:49:32

Modified files:
        gzz/gfx/gl     : PageSpanPaper.java pagespanpaper.py 
        gzz/view/buoy  : buoymanager.py 

Log message:
        Add text halo enhancement (requires NV10) to PageSpanPaper; Ctrl-H to 
toggle in buoyoing

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/PageSpanPaper.java.diff?tr1=1.11&tr2=1.12&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/pagespanpaper.py.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/buoy/buoymanager.py.diff?tr1=1.49&tr2=1.50&r1=text&r2=text

Patches:
Index: gzz/gzz/gfx/gl/PageSpanPaper.java
diff -u gzz/gzz/gfx/gl/PageSpanPaper.java:1.11 
gzz/gzz/gfx/gl/PageSpanPaper.java:1.12
--- gzz/gzz/gfx/gl/PageSpanPaper.java:1.11      Fri Feb 21 15:02:38 2003
+++ gzz/gzz/gfx/gl/PageSpanPaper.java   Sun Mar  2 08:49:31 2003
@@ -57,6 +57,7 @@
     Paper bg;
 
     Paper bgPaper;
+    Paper bgHaloPaper;
     Paper noBgPaper;
 
     /** Return callgl code to bind this page's texture
@@ -101,6 +102,13 @@
      */
     public static String setupDualPass = null;
 
+    /** Set up code for being the extra pass.
+     * Take the value from texunit 0 and blend on top of it halo of texunit 1.
+     */
+    public static String setupHaloDualPass = null;
+
+    public static boolean withHalo = false;
+
     public static String teardown = null;
 
     int paperSeed;
@@ -125,30 +133,56 @@
                    throw new Error("Trying to use bg without papermill");
                bg = paperMill.getOptimizedPaper(paperSeed, paperMillWindow);
            }
-           if(bgPaper == null) {
-               bgPaper = (Paper)bg.clone();
-               // Check if we have a single pass and single texture
-               // If yes, *assume*!!! that the right thing
-               // to do is to just put the RGB value out.
-               if(bgPaper.getNPasses() == 1 &&
-                  bgPaper.getPass(0).getNTexGens() == 1) {
-
-                   Paper.Pass pass = bgPaper.getPass(0);
-                   pass.setNTexGens(2);
-                   pass.putNormalTexGen(1, getTexgen());
-                   pass.setSetupcode(
-                               pass.getSetupcode() +
-                               setupDualPass + getBindTexture(1));
-                   pass.setTeardowncode(teardown + 
-                                       pass.getTeardowncode());
-
-               } else {
-                   // We don't have an optimized paper;
-                   // add a pass.
-                   addPaperPass(bgPaper, setupExtraPass);
+           if(withHalo) {
+               if (bgHaloPaper == null) {
+                   bgHaloPaper = (Paper)bg.clone();
+                   if(bgHaloPaper.getNPasses() == 1 &&
+                      bgHaloPaper.getPass(0).getNTexGens() == 1) {
+                       // Draw text-haloed paper
+                       Paper.Pass pass = bgHaloPaper.getPass(0);
+                       pass.setNTexGens(2);
+                       pass.putNormalTexGen(1, getTexgen());
+                       pass.setSetupcode(
+                                         pass.getSetupcode() +
+                                         setupHaloDualPass + 
+                                         getBindTexture(1));
+                       pass.setTeardowncode(teardown + 
+                                            pass.getTeardowncode());
+                       
+                       // Draw text
+                       addPaperPass(bgHaloPaper, setupExtraPass);
+                   } else {
+                       // We don't have an optimized paper;
+                       // add a pass.
+                       addPaperPass(bgHaloPaper, setupExtraPass);
+                       // FIXME: add halo
+                   }
+               }
+               return bgHaloPaper;
+           } else {
+               if(bgPaper == null) {
+                   bgPaper = (Paper)bg.clone();
+                   // Check if we have a single pass and single texture
+                   // If yes, *assume*!!! that the right thing
+                   // to do is to just put the RGB value out.
+                   if(bgPaper.getNPasses() == 1 &&
+                      bgPaper.getPass(0).getNTexGens() == 1) {
+                       Paper.Pass pass = bgPaper.getPass(0);
+                       pass.setNTexGens(2);
+                       pass.putNormalTexGen(1, getTexgen());
+                       pass.setSetupcode(
+                                         pass.getSetupcode() +
+                                         setupDualPass + getBindTexture(1));
+                       pass.setTeardowncode(teardown + 
+                                            pass.getTeardowncode());
+                   } else {
+                       // We don't have an optimized paper;
+                       // add a pass.
+                       addPaperPass(bgPaper, setupExtraPass);
+                   }
                }
+               return bgPaper;
            }
-           return bgPaper;
        } else {
            if(noBgPaper == null) {
                noBgPaper = new Paper();
Index: gzz/gzz/gfx/gl/pagespanpaper.py
diff -u gzz/gzz/gfx/gl/pagespanpaper.py:1.7 gzz/gzz/gfx/gl/pagespanpaper.py:1.8
--- gzz/gzz/gfx/gl/pagespanpaper.py:1.7 Fri Feb 21 15:02:38 2003
+++ gzz/gzz/gfx/gl/pagespanpaper.py     Sun Mar  2 08:49:32 2003
@@ -21,7 +21,8 @@
 # 
 
 
-from gzz.gfx.gl import PageSpanPaper
+from gzz.gfx.gl import PageSpanPaper, GL
+from gfx.libutil.nvcode import parseCombiner
 
 # The filters for pagespanpaper, really clunky
 # to write in java.
@@ -57,6 +58,32 @@
     ActiveTexture TEXTURE1
     TexEnv TEXTURE_ENV TEXTURE_ENV_MODE MODULATE
 """
+PageSpanPaper.withHalo = GL.hasExtension("GL_NV_register_combiners")
+PageSpanPaper.setupHaloDualPass = parseCombiner("""
+    PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT CURRENT_BIT
+    ActiveTexture TEXTURE0
+    Enable TEXTURE_2D
+    Disable BLEND
+    ActiveTexture TEXTURE1
+    TexEnv TEXTURE_FILTER_CONTROL TEXTURE_LOD_BIAS 3
+    ActiveTexture TEXTURE0
+
+    Enable REGISTER_COMBINERS_NV
+    CONST0 = 0 0 0 .5
+
+    # Get average component multiplied by 12
+    SPARE0 = ((1-TEX1) . (1))*4
+
+    # Multiply by another 3
+    SPARE0 = (SPARE0 . (1))*1
+
+    # Limit maximum effect
+    EF = SPARE0 * CONST0.a
+
+    # Blend the halo over the texture
+    color = EF * (1) + (1 - EF) * TEX0
+    alpha = 1
+""")
 PageSpanPaper.teardown = """
     PopAttrib
 """
Index: gzz/gzz/view/buoy/buoymanager.py
diff -u gzz/gzz/view/buoy/buoymanager.py:1.49 
gzz/gzz/view/buoy/buoymanager.py:1.50
--- gzz/gzz/view/buoy/buoymanager.py:1.49       Fri Feb 21 15:02:45 2003
+++ gzz/gzz/view/buoy/buoymanager.py    Sun Mar  2 08:49:32 2003
@@ -166,6 +166,8 @@
             self.animationCS_main = None
 
     def key(self, key):
+        if key == "Ctrl-H":
+            gzz.gfx.gl.PageSpanPaper.withHalo = not 
gzz.gfx.gl.PageSpanPaper.withHalo 
         if key == "Print":
             saveanim.saveframe("buoyoing.png", w)
             




reply via email to

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