[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

RE: [pygame] Gradient Algorithm



How 'bout throwing this in the Cookbook?

http://www.pygame.org/wiki/CookBook


-----Original Message-----
From: owner-pygame-users@xxxxxxxx [mailto:owner-pygame-users@xxxxxxxx]
On Behalf Of Kris Schnee
Sent: Saturday, August 05, 2006 4:30 PM
To: pygame-users@xxxxxxxx
Subject: [pygame] Gradient Algorithm

Here is some code I built for my interface system (Driftwood), 
specifically for filling a rectangular area with a vertical gradient. 
That is, it starts with one color at the top and smoothly blends to a 
second color at the bottom. You can use this code if you want.

Kris

Code follows, where "self.image" is a surface and "drawing_area" is a 
Rect showing the area to fill. "self.background_color" and "_gradient" 
are two color tuples, eg. (0,255,255) for cyan.

x1 = self.drawing_area[0]
x2 = x1 + self.drawing_area[2]
a, b = self.background_color, self.background_gradient
y1 = self.drawing_area[1]
y2 = y1 + self.drawing_area[3]
h = y2-y1
rate = (float((b[0]-a[0])/h),
         (float(b[1]-a[1])/h),
         (float(b[2]-a[2])/h)
         )
for line in range(y1,y2):
     color = (min(max(a[0]+(rate[0]*line),0),255),
              min(max(a[1]+(rate[1]*line),0),255),
              min(max(a[2]+(rate[2]*line),0),255)
              )
     pygame.draw.line(self.image,color,(x1,line),(x2,line))