+++ /dev/null
-#----------------------------------------------------------------------
-# Name: wxPython.lib.imageutils
-# Purpose: A collection of functions for simple image manipulations
-#
-# Author: Robb Shecter
-#
-# Created: 7-Nov-2002
-# RCS-ID: $Id$
-# Copyright: (c) 2002 by
-# Licence: wxWindows license
-#----------------------------------------------------------------------
-
-import wx
-
-def grayOut(anImage):
- """
- Convert the given image (in place) to a grayed-out
- version, appropriate for a 'disabled' appearance.
- """
- factor = 0.7 # 0 < f < 1. Higher is grayer.
- if anImage.HasMask():
- maskColor = (anImage.GetMaskRed(), anImage.GetMaskGreen(), anImage.GetMaskBlue())
- else:
- maskColor = None
- data = map(ord, list(anImage.GetData()))
-
- for i in range(0, len(data), 3):
- pixel = (data[i], data[i+1], data[i+2])
- pixel = makeGray(pixel, factor, maskColor)
- for x in range(3):
- data[i+x] = pixel[x]
- anImage.SetData(''.join(map(chr, data)))
-
-
-def makeGray((r,g,b), factor, maskColor):
- """
- Make a pixel grayed-out. If the pixel
- matches the maskColor, it won't be
- changed.
- """
- if (r,g,b) != maskColor:
- return map(lambda x: int((230 - x) * factor) + x, (r,g,b))
- else:
- return (r,g,b)
-
-
-
-def stepColour(c, step):
- """
- stepColour is a utility function that simply darkens or lightens a
- color, based on the specified step value. A step of 0 is
- completely black and a step of 200 is totally white, and 100
- results in the same color as was passed in.
- """
- def _blendColour(fg, bg, dstep):
- result = bg + (dstep * (fg - bg))
- if result < 0:
- result = 0
- if result > 255:
- result = 255
- return result
-
- if step == 100:
- return c
-
- r = c.Red()
- g = c.Green()
- b = c.Blue()
-
- # step is 0..200 where 0 is completely black
- # and 200 is completely white and 100 is the same
- # convert that to a range of -1.0 .. 1.0
- step = min(step, 200)
- step = max(step, 0)
- dstep = (step - 100.0)/100.0
-
- if step > 100:
- # blend with white
- bg = 255.0
- dstep = 1.0 - dstep # 0 = transparent fg; 1 = opaque fg
- else:
- # blend with black
- bg = 0.0
- dstep = 1.0 + dstep; # 0 = transparent fg; 1 = opaque fg
-
- r = _blendColour(r, bg, dstep)
- g = _blendColour(g, bg, dstep)
- b = _blendColour(b, bg, dstep)
-
- return wx.Colour(int(r), int(g), int(b))
-