gzz-commits
[Top][All Lists]
Advanced

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

[Gzz-commits] gzz/gfx demo/papertest.py demo/color/colors.py ...


From: Janne V. Kujala
Subject: [Gzz-commits] gzz/gfx demo/papertest.py demo/color/colors.py ...
Date: Wed, 25 Sep 2002 07:28:12 -0400

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Janne V. Kujala <address@hidden>        02/09/25 07:28:11

Modified files:
        gfx/demo       : papertest.py 
        gfx/demo/color : colors.py 
        gfx/libcolor   : spaces.py 
        gfx/libpaper   : colors.py 

Log message:
        Experimenting with colors

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/demo/papertest.py.diff?tr1=1.27&tr2=1.28&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/demo/color/colors.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/libcolor/spaces.py.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/libpaper/colors.py.diff?tr1=1.6&tr2=1.7&r1=text&r2=text

Patches:
Index: gzz/gfx/demo/color/colors.py
diff -c gzz/gfx/demo/color/colors.py:1.4 gzz/gfx/demo/color/colors.py:1.5
*** gzz/gfx/demo/color/colors.py:1.4    Mon Sep 23 05:09:29 2002
--- gzz/gfx/demo/color/colors.py        Wed Sep 25 07:28:11 2002
***************
*** 255,260 ****
--- 255,339 ----
        """))
  
  
+ class CIELABScene2:
+     def __init__(self):
+         self.angle = None
+     def key(self, k):
+         a = self.angle or 0
+         if k == "+": self.angle = a + 5
+         if k == "-": self.angle = a - 5
+         if k == "0": self.angle = None
+         
+         pass
+     def scene(self, vs):
+       putnoc(vs, background((1.0,1.0,1.0)))
+ 
+       putnoc(vs, getDList("""
+           PushAttrib POLYGON_BIT ENABLE_BIT                PopMatrix
+ 
+           Disable ALPHA_TEST
+           Disable DEPTH_TEST
+           Disable BLEND
+           Disable TEXTURE_2D
+           Color 1 0.1 1
+       """))
+ 
+       dsiz = 800
+         n = 16
+       for b in range(0,n):
+           l = 100 * (b+.5) /n
+ 
+             vs.put(GLRen.createLABSlice(0, l),
+                    "labslice"+str(b),
+                    10, 600, 450, dsiz*.01, dsiz*.01)
+ 
+         cs = vs.coords.affineCoordsys(0, "foo", 10, 600, 450,
+                                       dsiz*.005, 0, 0, dsiz*.005)
+ 
+       vs.map.put(getDList("""
+             Color 1 1 1
+             Begin LINES
+             Vertex -100 0
+             Vertex +100 0
+             Vertex 0 -100
+             Vertex 0 +100
+             End
+         """), cs)
+ 
+         i = 0
+         for rgb in [ (1,0,0), (1,.5,0), (1,1,0), (.5,1,0),
+                      (0,1,0), (0,1,.5), (0,1,1), (0,.5,1),
+                      (0,0,1), (.5,0,1), (1,0,1), (1,0,.5) ]:
+             lab = RGBtoLAB(rgb)
+             vs.map.put(getDList("""
+             Color 0 0 0
+             PointSize %s
+             Begin POINTS
+             Vertex %s %s
+             End
+             """ % (10 - 5*i, lab[1], lab[2])), cs)
+             i = 1 - i
+ 
+         if self.angle != None:
+             vs.map.put(getDList("""
+                 PushMatrix
+                 Rotate %s 0 0 1
+                 Color 1 1 1
+                 Begin QUADS
+                 Vertex 0 -150
+                 Vertex 0 +150
+                 Vertex 200 +150
+                 Vertex 200 -150
+                 End
+                 PopMatrix
+                 """ % (self.angle)), cs)
+ 
+ 
+       putnoc(vs, getDList("""
+           PopAttrib
+       """))
+ 
+ 
  def lightcolor():
      c = (0,0,0)
      while reduce(lambda x,y:x+y, c) < 1.5:
***************
*** 316,319 ****
        AbstractUpdateManager.setNoAnimation()
      elif k == "3":
          currentScene = CIELABScene()
!       AbstractUpdateManager.setNoAnimation()
--- 395,401 ----
        AbstractUpdateManager.setNoAnimation()
      elif k == "3":
          currentScene = CIELABScene()
!       #AbstractUpdateManager.setNoAnimation()
!     elif k == "4":
!         currentScene = CIELABScene2()
!       #AbstractUpdateManager.setNoAnimation()
Index: gzz/gfx/demo/papertest.py
diff -c gzz/gfx/demo/papertest.py:1.27 gzz/gfx/demo/papertest.py:1.28
*** gzz/gfx/demo/papertest.py:1.27      Mon Sep 23 04:37:04 2002
--- gzz/gfx/demo/papertest.py   Wed Sep 25 07:28:11 2002
***************
*** 120,126 ****
      def key(self, k):
          oldseed = self.seed
          if k >= "0" and k <= "9": self.seed = self.seed * 10 + int(k)
!         if k == "BackSpace": self.seed = self.seed / 10
        if k == "a":
            self.aniso = 1 - self.aniso
            self.reinit = 1
--- 120,126 ----
      def key(self, k):
          oldseed = self.seed
          if k >= "0" and k <= "9": self.seed = self.seed * 10 + int(k)
!         if k == "BackSpace" or k == "Backspace": self.seed = self.seed / 10
        if k == "a":
            self.aniso = 1 - self.aniso
            self.reinit = 1
Index: gzz/gfx/libcolor/spaces.py
diff -c gzz/gfx/libcolor/spaces.py:1.5 gzz/gfx/libcolor/spaces.py:1.6
*** gzz/gfx/libcolor/spaces.py:1.5      Tue Sep 24 09:09:24 2002
--- gzz/gfx/libcolor/spaces.py  Wed Sep 25 07:28:11 2002
***************
*** 77,85 ****
--- 77,96 ----
      a = 100 * math.cos(ang)
      b = 100 * math.sin(ang)
      rgb = LABtoRGB([L,a,b])
+ 
+     return LABclamp(rgb)
+ 
+ def LABclamp(rgb):
+     """Clamp a RGB color into [0,1]^3 towards the CIELAB L-axis 
+ 
+     rgb: the color in RGB709
+     returns: the clamped color in RGB709
+     """
      if len(filter((lambda x: x<0 or x>1), rgb)) == 0:
          return rgb
  
+     (L,a,b) = RGBtoLAB(rgb)
+ 
      r = 0
      bit = .5
      for iter in range(0,10):
***************
*** 88,92 ****
              r = r + bit
          bit = bit * .5
      return LABtoRGB([L,r*a,r*b])
! 
! 
--- 99,102 ----
              r = r + bit
          bit = bit * .5
      return LABtoRGB([L,r*a,r*b])
!     
Index: gzz/gfx/libpaper/colors.py
diff -c gzz/gfx/libpaper/colors.py:1.6 gzz/gfx/libpaper/colors.py:1.7
*** gzz/gfx/libpaper/colors.py:1.6      Tue Sep 24 09:09:24 2002
--- gzz/gfx/libpaper/colors.py  Wed Sep 25 07:28:11 2002
***************
*** 1,6 ****
  # Choosing colors and 3-dotproduct factors for papers.
  
! from gfx.libcolor.spaces import getRandomColor2
  
  from math import atan2,pi
  
--- 1,6 ----
  # Choosing colors and 3-dotproduct factors for papers.
  
! from gfx.libcolor.spaces import getRandomColor,getRandomColor2,RGBtoLAB
  
  from math import atan2,pi
  
***************
*** 13,19 ****
--- 13,30 ----
        rnd = self.rnd = java.util.Random(seed)
        # currently, 4 colors
        minlum = 80
+ 
+         # Just take alternating dark and light colors
          while 1:
+             t = (100 - minlum)/2
+             col = [ getRandomColor(minlum + t - t * (i & 1),
+                                    100 - t * (i & 1), rnd)
+                     for i in range(0,4) ]
+             #if 180 - self._AB_angle(col) > 135 * rnd.nextFloat(): break
+             if self._AB_angle(col) < 180: break
+         print self._AB_angle(col)
+ 
+         while 0:
            col = [
                getRandomColor2(minlum,100, rnd),
                getRandomColor2(minlum,minlum + (100-minlum)*0.7, rnd),
***************
*** 50,61 ****
        return self._js(self.randvecs[ind % len(self.randvecs)])+" 1"
  
      def _AB_angle(self, cols):
!         print cols
          getangle = lambda lab: 180 / pi * atan2(lab[2], lab[1])
          angles = [ getangle(RGBtoLAB(col)) for col in cols ] 
!         print angles
          angles.sort() 
!         print angles
          n = len(angles)
          maxd = 0
          for i in range(0, n):
--- 61,72 ----
        return self._js(self.randvecs[ind % len(self.randvecs)])+" 1"
  
      def _AB_angle(self, cols):
!         #print cols
          getangle = lambda lab: 180 / pi * atan2(lab[2], lab[1])
          angles = [ getangle(RGBtoLAB(col)) for col in cols ] 
!         #print angles
          angles.sort() 
!         #print angles
          n = len(angles)
          maxd = 0
          for i in range(0, n):




reply via email to

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