Home  |  Linux  | Mysql  | PHP  | XML
From:Elizabeth Marie Smith Date:Wed Jul 30 19:52:19 2008
Subject:cvs: php-gtk /demos/examples cairo_support.php notebook.php printing_example.php /ext/gtk+ gdk-2.10.overrides gdk-2.12.overrides gdk-2.8.overrides
gtk.defs
auroraeosrose		Thu Jul 31 01:52:19 2008 UTC

  Added files:                 
    /php-gtk/ext/gtk+	gdk-2.10.overrides 
    /php-gtk/demos/examples	cairo_support.php notebook.php 
                           	printing_example.php 

  Modified files:              
    /php-gtk/ext/gtk+	gdk-2.12.overrides gdk-2.8.overrides gtk.defs 
  Log:
  Inital cairo support - some of the methods may not work yet, also foreach to for_each in defs to work around reserved words in PHP
  
http://cvs.php.net/viewvc.cgi/php-gtk/ext/gtk+/gdk-2.12.overrides?r1=1.4&r2=1.5&diff_format=u
Index: php-gtk/ext/gtk+/gdk-2.12.overrides
diff -u php-gtk/ext/gtk+/gdk-2.12.overrides:1.4 php-gtk/ext/gtk+/gdk-2.12.overrides:1.5
--- php-gtk/ext/gtk+/gdk-2.12.overrides:1.4	Sun Jul 13 19:21:18 2008
+++ php-gtk/ext/gtk+/gdk-2.12.overrides	Thu Jul 31 01:52:19 2008
@@ -1,5 +1,5 @@
 /* vim: set et ft=cpp fdm=marker: */
-%% include gdk-2.8.overrides
+%% include gdk-2.10.overrides
 
 %%
 ignore-glob
@@ -7,4 +7,22 @@
 %%
 ignore-win32
    gdk_x11_*
-%% }}}
+%%
+
+%%
+override gtk_print_context_get_cairo_context
+PHP_METHOD
+{
+    zend_class_entry *ce;
+    context_object *cont
+    zval *print = NULL, *statusicon = NULL;
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
+            return;
+    }
+	ce = get_CairoContext_ce_ptr();
+	object_init_ex(return_value, ce);
+	cont = (context_object *)zend_objects_get_address(return_value TSRMLS_CC); 
+	cont->context = gtk_print_context_get_cairo_context(GTK_PRINT_CONTEXT(PHPG_GOBJECT(this_ptr)));
+	cairo_reference(cont->context);
+}
+
http://cvs.php.net/viewvc.cgi/php-gtk/ext/gtk+/gdk-2.8.overrides?r1=1.1&r2=1.2&diff_format=u
Index: php-gtk/ext/gtk+/gdk-2.8.overrides
diff -u php-gtk/ext/gtk+/gdk-2.8.overrides:1.1 php-gtk/ext/gtk+/gdk-2.8.overrides:1.2
--- php-gtk/ext/gtk+/gdk-2.8.overrides:1.1	Sun Jul 13 19:21:19 2008
+++ php-gtk/ext/gtk+/gdk-2.8.overrides	Thu Jul 31 01:52:19 2008
@@ -1,2 +1,125 @@
 /* vim: set et ft=cpp fdm=marker: */
