April 2024 - This site, and Kamaelia are being updated. There is significant work needed, and PRs are welcome.

Kamaelia.UI.Pygame.Image

Pygame image display

Component for displaying an image on a pygame display. Uses the Pygame Display service component.

The image can be changed at any time.

Example Usage

Display that rotates rapidly through a set of images:

imagefiles = [ "imagefile1", "imagefile2", ... ]

class ChangeImage(Axon.Component.component):
    def __init__(self, images):
        super(ChangeImage,self).__init__()
        self.images = images

    def main(self):
        while 1:
            for image in self.images:
                self.send( image, "outbox")
                print "boing",image
                for i in range(0,100):
                    yield 1

image = Image(image=None, bgcolour=(0,192,0))
ic    = ChangeImage(imagefiles)

Pipeline(ic, image).run()

How does it work?

This component requests a display surface from the Pygame Display service component and renders the specified image to it.

The image, and other properties can be changed later by sending messages to its "inbox", "bgcolour" and "alphacontrol" inboxes.

Note that the size of display area is fixed after initialisation. If an initial size, or image is specified then the size is set to that, otherwise a default value is used.

Change the image at any time by sending a new filename to the "inbox" inbox. If the image is larger than the 'size', then it will appear cropped. If it is smaller, then the Image component's 'background colour' will show through behind it. The image is always rendered aligned to the top left corner.

If this component receives a shutdownMicroprocess or producerFinished message on its "control" inbox, then this will be forwarded out of its "signal" outbox and the component will then terminate.


Kamaelia.UI.Pygame.Image.Image

class Image(Axon.Component.component)

Image([image][,position][,bgcolour][,size][,displayExtra][,maxpect]) -> new Image component

Pygame image display component. Image, and other properties can be changed at runtime.

Keyword arguments:

  • image -- Filename of image (default=None)
  • position -- (x,y) pixels position of top left corner (default=(0,0))
  • bgcolour -- (r,g,b) background colour (behind the image if size>image size)
  • size -- (width,height) pixels size of the area to render the iamge in (default=image size or (240,192) if no image specified)
  • displayExtra -- dictionary of any additional args to pass in request to Pygame Display service
  • maxpect -- (xscale,yscale) scaling to apply to image (default=no scaling)

Inboxes

  • control : Shutdown messages: shutdownMicroprocess or producerFinished
  • bgcolour : Set the background colour
  • callback : Receive callbacks from Pygame Display
  • inbox : Filename of (new) image
  • events : Place where we recieve events from the outside world
  • alphacontrol : Alpha (transparency) of the image (value 0..255)

Outboxes

  • outbox : NOT USED
  • signal : Shutdown signalling: shutdownMicroprocess or producerFinished
  • display_signal : Outbox used for sending signals of various kinds to the display service

Methods defined here

Warning!

You should be using the inbox/outbox interface, not these methods (except construction). This documentation is designed as a roadmap as to their functionalilty for maintainers and new component developers.

__init__(self[, image][, position][, bgcolour][, size][, displayExtra][, maxpect][, expect_file_strings])

x.__init__(...) initializes x; see x.__class__.__doc__ for signature

blitToSurface(self)

Blits the background colour and image file to the surface

fetchImage(self, newImage)

Load image from specified filename.

self.size is set to image dimensions if self.size is None.

Image is scaled by self.maxpect if self.maxpect evaluates to True.

imageFromString(self, newImage)

main(self)

Main loop.

waitBox(self, boxname)

Generator. yield's 1 until data is ready on the named inbox.

Feedback

Got a problem with the documentation? Something unclear that could be clearer? Want to help improve it? Constructive criticism is very welcome - especially if you can suggest a better rewording!

Please leave you feedback here in reply to the documentation thread in the Kamaelia blog.

-- Automatic documentation generator, 05 Jun 2009 at 03:01:38 UTC/GMT