Updating checkpoint ...
[phpCairo.git] / src / cairo / CairoPattern.c
blob4443a763e402e54ffbca9234f292ca3ebf83fb09
2 /* {{{ Class CairoPattern */
4 static zend_class_entry * CairoPattern_ce_ptr = NULL;
6 /* {{{ Methods */
9 /* {{{ proto void contruct()
11 PHP_METHOD(CairoPattern, __construct)
13 zval * _this_zval;
17 if (ZEND_NUM_ARGS()>0) {
18 WRONG_PARAM_COUNT;
22 php_error(E_ERROR, "Pattern Cannot be initialized"); RETURN_FALSE;
25 /* }}} __construct */
29 /* {{{ proto object getMatrix()
31 PHP_METHOD(CairoPattern, getMatrix)
34 zval * _this_zval = NULL;
35 cairo_matrix_t matrix;
37 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoPattern_ce_ptr) == FAILURE) {
38 return;
41 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
43 cairo_pattern_get_matrix(curr->pattern, &matrix);
44 object_init_ex(return_value, CairoMatrix_ce_ptr);
45 matrix_object *mobj = (matrix_object *)zend_objects_get_address(return_value TSRMLS_CC);
46 mobj->matrix = matrix;
48 /* }}} getMatrix */
52 /* {{{ proto void setMatrix(object m)
54 PHP_METHOD(CairoPattern, setMatrix)
57 zval * _this_zval = NULL;
58 zval * m = NULL;
62 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oo", &_this_zval, CairoPattern_ce_ptr, &m) == FAILURE) {
63 return;
66 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
67 matrix_object *mobj = (matrix_object *)zend_objects_get_address(m TSRMLS_CC);
68 cairo_pattern_set_matrix(curr->pattern, &mobj->matrix);
70 /* }}} setMatrix */
73 /* {{{ proto void setExtend(int extend)
75 PHP_METHOD(CairoPattern, setExtend)
77 long extend;
79 zval * _this_zval = NULL;
80 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &_this_zval, CairoPattern_ce_ptr, &extend) == FAILURE) {
81 return;
83 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
84 cairo_pattern_set_extend(curr->pattern, extend);
85 PHP_CAIRO_PATTERN_ERROR(curr->pattern);
89 /* }}} setExtend */
92 /* {{{ proto void getExtend()
94 PHP_METHOD(CairoPattern, getExtend)
96 long extend;
98 zval * _this_zval = NULL;
99 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoPattern_ce_ptr) == FAILURE) {
100 return;
102 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
103 extend = cairo_pattern_get_extend(curr->pattern);
104 RETURN_LONG(extend);
106 /* }}} setExtend */
109 static zend_function_entry CairoPattern_methods[] = {
110 PHP_ME(CairoPattern, __construct, NULL, /**/ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
111 PHP_ME(CairoPattern, getMatrix, NULL, /**/ZEND_ACC_PUBLIC)
112 PHP_ME(CairoPattern, setMatrix, CairoPattern__set_matrix_args, /**/ZEND_ACC_PUBLIC)
113 PHP_ME(CairoPattern, getExtend, NULL, /**/ZEND_ACC_PUBLIC)
114 PHP_ME(CairoPattern, setExtend, CairoPattern__set_extend_args, /**/ZEND_ACC_PUBLIC)
115 { NULL, NULL, NULL }
118 /* }}} Methods */
120 static zend_object_handlers CairoPattern_handlers;
122 static void CairoPattern_object_dtor(void *object)
124 pattern_object *pattern = (pattern_object *)object;
125 zend_hash_destroy(pattern->std.properties);
126 FREE_HASHTABLE(pattern->std.properties);
127 if(pattern->pattern){
128 cairo_pattern_destroy(pattern->pattern);
130 efree(object);
133 static zend_object_value CairoPattern_object_new(zend_class_entry *ce)
135 zend_object_value retval;
136 pattern_object *pattern;
137 zval *temp;
138 pattern=emalloc(sizeof(pattern_object));
139 memset(pattern,0,sizeof(pattern_object));
140 pattern->std.ce = ce;
141 ALLOC_HASHTABLE(pattern->std.properties);
142 zend_hash_init(pattern->std.properties, 0, NULL, ZVAL_PTR_DTOR,0);
143 zend_hash_copy(pattern->std.properties, &ce->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &temp, sizeof(zval *));
144 retval.handle = zend_objects_store_put(pattern, NULL, (zend_objects_free_object_storage_t)CairoPattern_object_dtor, NULL TSRMLS_CC);
145 retval.handlers = &CairoPattern_handlers;
146 return retval;
150 static void class_init_CairoPattern(void)
152 zend_class_entry ce;
154 INIT_CLASS_ENTRY(ce, "CairoPattern", CairoPattern_methods);
155 CairoPattern_ce_ptr = zend_register_internal_class(&ce);
156 CairoPattern_ce_ptr->create_object = CairoPattern_object_new;
157 memcpy(&CairoPattern_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
158 CairoPattern_handlers.clone_obj = NULL;
161 /* }}} Class CairoPattern */
163 /* {{{ Class CairoGradient */
165 static zend_class_entry * CairoGradient_ce_ptr = NULL;
167 /* {{{ Methods */
170 /* {{{ proto void construct()
172 PHP_METHOD(CairoGradient, __construct)
175 zval * _this_zval = NULL;
179 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoGradient_ce_ptr) == FAILURE) {
180 return;
185 php_error(E_ERROR, "Gradient cannot be initialized"); RETURN_FALSE;
188 /* }}} __construct */
192 /* {{{ proto void addColorStopRgb(float offset, float red, float green, float blue)
194 PHP_METHOD(CairoGradient, addColorStopRgb)
197 zval * _this_zval = NULL;
198 double offset = 0.0;
199 double red = 0.0;
200 double green = 0.0;
201 double blue = 0.0;
205 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Odddd", &_this_zval, CairoGradient_ce_ptr, &offset, &red, &green, &blue) == FAILURE) {
206 return;
209 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
210 cairo_pattern_add_color_stop_rgb(curr->pattern, offset, red, green, blue);
211 PHP_CAIRO_PATTERN_ERROR(curr->pattern);
213 /* }}} addColorStopRgb */
217 /* {{{ proto void addColorStopRgba(float offset, float red, float green, float blue, float alpha)
219 PHP_METHOD(CairoGradient, addColorStopRgba)
222 zval * _this_zval = NULL;
223 double offset = 0.0;
224 double red = 0.0;
225 double green = 0.0;
226 double blue = 0.0;
227 double alpha = 0.0;
231 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oddddd", &_this_zval, CairoGradient_ce_ptr, &offset, &red, &green, &blue, &alpha) == FAILURE) {
232 return;
235 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
236 cairo_pattern_add_color_stop_rgba(curr->pattern, offset, red, green, blue, alpha);
237 PHP_CAIRO_PATTERN_ERROR(curr->pattern);
239 /* }}} addColorStopRgba */
243 static zend_function_entry CairoGradient_methods[] = {
244 PHP_ME(CairoGradient, __construct, NULL, /**/ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
245 PHP_ME(CairoGradient, addColorStopRgb, CairoGradient__add_color_stop_rgb_args, /**/ZEND_ACC_PUBLIC)
246 PHP_ME(CairoGradient, addColorStopRgba, CairoGradient__add_color_stop_rgba_args, /**/ZEND_ACC_PUBLIC)
247 { NULL, NULL, NULL }
250 /* }}} Methods */
252 static zend_object_handlers CairoGradient_handlers;
254 static zend_object_value CairoGradient_object_new(zend_class_entry *ce TSRMLS_CC)
256 zend_object_value retval;
257 retval = CairoPattern_object_new(ce TSRMLS_CC);
258 retval.handlers = &CairoGradient_handlers;
259 return retval;
262 static void class_init_CairoGradient(void)
264 zend_class_entry ce;
265 INIT_CLASS_ENTRY(ce, "CairoGradient", CairoGradient_methods);
266 CairoGradient_ce_ptr = zend_register_internal_class_ex(&ce, CairoPattern_ce_ptr, "CairoPattern" TSRMLS_CC);
267 CairoGradient_ce_ptr->create_object = CairoGradient_object_new;
268 memcpy(&CairoGradient_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
272 /* }}} Class CairoGradient */
274 /* {{{ Class CairoLinearGradient */
276 static zend_class_entry * CairoLinearGradient_ce_ptr = NULL;
278 /* {{{ Methods */
281 /* {{{ proto void construct(float x0, float y0, float x1, float y1)
283 PHP_METHOD(CairoLinearGradient, __construct)
285 zval * _this_zval;
287 double x0 = 0.0;
288 double y0 = 0.0;
289 double x1 = 0.0;
290 double y1 = 0.0;
294 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dddd", &x0, &y0, &x1, &y1) == FAILURE) {
295 return;
298 _this_zval = getThis();
299 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
300 curr->pattern = cairo_pattern_create_linear(x0, y0, x1, y1);
303 /* }}} __construct */
307 /* {{{ proto array getLinearPoints()
309 PHP_METHOD(CairoLinearGradient, getLinearPoints)
312 zval * _this_zval = NULL;
313 double x0, y0, x1, y1;
316 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoLinearGradient_ce_ptr) == FAILURE) {
317 return;
320 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
321 cairo_pattern_get_linear_points(curr->pattern, &x0, &y0, &x1, &y1);
323 array_init(return_value);
324 add_assoc_double(return_value, "x0", x0);
325 add_assoc_double(return_value, "y0", y0);
326 add_assoc_double(return_value, "x1", x1);
327 add_assoc_double(return_value, "y1", y1);
330 /* }}} getLinearPoints */
333 static zend_function_entry CairoLinearGradient_methods[] = {
334 PHP_ME(CairoLinearGradient, __construct, CairoLinearGradient____construct_args, /**/ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
335 PHP_ME(CairoLinearGradient, getLinearPoints, NULL, /**/ZEND_ACC_PUBLIC)
336 { NULL, NULL, NULL }
339 /* }}} Methods */
341 static zend_object_handlers CairoLinearGradient_handlers;
343 static zend_object_value CairoLinearGradient_object_new(zend_class_entry *ce TSRMLS_CC)
345 zend_object_value retval;
346 retval = CairoGradient_object_new(ce TSRMLS_CC);
347 retval.handlers = &CairoLinearGradient_handlers;
348 return retval;
351 static void class_init_CairoLinearGradient(void)
353 zend_class_entry ce;
354 INIT_CLASS_ENTRY(ce, "CairoLinearGradient", CairoLinearGradient_methods);
355 CairoLinearGradient_ce_ptr = zend_register_internal_class_ex(&ce, CairoGradient_ce_ptr, "CairoGradient" TSRMLS_CC);
356 CairoLinearGradient_ce_ptr->create_object = CairoLinearGradient_object_new;
357 memcpy(&CairoLinearGradient_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
361 /* }}} Class CairoLinearGradient */
363 /* {{{ Class CairoRadialGradient */
365 static zend_class_entry * CairoRadialGradient_ce_ptr = NULL;
367 /* {{{ Methods */
370 /* {{{ proto void construct(float cx0, float cy0, float radius0, float cx1, float cy1, float radius1)
372 PHP_METHOD(CairoRadialGradient, __construct)
375 zval * _this_zval = NULL;
376 double cx0 = 0.0;
377 double cy0 = 0.0;
378 double radius0 = 0.0;
379 double cx1 = 0.0;
380 double cy1 = 0.0;
381 double radius1 = 0.0;
385 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Odddddd", &_this_zval, CairoRadialGradient_ce_ptr, &cx0, &cy0, &radius0, &cx1, &cy1, &radius1) == FAILURE) {
386 return;
389 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
390 curr->pattern = cairo_pattern_create_radial(cx0, cy0, radius0, cx1, cy1, radius1);
393 /* }}} __construct */
397 /* {{{ proto array getRadialCircles()
399 PHP_METHOD(CairoRadialGradient, getRadialCircles)
402 zval * _this_zval = NULL;
403 double x0, y0, r0, x1, y1, r1;
406 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoRadialGradient_ce_ptr) == FAILURE) {
407 return;
410 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
411 cairo_pattern_get_radial_circles(curr->pattern, &x0, &y0, &r0, &x1, &y1, &r1);
413 array_init(return_value);
414 add_assoc_double(return_value, "x0", x0);
415 add_assoc_double(return_value, "y0", y0);
416 add_assoc_double(return_value, "r0", r0);
417 add_assoc_double(return_value, "x1", x1);
418 add_assoc_double(return_value, "y1", y1);
419 add_assoc_double(return_value, "r1", r1);
422 /* }}} getRadialCircles */
425 static zend_function_entry CairoRadialGradient_methods[] = {
426 PHP_ME(CairoRadialGradient, __construct, CairoRadialGradient____constuct_args, /**/ZEND_ACC_PUBLIC| ZEND_ACC_CTOR)
427 PHP_ME(CairoRadialGradient, getRadialCircles, NULL, /**/ZEND_ACC_PUBLIC)
428 { NULL, NULL, NULL }
431 /* }}} Methods */
433 static zend_object_handlers CairoRadialGradient_handlers;
435 static zend_object_value CairoRadialGradient_object_new(zend_class_entry *ce TSRMLS_CC)
437 zend_object_value retval;
438 retval = CairoGradient_object_new(ce TSRMLS_CC);
439 retval.handlers = &CairoRadialGradient_handlers;
440 return retval;
443 static void class_init_CairoRadialGradient(void)
445 zend_class_entry ce;
446 INIT_CLASS_ENTRY(ce, "CairoRadialGradient", CairoRadialGradient_methods);
447 CairoRadialGradient_ce_ptr = zend_register_internal_class_ex(&ce, CairoGradient_ce_ptr, "CairoGradient" TSRMLS_CC);
448 CairoRadialGradient_ce_ptr->create_object = CairoRadialGradient_object_new;
449 memcpy(&CairoRadialGradient_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
452 /* }}} Class CairoRadialGradient */
454 /* {{{ Class CairoSolidPattern */
456 static zend_class_entry * CairoSolidPattern_ce_ptr = NULL;
458 /* {{{ Methods */
461 /* {{{ proto void construct(float r, float g, float b [, float a])
463 PHP_METHOD(CairoSolidPattern, __construct)
465 zval * _this_zval;
467 double r = 0.0;
468 double g = 0.0;
469 double b = 0.0;
470 double a = 1.0;
474 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddd|d", &r, &g, &b, &a) == FAILURE) {
475 return;
478 _this_zval = getThis();
479 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
480 curr->pattern = cairo_pattern_create_rgba(r, g, b, a);
483 /* }}} __construct */
487 /* {{{ proto array getRgba()
489 PHP_METHOD(CairoSolidPattern, getRgba)
492 zval * _this_zval = NULL;
493 double r,g,b,a;
496 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoSolidPattern_ce_ptr) == FAILURE) {
497 return;
500 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
501 cairo_pattern_get_rgba(curr->pattern, &r, &g, &b, &a);
503 array_init(return_value);
504 add_assoc_double(return_value, "red", r);
505 add_assoc_double(return_value, "green", g);
506 add_assoc_double(return_value, "blue", b);
507 add_assoc_double(return_value, "alpha", a);
510 /* }}} getRgba */
513 static zend_function_entry CairoSolidPattern_methods[] = {
514 PHP_ME(CairoSolidPattern, __construct, CairoSolidPattern____construct_args, /**/ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
515 PHP_ME(CairoSolidPattern, getRgba, NULL, /**/ZEND_ACC_PUBLIC)
516 { NULL, NULL, NULL }
519 /* }}} Methods */
521 static zend_object_handlers CairoSolidPattern_handlers;
523 static zend_object_value CairoSolidPattern_object_new(zend_class_entry *ce TSRMLS_CC)
525 zend_object_value retval;
526 retval = CairoPattern_object_new(ce TSRMLS_CC);
527 retval.handlers = &CairoSolidPattern_handlers;
528 return retval;
532 static void class_init_CairoSolidPattern(void)
534 zend_class_entry ce;
536 INIT_CLASS_ENTRY(ce, "CairoSolidPattern", CairoSolidPattern_methods);
537 CairoSolidPattern_ce_ptr = zend_register_internal_class_ex(&ce, CairoPattern_ce_ptr, "CairoPattern" TSRMLS_CC);
538 CairoSolidPattern_ce_ptr->create_object = CairoSolidPattern_object_new;
539 memcpy(&CairoSolidPattern_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
542 /* }}} Class CairoSolidPattern */
544 /* {{{ Class CairoSurfacePattern */
546 static zend_class_entry * CairoSurfacePattern_ce_ptr = NULL;
548 /* {{{ Methods */
551 /* {{{ proto void construct(object s)
553 PHP_METHOD(CairoSurfacePattern, __construct)
555 zval * _this_zval;
557 zval * s = NULL;
561 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &s) == FAILURE) {
562 return;
565 _this_zval = getThis();
566 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
567 surface_object *sobj = (surface_object *)zend_objects_get_address(s TSRMLS_CC);
568 curr->pattern = cairo_pattern_create_for_surface(sobj->surface);
571 /* }}} __construct */
574 /* {{{ proto int getFilter()
576 PHP_METHOD(CairoSurfacePattern, getFilter)
578 int filter;
579 zval * _this_zval = NULL;
583 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoSurfacePattern_ce_ptr) == FAILURE) {
584 return;
587 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
588 filter = cairo_pattern_get_filter(curr->pattern);
589 RETURN_LONG(filter);
591 /* }}} getFilter */
595 /* {{{ proto object getSurface()
597 PHP_METHOD(CairoSurfacePattern, getSurface)
599 zend_class_entry *surface_ce;
600 cairo_surface_t *surface;
601 zval * _this_zval = NULL;
605 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &_this_zval, CairoSurfacePattern_ce_ptr) == FAILURE) {
606 return;
609 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
610 cairo_pattern_get_surface(curr->pattern, &surface);
611 surface_ce = get_CairoSurface_ce_ptr(surface);
613 object_init_ex(return_value,surface_ce);
614 surface_object *sobj = (surface_object *)zend_objects_get_address(return_value TSRMLS_CC);
615 sobj->surface = cairo_surface_reference(surface);
617 /* }}} getSurface */
622 /* {{{ proto void setFilter(int filter)
624 PHP_METHOD(CairoSurfacePattern, setFilter)
627 zval * _this_zval = NULL;
628 long filter = 0;
632 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &_this_zval, CairoSurfacePattern_ce_ptr, &filter) == FAILURE) {
633 return;
636 pattern_object *curr = (pattern_object *)zend_objects_get_address(_this_zval TSRMLS_CC);
638 cairo_pattern_set_filter(curr->pattern, filter);
640 /* }}} setFilter */
643 static zend_function_entry CairoSurfacePattern_methods[] = {
644 PHP_ME(CairoSurfacePattern, __construct, NULL, /**/ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
645 PHP_ME(CairoSurfacePattern, getFilter, NULL, /**/ZEND_ACC_PUBLIC)
646 PHP_ME(CairoSurfacePattern, getSurface, NULL, /**/ZEND_ACC_PUBLIC)
647 PHP_ME(CairoSurfacePattern, setFilter, CairoSurfacePattern__set_filter_args, /**/ZEND_ACC_PUBLIC)
648 { NULL, NULL, NULL }
651 /* }}} Methods */
653 static zend_object_handlers CairoSurfacePattern_handlers;
655 static zend_object_value CairoSurfacePattern_object_new(zend_class_entry *ce TSRMLS_CC)
657 zend_object_value retval;
658 retval = CairoPattern_object_new(ce TSRMLS_CC);
659 retval.handlers = &CairoSurfacePattern_handlers;
660 return retval;
663 static void class_init_CairoSurfacePattern(void)
665 zend_class_entry ce;
666 INIT_CLASS_ENTRY(ce, "CairoSurfacePattern", CairoSurfacePattern_methods);
667 CairoSurfacePattern_ce_ptr = zend_register_internal_class_ex(&ce, CairoPattern_ce_ptr, "CairoPattern" TSRMLS_CC);
668 CairoSurfacePattern_ce_ptr->create_object = CairoSurfacePattern_object_new;
669 memcpy(&CairoSurfacePattern_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
673 /* }}} Class CairoSurfacePattern */
675 /* {{{ Helper functions */
677 zend_class_entry *
678 get_CairoPattern_ce_ptr(cairo_pattern_t *pattern)
680 zend_class_entry *type;
681 if(pattern == NULL)
682 return NULL;
683 switch(cairo_pattern_get_type(pattern)) {
684 case CAIRO_PATTERN_TYPE_SOLID:
685 type = CairoSolidPattern_ce_ptr;
686 break;
687 case CAIRO_PATTERN_TYPE_SURFACE:
688 type = CairoSurfacePattern_ce_ptr;
689 break;
690 case CAIRO_PATTERN_TYPE_LINEAR:
691 type = CairoLinearGradient_ce_ptr;
692 break;
693 case CAIRO_PATTERN_TYPE_RADIAL:
694 type = CairoRadialGradient_ce_ptr;
695 break;
696 default:
697 php_error(E_ERROR,"Unsupported Pattern");
698 return NULL;
700 return type;
702 /* }}} Helper functions */