/* * Copyright (c) 2005, 2011 by the gtk2-perl team (see the file AUTHORS) * * Licensed under the LGPL, see LICENSE file for more information. * * $Id$ */ #include "gtk2perl.h" #include MODULE = Gtk2::Gdk::Cairo PACKAGE = Gtk2::Gdk::Cairo::Context PREFIX = gdk_cairo_ =for position SYNOPSIS =head1 HIERARCHY Cairo::Context +---- Gtk2::Gdk::Cairo::Context (Perl subclass) =head1 DESCRIPTION This is some inter-operation between Cairo (see L) and Gdk things. A C lets Cairo draw on a Gdk drawable (window or pixmap). It's a Perl-level subclass of C and the various functions below can be used as methods on it. The methods can also be used on other C as plain functions. For example C can setup to draw from a C to any Cairo context, my $cr = Cairo::Context->create ($surface); Gtk2::Gdk::Cairo::Context::set_source_pixbuf ($cr, $pixbuf, $x,$y); $cr->paint; =cut BOOT: gperl_set_isa ("Gtk2::Gdk::Cairo::Context", "Cairo::Context"); # cairo_t *gdk_cairo_create (GdkDrawable *drawable); =for signature gdkcr = Gtk2::Gdk::Cairo::Context->create ($drawable) =cut SV * gdk_cairo_create (class, GdkDrawable *drawable) PREINIT: cairo_t *cr; CODE: /* We own cr. */ cr = gdk_cairo_create (drawable); RETVAL = newSV (0); sv_setref_pv (RETVAL, "Gtk2::Gdk::Cairo::Context", (void *) cr); OUTPUT: RETVAL =for signature $gdkcr->set_source_color ($color) =for signature Gtk2::Gdk::Cairo::Context::set_source_color ($anycr, $color) =cut void gdk_cairo_set_source_color (cairo_t *cr, GdkColor *color); =for signature $gdkcr->set_source_pixbuf ($pixbuf, $pixbuf_x, $pixbuf_y) =for signature Gtk2::Gdk::Cairo::Context::set_source_pixbuf ($anycr, $pixbuf, $pixbuf_x, $pixbuf_y) =cut void gdk_cairo_set_source_pixbuf (cairo_t *cr, GdkPixbuf *pixbuf, double pixbuf_x, double pixbuf_y); # void gdk_cairo_rectangle (cairo_t *cr, GdkRectangle *rectangle); =for apidoc =for signature $gdkcr->rectangle ($rectangle) =for signature $gdkcr->rectangle ($x, $y, $width, $height) =for signature Gtk2::Gdk::Cairo::Context::rectangle ($anycr, $rectangle) =for arg rectangle (Gtk2::Gdk::Rectangle) =for arg cr (__hide__) =for arg ... (__hide__) The 4-argument x,y,width,height is the base L style. This extends to also take a C. =cut void gdk_cairo_rectangle (cairo_t *cr, ...) CODE: if (items == 2) { GdkRectangle *rect = SvGdkRectangle (ST (1)); gdk_cairo_rectangle (cr, rect); } else if (items == 5) { double x = SvNV (ST(1)); double y = SvNV (ST(2)); double width = SvNV (ST(3)); double height = SvNV (ST(4)); cairo_rectangle (cr, x, y, width, height); } else { croak ("Usage: Gtk2::Gdk::Cairo::Context::rectangle (cr, rectangle)"); } =for signature $gdkcr->region ($region) =for signature Gtk2::Gdk::Cairo::Context::region ($anycr, $region) =cut void gdk_cairo_region (cairo_t *cr, GdkRegion *region); #if GTK_CHECK_VERSION (2, 10, 0) =for signature $gdkcr->set_source_pixmap ($pixmap, $pixmap_x, $pixmap_y) =for signature Gtk2::Gdk::Cairo::Context::set_source_pixmap ($anycr, $pixmap, $pixmap_x, $pixmap_y) =cut void gdk_cairo_set_source_pixmap (cairo_t *cr, GdkPixmap *pixmap, double pixmap_x, double pixmap_y); #endif #if GTK_CHECK_VERSION (2, 18, 0) =for signature $gdkcr->reset_clip ($drawable) =for signature Gtk2::Gdk::Cairo::Context::reset_clip ($anycr, $drawable) =cut void gdk_cairo_reset_clip (cairo_t *cr, GdkDrawable *drawable); #endif # ---------------------------------------------------------------------------- # #if GTK_CHECK_VERSION (2, 10, 0) MODULE = Gtk2::Gdk::Cairo PACKAGE = Gtk2::Gdk::Screen PREFIX = gdk_screen_ const cairo_font_options_t_ornull* gdk_screen_get_font_options (GdkScreen *screen); void gdk_screen_set_font_options (GdkScreen *screen, const cairo_font_options_t_ornull *options); #endif # ---------------------------------------------------------------------------- # MODULE = Gtk2::Gdk::Cairo PACKAGE = Gtk2::Gdk::Window PREFIX = gdk_window_ #if GTK_CHECK_VERSION (2, 22, 0) cairo_surface_t * gdk_window_create_similar_surface (GdkWindow *window, cairo_content_t content, int width, int height); cairo_pattern_t * gdk_window_get_background_pattern (GdkWindow *window); #endif