1 /* {{{ Class CairoSurface */
3 static zend_class_entry
* CairoSurface_ce_ptr
= NULL
;
4 static zend_object_handlers CairoSurface_handlers
;
7 typedef struct _surface_object {
9 cairo_surface_t *surface;
16 /* {{{ proto void construct() -- Add error
18 PHP_METHOD(CairoSurface
, __construct
)
20 zend_class_entry
* _this_ce
;
25 if (ZEND_NUM_ARGS()>0) {
31 php_print("No direct call for this constructor");
39 /* {{{ proto object create_similar(int content, int width, int height)
41 PHP_METHOD(CairoSurface
, create_similar
)
43 zend_class_entry
* _this_ce
;
45 zval
* _this_zval
= NULL
;
51 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "Oill", &_this_zval
, CairoSurface_ce_ptr
, &content
, &width
, &height
) == FAILURE
) {
55 _this_ce
= Z_OBJCE_P(_this_zval
);
56 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
57 sur
= cairo_surface_create_similar(curr
->surface
, content
, width
, height
);
58 object_init(return_value
);
59 surface_object
*sobj
= (surface_object
*)zend_objects_get_address(return_value TSRMLS_CC
);
63 /* }}} create_similar */
66 /* {{{ proto void finish()
68 PHP_METHOD(CairoSurface
, finish
)
70 zend_class_entry
* _this_ce
;
72 zval
* _this_zval
= NULL
;
74 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoSurface_ce_ptr
) == FAILURE
) {
78 _this_ce
= Z_OBJCE_P(_this_zval
);
79 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
80 cairo_surface_finish(curr
->surface
);
86 /* {{{ proto void flush()
88 PHP_METHOD(CairoSurface
, flush
)
90 zend_class_entry
* _this_ce
;
92 zval
* _this_zval
= NULL
;
94 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoSurface_ce_ptr
) == FAILURE
) {
98 _this_ce
= Z_OBJCE_P(_this_zval
);
99 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
101 cairo_surface_flush(curr
->surface
);
108 /* {{{ proto int get_content()
110 PHP_METHOD(CairoSurface
, get_content
)
112 zend_class_entry
* _this_ce
;
114 zval
* _this_zval
= NULL
;
116 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoSurface_ce_ptr
) == FAILURE
) {
120 _this_ce
= Z_OBJCE_P(_this_zval
);
121 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
123 x
=cairo_surface_get_content(curr
->surface
);
126 /* }}} get_content */
130 /* {{{ proto array get_device_offset()
132 PHP_METHOD(CairoSurface
, get_device_offset
)
134 zend_class_entry
* _this_ce
;
136 zval
* _this_zval
= NULL
;
137 double x_offset
, y_offset
;
139 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoSurface_ce_ptr
) == FAILURE
) {
143 _this_ce
= Z_OBJCE_P(_this_zval
);
144 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
146 cairo_surface_get_device_offset(curr
->surface
, &x_offset
, &y_offset
);
148 array_init(return_value
);
149 add_assoc_double(return_value
, "x_offset", x_offset
);
150 add_assoc_double(return_value
, "y_offset", y_offset
);
153 /* }}} get_device_offset */
157 /* {{{ proto object get_font_options()
159 PHP_METHOD(CairoSurface
, get_font_options
)
161 zend_class_entry
* _this_ce
;
163 zval
* _this_zval
= NULL
;
165 cairo_font_options_t
*options
= cairo_font_options_create();
168 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoSurface_ce_ptr
) == FAILURE
) {
172 _this_ce
= Z_OBJCE_P(_this_zval
);
173 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
175 cairo_surface_get_font_options(curr
->surface
, options
);
176 object_init(return_value
);
177 fontoptions_object
*fobj
= (fontoptions_object
*)zend_objects_get_address(return_value TSRMLS_CC
);
178 fobj
->fontoptions
=options
;
181 /* }}} get_font_options */
185 /* {{{ proto void mark_dirty_rectangle([int x, int y, int width, int height])
187 PHP_METHOD(CairoSurface
, mark_dirty_rectangle
)
189 zend_class_entry
* _this_ce
;
191 zval
* _this_zval
= NULL
;
199 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O|llll", &_this_zval
, CairoSurface_ce_ptr
, &x
, &y
, &width
, &height
) == FAILURE
) {
202 _this_ce
= Z_OBJCE_P(_this_zval
);
203 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
204 cairo_surface_mark_dirty_rectangle(curr
->surface
, x
, y
, width
, height
);
207 /* }}} mark_dirty_rectangle */
211 /* {{{ proto void set_device_offset(float x_offset, float y_offset)
213 PHP_METHOD(CairoSurface
, set_device_offset
)
215 zend_class_entry
* _this_ce
;
217 zval
* _this_zval
= NULL
;
218 double x_offset
= 0.0;
219 double y_offset
= 0.0;
221 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "Odd", &_this_zval
, CairoSurface_ce_ptr
, &x_offset
, &y_offset
) == FAILURE
) {
225 _this_ce
= Z_OBJCE_P(_this_zval
);
226 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
227 cairo_surface_set_device_offset(curr
->surface
, x_offset
, y_offset
);
230 /* }}} set_device_offset */
234 /* {{{ proto void set_fallback_resolution(float x_ppi, float y_ppi)
236 PHP_METHOD(CairoSurface
, set_fallback_resolution
)
238 zend_class_entry
* _this_ce
;
240 zval
* _this_zval
= NULL
;
244 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "Odd", &_this_zval
, CairoSurface_ce_ptr
, &x_ppi
, &y_ppi
) == FAILURE
) {
248 _this_ce
= Z_OBJCE_P(_this_zval
);
249 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
250 cairo_surface_set_fallback_resolution(curr
->surface
, x_ppi
, y_ppi
);
253 /* }}} set_fallback_resolution */
257 /* {{{ proto void write_to_png(string file)
259 PHP_METHOD(CairoSurface
, write_to_png
)
261 zend_class_entry
* _this_ce
;
263 zval
* _this_zval
= NULL
;
264 const char * file
= NULL
;
266 cairo_status_t status
;
268 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "Os", &_this_zval
, CairoSurface_ce_ptr
, &file
, &file_len
) == FAILURE
) {
272 _this_ce
= Z_OBJCE_P(_this_zval
);
273 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
274 status
= cairo_surface_write_to_png(curr
->surface
, file
);
277 /* }}} write_to_png */
280 static zend_function_entry CairoSurface_methods
[] = {
281 PHP_ME(CairoSurface
, __construct
, NULL
, /**/ZEND_ACC_PUBLIC
| ZEND_ACC_CTOR
)
282 PHP_ME(CairoSurface
, create_similar
, CairoSurface__create_similar_args
, /**/ZEND_ACC_PUBLIC
)
283 PHP_ME(CairoSurface
, finish
, NULL
, /**/ZEND_ACC_PUBLIC
)
284 PHP_ME(CairoSurface
, flush
, NULL
, /**/ZEND_ACC_PUBLIC
)
285 PHP_ME(CairoSurface
, get_content
, NULL
, /**/ZEND_ACC_PUBLIC
)
286 PHP_ME(CairoSurface
, get_device_offset
, NULL
, /**/ZEND_ACC_PUBLIC
)
287 PHP_ME(CairoSurface
, get_font_options
, NULL
, /**/ZEND_ACC_PUBLIC
)
288 PHP_ME(CairoSurface
, mark_dirty_rectangle
, CairoSurface__mark_dirty_rectangle_args
, /**/ZEND_ACC_PUBLIC
)
289 PHP_ME(CairoSurface
, set_device_offset
, CairoSurface__set_device_offset_args
, /**/ZEND_ACC_PUBLIC
)
290 PHP_ME(CairoSurface
, set_fallback_resolution
, CairoSurface__set_fallback_resolution_args
, /**/ZEND_ACC_PUBLIC
)
291 PHP_ME(CairoSurface
, write_to_png
, CairoSurface__write_to_png_args
, /**/ZEND_ACC_PUBLIC
)
298 static void CairoSurface_object_dtor(void *object
)
300 surface_object
*surface
= (surface_object
*)object
;
301 zend_hash_destroy(surface
->std
.properties
);
302 FREE_HASHTABLE(surface
->std
.properties
);
303 if(surface
->surface
){
304 cairo_surface_finish(surface
->surface
);
305 cairo_surface_destroy(surface
->surface
);
311 static zend_object_value
CairoSurface_object_new(zend_class_entry
*ce
)
313 zend_object_value retval
;
314 surface_object
*surface
;
317 surface
= emalloc(sizeof(surface_object
));
318 memset(surface
,0,sizeof(surface_object
));
322 ALLOC_HASHTABLE(surface
->std
.properties
);
323 zend_hash_init(surface
->std
.properties
, 0, NULL
, ZVAL_PTR_DTOR
, 0);
324 zend_hash_copy(surface
->std
.properties
, &ce
->default_properties
, (copy_ctor_func_t
) zval_add_ref
,(void *) &temp
, sizeof(zval
*));
325 retval
.handle
=zend_objects_store_put(surface
, NULL
, (zend_objects_free_object_storage_t
)CairoSurface_object_dtor
, NULL TSRMLS_CC
);
326 retval
.handlers
= &CairoSurface_handlers
;
330 static void class_init_CairoSurface(void)
334 INIT_CLASS_ENTRY(ce
, "CairoSurface", CairoSurface_methods
);
335 CairoSurface_ce_ptr
= zend_register_internal_class(&ce
);
336 CairoSurface_ce_ptr
->create_object
= CairoSurface_object_new
;
337 memcpy(&CairoSurface_handlers
, zend_get_std_object_handlers(),sizeof(zend_object_handlers
));
338 CairoSurface_handlers
.clone_obj
= NULL
;
341 /* }}} Class CairoSurface */
343 /* {{{ Class CairoImageSurface -- allmost done (-stream) */
345 static zend_class_entry
* CairoImageSurface_ce_ptr
= NULL
;
346 static zend_object_handlers CairoImageSurface_handlers
;
350 /* {{{ proto void construct(int format, int widthm, int height)
352 PHP_METHOD(CairoImageSurface
, __construct
)
354 zend_class_entry
* _this_ce
;
357 cairo_format_t format
= 0;
363 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "lll", &format
, &widthm
, &height
) == FAILURE
) {
367 _this_zval
= getThis();
368 _this_ce
= Z_OBJCE_P(_this_zval
);
369 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
370 curr
->surface
= cairo_image_surface_create(format
, widthm
, height
);
373 /* }}} __construct */
377 /* {{{ proto object create_from_data(object obj, int format, int width, int height [, int stride])
379 PHP_METHOD(CairoImageSurface
, create_from_data
)
381 zend_class_entry
* _this_ce
;
383 zval
* _this_zval
= NULL
;
384 const char * buffer
= NULL
;
393 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "Oslll|l", &_this_zval
, CairoImageSurface_ce_ptr
, &buffer
, &buffer_len
, &format
, &width
, &height
, &stride
) == FAILURE
) {
397 _this_ce
= Z_OBJCE_P(_this_zval
);
398 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
400 object_init(return_value
);
401 surface_object
*sobj
= (surface_object
*)zend_objects_get_address(return_value TSRMLS_CC
);
404 case CAIRO_FORMAT_ARGB32
:
405 case CAIRO_FORMAT_RGB24
:
408 case CAIRO_FORMAT_RGB16_565
:
411 case CAIRO_FORMAT_A8
:
414 case CAIRO_FORMAT_A1
:
415 stride
= (width
+ 1) / 8;
418 //php_error(CairoError, "Unknown format");
423 if (height
* stride
> buffer_len
) {
424 php_error(E_ERROR
,"buffer is not long enough");
427 sobj
->surface
= cairo_image_surface_create_for_data(buffer
, format
, width
, height
, stride
);
429 /* }}} create_from_data */
433 /* {{{ proto object create_from_png(string file)
435 PHP_METHOD(CairoImageSurface
, create_from_png
)
437 zend_class_entry
* _this_ce
;
439 zval
* _this_zval
= NULL
;
440 const char * file
= NULL
;
443 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "Os", &_this_zval
, CairoImageSurface_ce_ptr
, &file
, &file_len
) == FAILURE
) {
447 _this_ce
= Z_OBJCE_P(_this_zval
);
448 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
450 object_init(return_value
);
451 surface_object
*sobj
= (surface_object
*)zend_objects_get_address(return_value TSRMLS_CC
);
452 sobj
->surface
= cairo_image_surface_create_from_png(file
);
455 /* }}} create_from_png */
459 /* {{{ proto string get_data() -- not required
461 PHP_METHOD(CairoImageSurface
, get_data
)
463 zend_class_entry
* _this_ce
;
465 zval
* _this_zval
= NULL
;
469 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoImageSurface_ce_ptr
) == FAILURE
) {
473 _this_ce
= Z_OBJCE_P(_this_zval
);
474 php_error(E_WARNING
,"Not Implemented .. not required");
476 RETURN_STRINGL("", 0, 1);
482 /* {{{ proto int get_format()
484 PHP_METHOD(CairoImageSurface
, get_format
)
486 zend_class_entry
* _this_ce
;
488 zval
* _this_zval
= NULL
;
490 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoImageSurface_ce_ptr
) == FAILURE
) {
493 _this_ce
= Z_OBJCE_P(_this_zval
);
494 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
496 x
= cairo_image_surface_get_format(curr
->surface
);
503 /* {{{ proto int get_height()
505 PHP_METHOD(CairoImageSurface
, get_height
)
507 zend_class_entry
* _this_ce
;
508 zval
* _this_zval
= NULL
;
511 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoImageSurface_ce_ptr
) == FAILURE
) {
515 _this_ce
= Z_OBJCE_P(_this_zval
);
516 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
517 x
= cairo_image_surface_get_height(curr
->surface
);
525 /* {{{ proto int get_stride()
527 PHP_METHOD(CairoImageSurface
, get_stride
)
529 zend_class_entry
* _this_ce
;
530 zval
* _this_zval
= NULL
;
533 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoImageSurface_ce_ptr
) == FAILURE
) {
537 _this_ce
= Z_OBJCE_P(_this_zval
);
538 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
539 x
= cairo_image_surface_get_stride(curr
->surface
);
547 /* {{{ proto int get_width()
549 PHP_METHOD(CairoImageSurface
, get_width
)
551 zend_class_entry
* _this_ce
;
552 zval
* _this_zval
= NULL
;
555 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoImageSurface_ce_ptr
) == FAILURE
) {
559 _this_ce
= Z_OBJCE_P(_this_zval
);
561 surface_object
*curr
= (surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
563 x
= cairo_image_surface_get_width(curr
->surface
);
569 static zend_function_entry CairoImageSurface_methods
[] = {
570 PHP_ME(CairoImageSurface
, __construct
, CairoImageSurface____construct_args
, /**/ZEND_ACC_PUBLIC
| ZEND_ACC_CTOR
)
571 PHP_ME(CairoImageSurface
, create_from_data
, CairoImageSurface__create_from_data_args
, /**/ZEND_ACC_PRIVATE
)
572 PHP_ME(CairoImageSurface
, create_from_png
, CairoImageSurface__create_from_png_args
, /**/ZEND_ACC_PRIVATE
)
573 PHP_ME(CairoImageSurface
, get_data
, NULL
, /**/ZEND_ACC_PUBLIC
)
574 PHP_ME(CairoImageSurface
, get_format
, NULL
, /**/ZEND_ACC_PUBLIC
)
575 PHP_ME(CairoImageSurface
, get_height
, NULL
, /**/ZEND_ACC_PUBLIC
)
576 PHP_ME(CairoImageSurface
, get_stride
, NULL
, /**/ZEND_ACC_PUBLIC
)
577 PHP_ME(CairoImageSurface
, get_width
, NULL
, /**/ZEND_ACC_PUBLIC
)
583 static zend_object_value
CairoImageSurface_object_new(zend_class_entry
*ce TSRMLS_DC
)
585 zend_object_value retval
;
586 retval
=CairoSurface_object_new(ce TSRMLS_CC
);
587 retval
.handlers
= &CairoImageSurface_handlers
;
592 static void class_init_CairoImageSurface(void)
596 INIT_CLASS_ENTRY(ce
, "CairoImageSurface", CairoImageSurface_methods
);
597 CairoImageSurface_ce_ptr
= zend_register_internal_class_ex(&ce
, CairoSurface_ce_ptr
, "CairoSurface" TSRMLS_CC
);
598 CairoImageSurface_ce_ptr
->create_object
= CairoImageSurface_object_new
;
599 memcpy(&CairoImageSurface_handlers
, zend_get_std_object_handlers(), sizeof(zend_object_handlers
));
602 /* }}} Class CairoImageSurface */
604 /* {{{ Class CairoPDFSurface */
606 static zend_class_entry
* CairoPDFSurface_ce_ptr
= NULL
;
607 static zend_object_handlers CairoPDFSurface_handlers
;
611 /* {{{ proto void construct(string file, float wpts, float hpts)
613 PHP_METHOD(CairoPDFSurface
, __construct
)
615 zend_class_entry
* _this_ce
;
618 const char * file
= NULL
;
625 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "sdd", &file
, &file_len
, &wpts
, &hpts
) == FAILURE
) {
629 _this_zval
= getThis();
630 _this_ce
= Z_OBJCE_P(_this_zval
);
631 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
632 curr
->surface
= cairo_pdf_surface_create(file
, wpts
, hpts
);
637 /* }}} __construct */
641 /* {{{ proto void set_size(float wptd, float hpts)
643 PHP_METHOD(CairoPDFSurface
, set_size
)
645 zend_class_entry
* _this_ce
;
647 zval
* _this_zval
= NULL
;
653 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "Odd", &_this_zval
, CairoPDFSurface_ce_ptr
, &wpts
, &hpts
) == FAILURE
) {
657 _this_ce
= Z_OBJCE_P(_this_zval
);
658 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
659 cairo_pdf_surface_set_size(curr
->surface
, wpts
, hpts
);
665 static zend_function_entry CairoPDFSurface_methods
[] = {
666 PHP_ME(CairoPDFSurface
, __construct
, CairoPDFSurface____construct_args
, /**/ZEND_ACC_PUBLIC
| ZEND_ACC_CTOR
)
667 PHP_ME(CairoPDFSurface
, set_size
, CairoPDFSurface__set_size_args
, /**/ZEND_ACC_PUBLIC
)
673 static zend_object_value
CairoPDFSurface_object_new(zend_class_entry
*ce TSRMLS_DC
)
675 zend_object_value retval
;
676 retval
=CairoSurface_object_new(ce TSRMLS_CC
);
677 retval
.handlers
= &CairoPDFSurface_handlers
;
681 static void class_init_CairoPDFSurface(void)
685 INIT_CLASS_ENTRY(ce
, "CairoPDFSurface", CairoPDFSurface_methods
);
686 CairoPDFSurface_ce_ptr
= zend_register_internal_class_ex(&ce
, CairoSurface_ce_ptr
, "CairoSurface" TSRMLS_CC
);
687 CairoPDFSurface_ce_ptr
->create_object
= CairoPDFSurface_object_new
;
688 memcpy(&CairoPDFSurface_handlers
, zend_get_std_object_handlers(), sizeof(zend_object_handlers
));
692 /* }}} Class CairoPDFSurface */
694 /* {{{ Class CairoPSSurface */
696 static zend_class_entry
* CairoPSSurface_ce_ptr
= NULL
;
697 static zend_object_handlers CairoPSSurface_handlers
;
701 /* {{{ proto void construct(string file, float wpts, float hpts)
703 PHP_METHOD(CairoPSSurface
, __construct
)
705 zend_class_entry
* _this_ce
;
708 const char * file
= NULL
;
715 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "sdd", &file
, &file_len
, &wpts
, &hpts
) == FAILURE
) {
719 _this_zval
= getThis();
720 _this_ce
= Z_OBJCE_P(_this_zval
);
721 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
722 curr
->surface
= cairo_ps_surface_create(file
, wpts
, hpts
);
725 /* }}} __construct */
729 /* {{{ proto void dsc_begin_page_setup()
731 PHP_METHOD(CairoPSSurface
, dsc_begin_page_setup
)
733 zend_class_entry
* _this_ce
;
735 zval
* _this_zval
= NULL
;
739 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoPSSurface_ce_ptr
) == FAILURE
) {
742 _this_ce
= Z_OBJCE_P(_this_zval
);
743 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
744 cairo_ps_surface_dsc_begin_page_setup(curr
->surface
);
745 phpCAIRO_SURFACE_ERROR(curr
->surface
);
750 /* }}} dsc_begin_page_setup */
754 /* {{{ proto void dsc_begin_setup()
756 PHP_METHOD(CairoPSSurface
, dsc_begin_setup
)
758 zend_class_entry
* _this_ce
;
760 zval
* _this_zval
= NULL
;
764 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoPSSurface_ce_ptr
) == FAILURE
) {
768 _this_ce
= Z_OBJCE_P(_this_zval
);
769 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
770 cairo_ps_surface_dsc_begin_setup(curr
->surface
);
771 phpCAIRO_SURFACE_ERROR(curr
->surface
);
774 /* }}} dsc_begin_setup */
778 /* {{{ proto void dsc_comment()
780 PHP_METHOD(CairoPSSurface
, dsc_comment
)
782 zend_class_entry
* _this_ce
;
784 zval
* _this_zval
= NULL
;
788 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoPSSurface_ce_ptr
) == FAILURE
) {
792 _this_ce
= Z_OBJCE_P(_this_zval
);
793 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
794 cairo_ps_surface_dsc_comment(curr
->surface
);
795 phpCAIRO_SURFACE_ERROR(curr
->surface
);
798 /* }}} dsc_comment */
802 /* {{{ proto array get_levels() -- cairo 1.6
804 PHP_METHOD(CairoPSSurface
, get_levels
)
806 zend_class_entry
* _this_ce
;
808 zval
* _this_zval
= NULL
;
812 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoPSSurface_ce_ptr
) == FAILURE
) {
816 _this_ce
= Z_OBJCE_P(_this_zval
);
817 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
820 array_init(return_value
);
823 /* ONLY for CAIRO 1.6 */
830 /* {{{ proto string get_level_string() --cairo 1.6
832 PHP_METHOD(CairoPSSurface
, get_level_string
)
834 zend_class_entry
* _this_ce
;
836 zval
* _this_zval
= NULL
;
840 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoPSSurface_ce_ptr
) == FAILURE
) {
844 _this_ce
= Z_OBJCE_P(_this_zval
);
845 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
849 /* ONLY for CAIRO 1.6*/
852 /* }}} get_level_string */
856 /* {{{ proto void restrict_to_level(int level) --cairo 1.6
858 PHP_METHOD(CairoPSSurface
, restrict_to_level
)
860 zend_class_entry
* _this_ce
;
862 zval
* _this_zval
= NULL
;
867 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "Ol", &_this_zval
, CairoPSSurface_ce_ptr
, &level
) == FAILURE
) {
871 _this_ce
= Z_OBJCE_P(_this_zval
);
872 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
876 /* ONLY for CAIRO 1.6 */
879 /* }}} restrict_to_level */
883 /* {{{ proto void set_eps() --cairo 1.6
885 PHP_METHOD(CairoPSSurface
, set_eps
)
887 zend_class_entry
* _this_ce
;
889 zval
* _this_zval
= NULL
;
893 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoPSSurface_ce_ptr
) == FAILURE
) {
897 _this_ce
= Z_OBJCE_P(_this_zval
);
898 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
902 /* ONLY for CAIRO 1.6 */
909 /* {{{ proto void set_size(float wpts, float hpts)
911 PHP_METHOD(CairoPSSurface
, set_size
)
913 zend_class_entry
* _this_ce
;
915 zval
* _this_zval
= NULL
;
921 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "Odd", &_this_zval
, CairoPSSurface_ce_ptr
, &wpts
, &hpts
) == FAILURE
) {
925 _this_ce
= Z_OBJCE_P(_this_zval
);
926 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
927 cairo_ps_surface_set_size(curr
->surface
, wpts
, hpts
);
933 static zend_function_entry CairoPSSurface_methods
[] = {
934 PHP_ME(CairoPSSurface
, __construct
, CairoPSSurface____construct_args
, /**/ZEND_ACC_PUBLIC
| ZEND_ACC_CTOR
)
935 PHP_ME(CairoPSSurface
, dsc_begin_page_setup
, NULL
, /**/ZEND_ACC_PUBLIC
)
936 PHP_ME(CairoPSSurface
, dsc_begin_setup
, NULL
, /**/ZEND_ACC_PUBLIC
)
937 PHP_ME(CairoPSSurface
, dsc_comment
, NULL
, /**/ZEND_ACC_PUBLIC
)
938 PHP_ME(CairoPSSurface
, get_levels
, NULL
, /**/ZEND_ACC_PUBLIC
)
939 PHP_ME(CairoPSSurface
, get_level_string
, NULL
, /**/ZEND_ACC_PUBLIC
)
940 PHP_ME(CairoPSSurface
, restrict_to_level
, CairoPSSurface__restrict_to_level_args
, /**/ZEND_ACC_PUBLIC
)
941 PHP_ME(CairoPSSurface
, set_eps
, NULL
, /**/ZEND_ACC_PUBLIC
)
942 PHP_ME(CairoPSSurface
, set_size
, CairoPSSurface__set_size_args
, /**/ZEND_ACC_PUBLIC
)
948 static zend_object_value
CairoPSSurface_object_new(zend_class_entry
*ce TSRMLS_DC
)
950 zend_object_value retval
;
951 retval
=CairoSurface_object_new(ce TSRMLS_CC
);
952 retval
.handlers
= &CairoPSSurface_handlers
;
956 static void class_init_CairoPSSurface(void)
960 INIT_CLASS_ENTRY(ce
, "CairoPSSurface", CairoPSSurface_methods
);
961 CairoPSSurface_ce_ptr
= zend_register_internal_class_ex(&ce
, CairoSurface_ce_ptr
, "CairoSurface" TSRMLS_CC
);
962 CairoPSSurface_ce_ptr
->create_object
= CairoPSSurface_object_new
;
963 memcpy(&CairoPSSurface_handlers
, zend_get_std_object_handlers(), sizeof(zend_object_handlers
));
966 /* }}} Class CairoPSSurface */
968 /* {{{ Class CairoQuartzSurface */
970 static zend_class_entry
* CairoQuartzSurface_ce_ptr
= NULL
;
971 static zend_object_handlers CairoQuartzSurface_handlers
;
975 /* {{{ proto void construct(float wpixels, float hpixels [, int format])
977 PHP_METHOD(CairoQuartzSurface
, __construct
)
979 zend_class_entry
* _this_ce
;
982 double wpixels
= 0.0;
983 double hpixels
= 0.0;
988 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "dd|l", &wpixels
, &hpixels
, &format
) == FAILURE
) {
992 _this_zval
= getThis();
993 _this_ce
= Z_OBJCE_P(_this_zval
);
994 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
997 php_error(E_ERROR
, "CANNOT BE CALLED"); RETURN_FALSE
;
1000 /* }}} __construct */
1003 static zend_function_entry CairoQuartzSurface_methods
[] = {
1004 PHP_ME(CairoQuartzSurface
, __construct
, CairoQuartzSurface____construct_args
, /**/ZEND_ACC_PUBLIC
| ZEND_ACC_CTOR
)
1005 { NULL
, NULL
, NULL
}
1010 static zend_object_value
CairoQuartzSurface_object_new(zend_class_entry
*ce TSRMLS_DC
)
1012 zend_object_value retval
;
1013 retval
=CairoSurface_object_new(ce TSRMLS_CC
);
1014 retval
.handlers
= &CairoQuartzSurface_handlers
;
1018 static void class_init_CairoQuartzSurface(void)
1020 zend_class_entry ce
;
1022 INIT_CLASS_ENTRY(ce
, "CairoQuartzSurface", CairoQuartzSurface_methods
);
1023 CairoQuartzSurface_ce_ptr
= zend_register_internal_class_ex(&ce
, CairoSurface_ce_ptr
, "CairoSurface" TSRMLS_CC
);
1024 CairoQuartzSurface_ce_ptr
->create_object
= CairoQuartzSurface_object_new
;
1025 memcpy(&CairoQuartzSurface_handlers
, zend_get_std_object_handlers(), sizeof(zend_object_handlers
));
1029 /* }}} Class CairoQuartzSurface */
1031 /* {{{ Class CairoSVGSurface */
1033 static zend_class_entry
* CairoSVGSurface_ce_ptr
= NULL
;
1034 static zend_object_handlers CairoSVGSurface_handlers
;
1038 /* {{{ proto void construct(string file, float wpts, float hpts)
1040 PHP_METHOD(CairoSVGSurface
, __construct
)
1042 zend_class_entry
* _this_ce
;
1045 const char * file
= NULL
;
1052 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "sdd", &file
, &file_len
, &wpts
, &hpts
) == FAILURE
) {
1056 _this_zval
= getThis();
1057 _this_ce
= Z_OBJCE_P(_this_zval
);
1058 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
1059 curr
->surface
= cairo_svg_surface_create(file
, wpts
, hpts
);
1063 /* }}} __construct */
1066 static zend_function_entry CairoSVGSurface_methods
[] = {
1067 PHP_ME(CairoSVGSurface
, __construct
, CairoSVGSurface____construct_args
, /**/ZEND_ACC_PUBLIC
| ZEND_ACC_CTOR
)
1068 { NULL
, NULL
, NULL
}
1073 static zend_object_value
CairoSVGSurface_object_new(zend_class_entry
*ce TSRMLS_DC
)
1075 zend_object_value retval
;
1076 retval
=CairoSurface_object_new(ce TSRMLS_CC
);
1077 retval
.handlers
= &CairoSVGSurface_handlers
;
1081 static void class_init_CairoSVGSurface(void)
1083 zend_class_entry ce
;
1085 INIT_CLASS_ENTRY(ce
, "CairoSVGSurface", CairoSVGSurface_methods
);
1086 CairoSVGSurface_ce_ptr
= zend_register_internal_class_ex(&ce
, CairoSurface_ce_ptr
, "CairoSurface" TSRMLS_CC
);
1087 CairoSVGSurface_ce_ptr
->create_object
= CairoSVGSurface_object_new
;
1088 memcpy(&CairoSVGSurface_handlers
, zend_get_std_object_handlers(), sizeof(zend_object_handlers
));
1092 /* }}} Class CairoSVGSurface */
1094 /* {{{ Class CairoWin32Surface -- Have to work on this aswell */
1096 static zend_class_entry
* CairoWin32Surface_ce_ptr
= NULL
;
1097 static zend_object_handlers CairoWin32Surface_handlers
;
1102 /* {{{ proto void construct(int hdc)
1104 PHP_METHOD(CairoWin32Surface
, __construct
)
1106 zend_class_entry
* _this_ce
;
1113 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "l", &hdc
) == FAILURE
) {
1117 _this_zval
= getThis();
1118 _this_ce
= Z_OBJCE_P(_this_zval
);
1119 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
1120 curr
->surface
= cairo_win32_surface_create(hdc
, NULL
);
1122 /* }}} __construct */
1125 static zend_function_entry CairoWin32Surface_methods
[] = {
1126 PHP_ME(CairoWin32Surface
, __construct
, NULL
, /**/ZEND_ACC_PUBLIC
| ZEND_ACC_CTOR
)
1127 { NULL
, NULL
, NULL
}
1132 static zend_object_value
CairoWin32Surface_object_new(zend_class_entry
*ce TSRMLS_DC
)
1134 zend_object_value retval
;
1135 retval
=CairoSurface_object_new(ce TSRMLS_CC
);
1136 retval
.handlers
= &CairoWin32Surface_handlers
;
1140 static void class_init_CairoWin32Surface(void)
1142 zend_class_entry ce
;
1144 INIT_CLASS_ENTRY(ce
, "CairoWin32Surface", CairoWin32Surface_methods
);
1145 CairoWin32Surface_ce_ptr
= zend_register_internal_class_ex(&ce
, CairoSurface_ce_ptr
, "CairoSurface" TSRMLS_CC
);
1146 CairoWin32Surface_ce_ptr
->create_object
= CairoWin32Surface_object_new
;
1147 memcpy(&CairoWin32Surface_handlers
, zend_get_std_object_handlers(), sizeof(zend_object_handlers
));
1151 /* }}} Class CairoWin32Surface */
1153 /* {{{ Class CairoXlibSurface */
1155 static zend_class_entry
* CairoXlibSurface_ce_ptr
= NULL
;
1156 static zend_object_handlers CairoXlibSurface_handlers
;
1160 /* {{{ proto void construct()
1162 PHP_METHOD(CairoXlibSurface
, __construct
)
1164 zend_class_entry
* _this_ce
;
1169 if (ZEND_NUM_ARGS()>0) {
1173 _this_zval
= getThis();
1174 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
1176 php_error(E_WARNING
, "__construct: not yet implemented"); RETURN_FALSE
;
1179 /* }}} __construct */
1183 /* {{{ proto int get_depth()
1185 PHP_METHOD(CairoXlibSurface
, get_depth
)
1187 zend_class_entry
* _this_ce
;
1189 zval
* _this_zval
= NULL
;
1193 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoXlibSurface_ce_ptr
) == FAILURE
) {
1197 _this_ce
= Z_OBJCE_P(_this_zval
);
1198 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
1200 depth
= cairo_xlib_surface_get_depth(curr
->surface
);
1208 /* {{{ proto int get_height()
1210 PHP_METHOD(CairoXlibSurface
, get_height
)
1212 zend_class_entry
* _this_ce
;
1214 zval
* _this_zval
= NULL
;
1218 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoXlibSurface_ce_ptr
) == FAILURE
) {
1222 _this_ce
= Z_OBJCE_P(_this_zval
);
1223 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
1224 height
= cairo_xlib_surface_get_height(curr
->surface
);
1226 RETURN_LONG(height
);
1228 /* }}} get_height */
1232 /* {{{ proto int get_width()
1234 PHP_METHOD(CairoXlibSurface
, get_width
)
1236 zend_class_entry
* _this_ce
;
1238 zval
* _this_zval
= NULL
;
1242 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, getThis(), "O", &_this_zval
, CairoXlibSurface_ce_ptr
) == FAILURE
) {
1246 _this_ce
= Z_OBJCE_P(_this_zval
);
1247 surface_object
*curr
=(surface_object
*)zend_objects_get_address(_this_zval TSRMLS_CC
);
1248 width
= cairo_xlib_surface_get_width(curr
->surface
);
1255 static zend_function_entry CairoXlibSurface_methods
[] = {
1256 PHP_ME(CairoXlibSurface
, __construct
, NULL
, /**/ZEND_ACC_PUBLIC
| ZEND_ACC_CTOR
)
1257 PHP_ME(CairoXlibSurface
, get_depth
, NULL
, /**/ZEND_ACC_PUBLIC
)
1258 PHP_ME(CairoXlibSurface
, get_height
, NULL
, /**/ZEND_ACC_PUBLIC
)
1259 PHP_ME(CairoXlibSurface
, get_width
, NULL
, /**/ZEND_ACC_PUBLIC
)
1260 { NULL
, NULL
, NULL
}
1265 static zend_object_value
CairoXlibSurface_object_new(zend_class_entry
*ce TSRMLS_DC
)
1267 zend_object_value retval
;
1268 retval
=CairoSurface_object_new(ce TSRMLS_CC
);
1269 retval
.handlers
= &CairoXlibSurface_handlers
;
1273 static void class_init_CairoXlibSurface(void)
1275 zend_class_entry ce
;
1277 INIT_CLASS_ENTRY(ce
, "CairoXlibSurface", CairoXlibSurface_methods
);
1278 CairoXlibSurface_ce_ptr
= zend_register_internal_class_ex(&ce
, CairoSurface_ce_ptr
, "CairoSurface" TSRMLS_CC
);
1279 CairoXlibSurface_ce_ptr
->create_object
= CairoXlibSurface_object_new
;
1280 memcpy(&CairoXlibSurface_handlers
, zend_get_std_object_handlers(), sizeof(zend_object_handlers
));
1284 /* }}} Class CairoXlibSurface */