-%% include gdk.overrides
\ No newline at end of file
+%% include gdk.overrides
+
+%%
+override gdk_cairo_create
+PHP_METHOD
+{
+    zval *cobj = NULL;
+    zval *rect = NULL;
+    GdkDrawable *drawable;
+    context_object *cont;
+	zend_class_entry *ce;
+
+    if(!php_gtk_parse_args(ZEND_NUM_ARGS(),"")) {
+        return;
+   }
+	ce = get_CairoContext_ce_ptr();
+	object_init_ex(return_value,ce);
+    cont = (context_object *)zend_objects_get_address(return_value TSRMLS_CC);
+    drawable = GDK_DRAWABLE(PHPG_GOBJECT(this_ptr));
+	cont->context = gdk_cairo_create(drawable);
+}
+
+%%
+add-arginfo Gdk cairo_set_source_color
+static
+ZEND_BEGIN_ARG_INFO_EX(ARGINFO_NAME,0,0,2)
+    ZEND_ARG_OBJ_INFO(0,cobj, CairoContext, 1)
+	ZEND_ARG_OBJ_INFO(0,color, GdkColor, 1)
+	ZEND_END_ARG_INFO();
+
+%%
+override gdk_cairo_set_source_color
+PHP_METHOD
+{
+/* TODO - GDK_COLOR is a boxed type
+	zval *cobj = NULL;
+	zval *color = NULL;
+    GdkColor *col;
+    context_object *cont;
+	if(!php_gtk_parse_args(ZEND_NUM_ARGS(),"OO", &cobj, &color)) {
+		return;
+	}
+	cont = (context_object *)zend_objects_get_address(cobj TSRMLS_CC);
+	col = GDK_COLOR(PHPG_GOBJECT(color));
+	gdk_cairo_set_source_color(cont->context, col); */
+}
+
+%%
+add-arginfo Gdk cairo_set_source_pixbuf
+static
+ZEND_BEGIN_ARG_INFO_EX(ARGINFO_NAME,0,0,4)
+    ZEND_ARG_OBJ_INFO(0,cobj, CairoContext, 1)
+    ZEND_ARG_OBJ_INFO(0,pbuf, GdkPixbuf, 1)
+	ZEND_ARG_INFO(0, pixbuf_x)
+	ZEND_ARG_INFO(0, pixbuf_y)
+    ZEND_END_ARG_INFO();
+
+%%
+override gdk_cairo_set_source_pixbuf
+PHP_METHOD
+{
+    zval *cobj = NULL;
+    zval *pbuf = NULL;
+	gdouble pixbuf_x = 0;
+	gdouble pixbuf_y = 0;
+    GdkPixbuf *pixbuf;
+    context_object *cont;
+    if(!php_gtk_parse_args(ZEND_NUM_ARGS(),"OOdd", &cobj, &pbuf, &pixbuf_x, &pixbuf_y)) {
+        return;
+    }
+    cont = (context_object *)zend_objects_get_address(cobj TSRMLS_CC);
+    pixbuf = GDK_PIXBUF(PHPG_GOBJECT(pbuf));
+	gdk_cairo_set_source_pixbuf(cont->context, pixbuf, pixbuf_x, pixbuf_y);
+}
+
+%%
+add-arginfo Gdk cairo_region
+static
+ZEND_BEGIN_ARG_INFO_EX(ARGINFO_NAME,0,0,2)
+    ZEND_ARG_OBJ_INFO(0,cobj, CairoContext, 1)
+    ZEND_ARG_OBJ_INFO(0,reg, GdkRegion, 1)
+    ZEND_END_ARG_INFO();
+
+%%
+override gdk_cairo_region
+PHP_METHOD
+{
+/* TODO - GDK_REGION is a boxed type
+    zval *cobj = NULL;
+    zval *reg = NULL;
+    GdkRegion *region;
+    context_object *cont;
+    if(!php_gtk_parse_args(ZEND_NUM_ARGS(),"OO", &cobj, &reg)) {
+        return;
+    }
+    cont = (context_object *)zend_objects_get_address(cobj TSRMLS_CC);
+    region = GDK_REGION(PHPG_GOBJECT(reg));
+	gdk_cairo_region(cont->context, region); */
+}
+
+%%
+add-arginfo Gdk cairo_rectangle
+static
+ZEND_BEGIN_ARG_INFO_EX(ARGINFO_NAME,0,0,2)
+    ZEND_ARG_OBJ_INFO(0,cobj, CairoContext, 1)
+	ZEND_ARG_OBJ_INFO(0,reg, GdkRectangle, 1)
+ZEND_END_ARG_INFO();
+
+%%
+override gdk_cairo_rectangle
+PHP_METHOD
+{
+/* TODO - GDK_RECTANGLE is a boxed type
+    zval *cobj = NULL;
+    zval *rect = NULL;
+    GdkRectangle *rectangle;
+    context_object *cont;
+    if(!php_gtk_parse_args(ZEND_NUM_ARGS(),"OO", &cobj, &rect)) {
+        return;
+    }
+    cont = (context_object *)zend_objects_get_address(cobj TSRMLS_CC);
+    rectangle = GDK_RECTANGLE(PHPG_GOBJECT(rect));
+	gdk_cairo_rectangle(cont->context, rectangle); */
+}
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-gtk/ext/gtk+/gtk.defs?r1=1.59&r2=1.60&diff_format=u
Index: php-gtk/ext/gtk+/gtk.defs
diff -u php-gtk/ext/gtk+/gtk.defs:1.59 php-gtk/ext/gtk+/gtk.defs:1.60
--- php-gtk/ext/gtk+/gtk.defs:1.59	Sat Jul 12 23:53:46 2008
+++ php-gtk/ext/gtk+/gtk.defs	Thu Jul 31 01:52:19 2008
@@ -455,7 +455,7 @@
   )
 )
 
