git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24541 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#----------------------------------------------------------------------
 | 
						|
# 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
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
from __future__ import nested_scopes
 | 
						|
 | 
						|
 | 
						|
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)
 |