Changes

962 bytes added ,  14:15, 11 November 2011
Line 171: Line 171:  
== Tips to Activity Developers ==
 
== Tips to Activity Developers ==
   −
'''this is just a stub'''
+
===Going from Drawable to Cairo===
 +
 
 +
GTK-3 does not support gtk Drawable objects, so the first step is to get your activity running under Cairo.
 +
 
 +
# From activity.Activity, you inherit a canvas. Get its window.
 +
win = self.canvas.get_window()
 +
 
 +
# Create a Cairo context from the window.
 +
cr = win.cairo_create()
 +
 
 +
# Create a Cairo surface from the context
 +
surface = cr.get_target()
 +
 
 +
# Create an XLib surface to be used for drawing
 +
xlib_surface = surface.create_similar(cairo.CONTENT_COLOR,
 +
                                      gtk.gdk.screen_width(),
 +
                                      gtk.gdk.screen_height())
 +
 
 +
# You'll need a Cairo context from which you'll build a GTK Cairo context
 +
cr = cairo.Context(xlib_surface)
 +
cr = gtk.gdk.CairoContext(cr)
 +
 
 +
# Use this context as you would a Drawable, substituting Cairo commands for gtk commands, e.g.,
 +
cr.move_to(0, 0)
 +
cr.set_source_rgb(r, g, b)  # Cairo uses floats from 0 to 1 for RGB values
 +
cr.rectangle(x, y, w, h)
 +
cr.fill()
 +
 
 +
# To invalidate a region to forse a refresh, use:
 +
self.canvas.queue_draw_area(x, y, w, h)
 +
 
 +
 
 +
   −
* GTK-3 does not support Drawable, so the first step is to get your activity running under Cairo.
   
:* Example: abacus-cairo
 
:* Example: abacus-cairo
 
:* Example: abacus-gtk3
 
:* Example: abacus-gtk3