X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=wx%2Flib%2Fembeddedimage.py;fp=wx%2Flib%2Fembeddedimage.py;h=5b3cad4829b9566c1351995a24273fc8863c09f8;hp=0000000000000000000000000000000000000000;hb=e37b83503aa09d36d7e32327d9bd1f6c42708890;hpb=ddb6b1f242031dc55e52403029ac851cc70bd1f8 diff --git a/wx/lib/embeddedimage.py b/wx/lib/embeddedimage.py new file mode 100644 index 0000000..5b3cad4 --- /dev/null +++ b/wx/lib/embeddedimage.py @@ -0,0 +1,74 @@ +#---------------------------------------------------------------------- +# Name: wx.lib.embeddedimage +# Purpose: Defines a class used for embedding PNG images in Python +# code. The primary method of using this module is via +# the code generator in wx.tools.img2py. +# +# Author: Anthony Tuininga +# +# Created: 26-Nov-2007 +# RCS-ID: $Id: embeddedimage.py 59672 2009-03-20 20:59:42Z RD $ +# Copyright: (c) 2007 by Anthony Tuininga +# Licence: wxWindows license +#---------------------------------------------------------------------- + +import base64 +import cStringIO +import wx + +try: + b64decode = base64.b64decode +except AttributeError: + b64decode = base64.decodestring + + +class PyEmbeddedImage(object): + """ + PyEmbeddedImage is primarily intended to be used by code generated + by img2py as a means of embedding image data in a python module so + the image can be used at runtime without needing to access the + image from an image file. This makes distributing icons and such + that an application uses simpler since tools like py2exe will + automatically bundle modules that are imported, and the + application doesn't have to worry about how to locate the image + files on the user's filesystem. + + The class can also be used for image data that may be acquired + from some other source at runtime, such as over the network or + from a database. In this case pass False for isBase64 (unless the + data actually is base64 encoded.) Any image type that + wx.ImageFromStream can handle should be okay. + """ + + def __init__(self, data, isBase64=True): + self.data = data + self.isBase64 = isBase64 + + def GetBitmap(self): + return wx.BitmapFromImage(self.GetImage()) + + def GetData(self): + if self.isBase64: + data = b64decode(self.data) + return data + + def GetIcon(self): + icon = wx.EmptyIcon() + icon.CopyFromBitmap(self.GetBitmap()) + return icon + + def GetImage(self): + stream = cStringIO.StringIO(self.GetData()) + return wx.ImageFromStream(stream) + + # added for backwards compatibility + getBitmap = GetBitmap + getData = GetData + getIcon = GetIcon + getImage = GetImage + + # define properties, for convenience + Bitmap = property(GetBitmap) + Icon = property(GetIcon) + Image = property(GetImage) +