Surface almost there ...
[phpCairo.git] / individual_files / phpCairoSurface.c
blob99bf5789b11ca6ae434c8465a2e467716f4847f6
1 /* {{{ Class CairoSurface */
3 static zend_class_entry * CairoSurface_ce_ptr = NULL;
4 static zend_object_handlers CairoSurface_handlers;
6 /*
7 typedef struct _surface_object {
8 zend_object std;
9 cairo_surface_t *surface;
10 } surface_object;
13 /* {{{ Methods */
16 /* {{{ proto void construct() -- Add error
18 PHP_METHOD(CairoSurface, __construct)
20 zend_class_entry * _this_ce;
21 zval * _this_zval;
25 if (ZEND_NUM_ARGS()>0) {
26 WRONG_PARAM_COUNT;
27 php_print("wtf");
28 return;
31 php_print("No direct call for this constructor");
35 /* }}} __construct */
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;
46 cairo_surface_t *sur;
47 int content;
48 long width = 0;
49 long height = 0;
51 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oill", &_this_zval, CairoSurface_ce_ptr, &content, &width, &height) == FAILURE) {
52 return;
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);
60 sobj->surface=sur;
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) {
75 return;
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);
82 /* }}} finish */
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) {
95 return;
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);
104 /* }}} flush */
108 /* {{{ proto int get_content()
110 PHP_METHOD(CairoSurface, get_content)
112 zend_class_entry * _this_ce;
114 zval * _this_zval = NULL;
115 long x;
116 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoSurface_ce_ptr) == FAILURE) {
117 return;
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);
124 RETURN_LONG(x);
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) {
140 return;
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) {
169 return;
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;
192 long x = 0;
193 long y = 0;
194 long width = -1;
195 long height = -1;
199 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|llll", &_this_zval, CairoSurface_ce_ptr, &x, &y, &width, &height) == FAILURE) {
200 return;
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) {
222 return;
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;
241 double x_ppi = 0.0;
242 double y_ppi = 0.0;
244 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Odd", &_this_zval, CairoSurface_ce_ptr, &x_ppi, &y_ppi) == FAILURE) {
245 return;
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;
265 int file_len = 0;
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) {
269 return;
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)
292 { NULL, NULL, NULL }
295 /* }}} Methods */
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);
308 efree(object);
311 static zend_object_value CairoSurface_object_new(zend_class_entry *ce)
313 zend_object_value retval;
314 surface_object *surface;
315 zval *temp;
317 surface = emalloc(sizeof(surface_object));
318 memset(surface,0,sizeof(surface_object));
320 surface->std.ce=ce;
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;
327 return retval;
330 static void class_init_CairoSurface(void)
332 zend_class_entry ce;
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;
347 /* {{{ Methods */
350 /* {{{ proto void construct(int format, int widthm, int height)
352 PHP_METHOD(CairoImageSurface, __construct)
354 zend_class_entry * _this_ce;
355 zval * _this_zval;
357 cairo_format_t format = 0;
358 long widthm = 0;
359 long height = 0;
363 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll", &format, &widthm, &height) == FAILURE) {
364 return;
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;
385 int buffer_len = 0;
386 long format = 0;
387 long width = 0;
388 long height = 0;
389 long stride = -1;
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) {
394 return;
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);
402 if(stride < 0 ){
403 switch(format) {
404 case CAIRO_FORMAT_ARGB32:
405 case CAIRO_FORMAT_RGB24:
406 stride = width * 4;
407 break;
408 case CAIRO_FORMAT_RGB16_565:
409 stride = width * 2;
410 break;
411 case CAIRO_FORMAT_A8:
412 stride = width;
413 break;
414 case CAIRO_FORMAT_A1:
415 stride = (width + 1) / 8;
416 break;
417 default:
418 //php_error(CairoError, "Unknown format");
419 return;
423 if (height * stride > buffer_len) {
424 php_error(E_ERROR,"buffer is not long enough");
425 return;
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;
441 int file_len = 0;
443 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &_this_zval, CairoImageSurface_ce_ptr, &file, &file_len) == FAILURE) {
444 return;
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) {
470 return;
473 _this_ce = Z_OBJCE_P(_this_zval);
474 php_error(E_WARNING,"Not Implemented .. not required");
476 RETURN_STRINGL("", 0, 1);
478 /* }}} get_data */
482 /* {{{ proto int get_format()
484 PHP_METHOD(CairoImageSurface, get_format)
486 zend_class_entry * _this_ce;
487 long x;
488 zval * _this_zval = NULL;
490 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoImageSurface_ce_ptr) == FAILURE) {
491 return;
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);
497 RETURN_LONG(x);
499 /* }}} get_format */
503 /* {{{ proto int get_height()
505 PHP_METHOD(CairoImageSurface, get_height)
507 zend_class_entry * _this_ce;
508 zval * _this_zval = NULL;
509 long x;
511 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoImageSurface_ce_ptr) == FAILURE) {
512 return;
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);
519 RETURN_LONG(x);
521 /* }}} get_height */
525 /* {{{ proto int get_stride()
527 PHP_METHOD(CairoImageSurface, get_stride)
529 zend_class_entry * _this_ce;
530 zval * _this_zval = NULL;
531 long x;
533 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoImageSurface_ce_ptr) == FAILURE) {
534 return;
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);
541 RETURN_LONG(x);
543 /* }}} get_stride */
547 /* {{{ proto int get_width()
549 PHP_METHOD(CairoImageSurface, get_width)
551 zend_class_entry * _this_ce;
552 zval * _this_zval = NULL;
553 long x;
555 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoImageSurface_ce_ptr) == FAILURE) {
556 return;
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);
564 RETURN_LONG(x);
566 /* }}} get_width */
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)
578 { NULL, NULL, NULL }
581 /* }}} Methods */
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;
588 return retval;
592 static void class_init_CairoImageSurface(void)
594 zend_class_entry ce;
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;
608 /* {{{ Methods */
611 /* {{{ proto void construct(string file, float wpts, float hpts)
613 PHP_METHOD(CairoPDFSurface, __construct)
615 zend_class_entry * _this_ce;
616 zval * _this_zval;
618 const char * file = NULL;
619 int file_len = 0;
620 double wpts = 0.0;
621 double hpts = 0.0;
625 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sdd", &file, &file_len, &wpts, &hpts) == FAILURE) {
626 return;
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;
648 double wpts = 0.0;
649 double hpts = 0.0;
653 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Odd", &_this_zval, CairoPDFSurface_ce_ptr, &wpts, &hpts) == FAILURE) {
654 return;
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);
662 /* }}} set_size */
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)
668 { NULL, NULL, NULL }
671 /* }}} Methods */
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;
678 return retval;
681 static void class_init_CairoPDFSurface(void)
683 zend_class_entry ce;
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;
698 /* {{{ Methods */
701 /* {{{ proto void construct(string file, float wpts, float hpts)
703 PHP_METHOD(CairoPSSurface, __construct)
705 zend_class_entry * _this_ce;
706 zval * _this_zval;
708 const char * file = NULL;
709 int file_len = 0;
710 double wpts = 0.0;
711 double hpts = 0.0;
715 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sdd", &file, &file_len, &wpts, &hpts) == FAILURE) {
716 return;
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) {
740 return;
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) {
765 return;
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) {
789 return;
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) {
813 return;
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);
822 do {
823 /* ONLY for CAIRO 1.6 */
824 } while (0);
826 /* }}} get_levels */
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) {
841 return;
844 _this_ce = Z_OBJCE_P(_this_zval);
845 surface_object *curr =(surface_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
848 do {
849 /* ONLY for CAIRO 1.6*/
850 } while (0);
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;
863 long level = 0;
867 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &_this_zval, CairoPSSurface_ce_ptr, &level) == FAILURE) {
868 return;
871 _this_ce = Z_OBJCE_P(_this_zval);
872 surface_object *curr =(surface_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
875 do {
876 /* ONLY for CAIRO 1.6 */
877 } while (0);
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) {
894 return;
897 _this_ce = Z_OBJCE_P(_this_zval);
898 surface_object *curr =(surface_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
901 do {
902 /* ONLY for CAIRO 1.6 */
903 } while (0);
905 /* }}} set_eps */
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;
916 double wpts = 0.0;
917 double hpts = 0.0;
921 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Odd", &_this_zval, CairoPSSurface_ce_ptr, &wpts, &hpts) == FAILURE) {
922 return;
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);
930 /* }}} set_size */
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)
943 { NULL, NULL, NULL }
946 /* }}} Methods */
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;
953 return retval;
956 static void class_init_CairoPSSurface(void)
958 zend_class_entry ce;
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;
972 /* {{{ Methods */
975 /* {{{ proto void construct(float wpixels, float hpixels [, int format])
977 PHP_METHOD(CairoQuartzSurface, __construct)
979 zend_class_entry * _this_ce;
980 zval * _this_zval;
982 double wpixels = 0.0;
983 double hpixels = 0.0;
984 long format = 0;
988 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd|l", &wpixels, &hpixels, &format) == FAILURE) {
989 return;
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 }
1008 /* }}} Methods */
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;
1015 return retval;
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;
1035 /* {{{ Methods */
1038 /* {{{ proto void construct(string file, float wpts, float hpts)
1040 PHP_METHOD(CairoSVGSurface, __construct)
1042 zend_class_entry * _this_ce;
1043 zval * _this_zval;
1045 const char * file = NULL;
1046 int file_len = 0;
1047 double wpts = 0.0;
1048 double hpts = 0.0;
1052 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sdd", &file, &file_len, &wpts, &hpts) == FAILURE) {
1053 return;
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 }
1071 /* }}} Methods */
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;
1078 return retval;
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;
1099 /* {{{ Methods */
1102 /* {{{ proto void construct(int hdc)
1104 PHP_METHOD(CairoWin32Surface, __construct)
1106 zend_class_entry * _this_ce;
1107 zval * _this_zval;
1109 long hdc = 0;
1113 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &hdc) == FAILURE) {
1114 return;
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 }
1130 /* }}} Methods */
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;
1137 return retval;
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;
1157 /* {{{ Methods */
1160 /* {{{ proto void construct()
1162 PHP_METHOD(CairoXlibSurface, __construct)
1164 zend_class_entry * _this_ce;
1165 zval * _this_zval;
1169 if (ZEND_NUM_ARGS()>0) {
1170 WRONG_PARAM_COUNT;
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;
1190 long depth;
1193 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoXlibSurface_ce_ptr) == FAILURE) {
1194 return;
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);
1202 RETURN_LONG(depth);
1204 /* }}} get_depth */
1208 /* {{{ proto int get_height()
1210 PHP_METHOD(CairoXlibSurface, get_height)
1212 zend_class_entry * _this_ce;
1214 zval * _this_zval = NULL;
1215 long height;
1218 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoXlibSurface_ce_ptr) == FAILURE) {
1219 return;
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;
1239 long width;
1242 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoXlibSurface_ce_ptr) == FAILURE) {
1243 return;
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);
1250 RETURN_LONG(width);
1252 /* }}} get_width */
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 }
1263 /* }}} Methods */
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;
1270 return retval;
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 */