Welcome, Guest. Please login or register. Did you miss your activation email?

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - BilbyCoder

Pages: [1]
1
Python / PySFML and PyCairo
« on: November 11, 2008, 02:12:23 pm »
They work well together :)


Code: [Select]

import cairo, math
from PySFML import *

WIDTH, HEIGHT  = 256, 256

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, WIDTH, HEIGHT)
ctx = cairo.Context(surface)

ctx.scale (WIDTH/1.0, HEIGHT/1.0)

pat = cairo.LinearGradient (0.2, 1.0, 0.5, 1.0)
pat.add_color_stop_rgba (.8, 1, 0, 1, 1)
pat.add_color_stop_rgba (1, 1, 1, 1, 1)

ctx.rectangle (0,0,1,1)
ctx.set_source(pat)
ctx.fill ()

pat = cairo.RadialGradient (0.45, 0.4, 0.1,
                            0.4,  0.4, 0.5)
pat.add_color_stop_rgba (0, 1, 1, 1, 1)
pat.add_color_stop_rgba (1, 0, 1, 0, 1)

ctx.set_source (pat)
ctx.arc (0.5, 0.5, 0.3, 0, 2 * math.pi)
ctx.fill ()

window = sf.RenderWindow(sf.VideoMode(800, 600, 32), "cairoTest")

image = sf.Image()

# here is the massive amount of code to get a cairo surface into sfml
image.LoadFromPixels(WIDTH, HEIGHT, surface.get_data())
# and we are done.

sprite = sf.Sprite(image)
sprite.SetPosition(100, 100)

running = True

while running:
    event = sf.Event()
   
    while window.GetEvent(event):
        if event.Type == sf.Event.Closed:
            window.Close()
            running = False
   
    window.Draw(sprite)
    window.Display()




Ugly as a very ugly thing, but it works :)

There isn't SVG support in PyCairo unfortunately (except for writing an SVG file).  The format states it's ARGB but it seems to work without problem.  I wrote the image to an SVG file and the output was the same.

Pages: [1]
anything