-(define-method foreach
+(define-method for_each
   (c-name "gtk_accel_map_foreach")
   (return-type "none")
   (of-object "GtkAccelMap")
@@ -4061,7 +4061,7 @@
   )
 )
 
-(define-method foreach
+(define-method for_each
   (of-object "GtkContainer")
   (c-name "gtk_container_foreach")
   (return-type "none")
@@ -16218,7 +16218,7 @@
   )
 )
 
-(define-method foreach
+(define-method for_each
   (of-object "GtkTextTagTable")
   (c-name "gtk_text_tag_table_foreach")
   (return-type "none")
@@ -17900,7 +17900,7 @@
   )
 )
 
-(define-method foreach
+(define-method for_each
   (of-object "GtkTreeModel")
   (c-name "gtk_tree_model_foreach")
   (return-type "none")

http://cvs.php.net/viewvc.cgi/php-gtk/ext/gtk+/gdk-2.10.overrides?view=markup&rev=1.1
Index: php-gtk/ext/gtk+/gdk-2.10.overrides
+++ php-gtk/ext/gtk+/gdk-2.10.overrides
%% include gdk-2.8.overrides

%%
add-arginfo GdkScreen set_font_options
static
ZEND_BEGIN_ARG_INFO_EX(ARGINFO_NAME,0,0,1)
	ZEND_ARG_OBJ_INFO(0,obj, CairoFontOptions, 1)
ZEND_END_ARG_INFO();

%%
override gdk_screen_set_font_options
PHP_METHOD
{
	zval *obj=NULL;
	fontoptions_object *fobj;
    if(!php_gtk_parse_args(ZEND_NUM_ARGS(),"O", &obj)) {
	        return;
	}
	
	fobj = (fontoptions_object *)zend_object_store_get_object(obj TSRMLS_CC);

	gdk_screen_set_font_options(GDK_SCREEN(PHPG_GOBJECT(this_ptr)), fobj->fontoptions);
}

%%
override gdk_screen_get_font_options
PHP_METHOD
{
	const cairo_font_options_t *fo;
	zend_class_entry *ce;
	fontoptions_object *fobj;
	if(!php_gtk_parse_args(ZEND_NUM_ARGS(),"")) {
	            return;
	}
	fo = gdk_screen_get_font_options(GDK_SCREEN(PHPG_GOBJECT(this_ptr)));
	ce = get_CairoFontOptions_ce_ptr();

	object_init_ex(return_value, ce);
    fobj = (fontoptions_object *)zend_object_store_get_object(return_value TSRMLS_CC);
    /* I don't want to have to link to cairo.dll as well, this should be fixed! 
	fobj->fontoptions = cairo_font_options_copy(fo);*/
}

%%
add-arginfo Gdk cairo_set_source_pixmap
static
ZEND_BEGIN_ARG_INFO_EX(ARGINFO_NAME,0,0,4)
    ZEND_ARG_OBJ_INFO(0,cobj, CairoContext, 1)
    ZEND_ARG_OBJ_INFO(0,pmap, GdkPixmap, 1)
	ZEND_ARG_INFO(0, pixmap_x)
	ZEND_ARG_INFO(0, pixmap_y)
ZEND_END_ARG_INFO();

%%
override gdk_cairo_set_source_pixmap
PHP_METHOD
{
    zval *cobj = NULL;
    zval *pmap = NULL;
    GdkPixmap *pixmap;
	gdouble pixmap_x = 0;
	gdouble pixmap_y = 0;
	context_object *cont;
    if(!php_gtk_parse_args(ZEND_NUM_ARGS(),"OOdd", &cobj, &pmap, &pixmap_x, &pixmap_y)) {
        return;
    }
    cont = (context_object *)zend_objects_get_address(cobj TSRMLS_CC);
    pixmap = GDK_PIXMAP(PHPG_GOBJECT(pmap));
	gdk_cairo_set_source_pixmap(cont->context, pixmap, pixmap_x, pixmap_y);
}


http://cvs.php.net/viewvc.cgi/php-gtk/demos/examples/cairo_support.php?view=markup&rev=1.1
Index: php-gtk/demos/examples/cairo_support.php
+++ php-gtk/demos/examples/cairo_support.php
<?php
class Clock extends GtkDrawingArea {

	protected $context;

	public function __construct() {
		parent::__construct();
		$this->connect_simple('expose-event', array($this, 'expose'));
	}

	public function expose() {
		$this->realize();
		$this->context = $this->window->cairo_create();
		var_dump($this->context);
		//$this->context->rectangle(1,1,50,50);
		//$this->context->stroke();
	}
}

$window = new GtkWindow();
$clock = new Clock();
$window->add($clock);
$window->connect_simple('destroy', array('Gtk', 'main_quit'));
$window->show_all();

Gtk::main();
?>
http://cvs.php.net/viewvc.cgi/php-gtk/demos/examples/notebook.php?view=markup&rev=1.1
Index: php-gtk/demos/examples/notebook.php
+++ php-gtk/demos/examples/notebook.php
<?php
/* Create base window */
$window = new GtkWindow();
$window->set_title('Notebooks and Pages');
$window->connect_simple('destroy', array('gtk', 'main_quit'));
$window->add($vbox = new GtkHBox());

$vbox->add($notebook = new GtkNoteBook());
$notebook->append_page($label = new GtkLabel('This is the first page'));
$notebook->set_tab_detachable($label, true);
$notebook->append_page($label = new GtkLabel('This is the second page'));
$notebook->set_tab_detachable($label, true);
$notebook->append_page($label = new GtkLabel('This is the third page'));
$notebook->set_tab_detachable($label, true);
$notebook->set_group('Mygroup');
var_dump($notebook->get_group());

$vbox->add($notebook = new GtkNoteBook());
$notebook->append_page($label = new GtkLabel('This is the first page'));
$notebook->set_tab_detachable($label, true);
$notebook->append_page($label = new GtkLabel('This is the second page'));
$notebook->set_tab_detachable($label, true);
$notebook->append_page($label = new GtkLabel('This is the third page'));
$notebook->set_tab_detachable($label, true);
$notebook->set_group('Mygroup');

var_dump($notebook->get_group());
$window->show_all();
Gtk::main();
?>
http://cvs.php.net/viewvc.cgi/php-gtk/demos/examples/printing_example.php?view=markup&rev=1.1
Index: php-gtk/demos/examples/printing_example.php
+++ php-gtk/demos/examples/printing_example.php
<?php
function request_page_setup($operation, $context, $page_nr, $setup)
{
	if($page_nr == 1)
	{
		$a5 = new GtkPaperSize("iso_a5");
		$setup->set_orientation(GTK_PAGE_ORIENTATION_LANDSCAPE);
		$setup->set_paper_size($a5);
	}
}

function draw_page($operation, $context, $page_nr)
{
	$con = $context->get_cairo_context();
	$con->setSourceRgb(1,0,0);
	$con->rectangle(0,0,20,20);
	$con->stroke();
}

$print = new GtkPrintOperation();
$print->set_n_pages(2);
$print->set_unit(GTK_UNIT_MM);
$print->set_export_filename(dirname(__FILE__) . "/test.pdf");
$print->connect("draw_page","draw_page", NULL);
$print->connect("request_page_setup", "request_page_setup", NULL);
$res = $print->run(GTK_PRINT_OPERATION_ACTION_EXPORT, NULL);
?>
Navigate in group php.gtk.cvs at sever news.php.net
Previous Next




  
© No Copyright
You are free to use Anything
Site Maintained by PHP Developer
Powered By PHP Consultants