[Commit] cairo/src cairo.c, 1.8, 1.9 cairo.h, 1.10,
1.11 cairo_gstate.c, 1.9, 1.10
Carl Worth
commit at keithp.com
Fri Sep 5 09:35:11 PDT 2003
Committed by: cworth
Update of /local/src/CVS/cairo/src
In directory home.keithp.com:/tmp/cvs-serv29611/src
Modified Files:
cairo.c cairo.h cairo_gstate.c
Log Message:
Added cairo_copy. Bumbed version to 0.1.2.
Index: cairo.c
===================================================================
RCS file: /local/src/CVS/cairo/src/cairo.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- cairo.c 4 Sep 2003 23:27:35 -0000 1.8
+++ cairo.c 5 Sep 2003 15:35:08 -0000 1.9
@@ -32,53 +32,50 @@
static void
_cairo_restrict_value (double *value, double min, double max);
-static void
-_cairo_init (cairo_t *cr);
-
-static void
-_cairo_fini (cairo_t *cr);
-
cairo_t *
cairo_create (void)
{
cairo_t *cr;
cr = malloc (sizeof (cairo_t));
-
- if (cr) {
- _cairo_init (cr);
- if (cr->status) {
- free (cr);
- return NULL;
- }
- }
-
- return cr;
-}
-
-static void
-_cairo_init (cairo_t *cr)
-{
- cr->gstate = NULL;
+ if (cr == NULL)
+ return NULL;
cr->status = CAIRO_STATUS_SUCCESS;
- cairo_save (cr);
+ cr->gstate = _cairo_gstate_create ();
+ if (cr->gstate == NULL)
+ cr->status = CAIRO_STATUS_NO_MEMORY;
+
+ return cr;
}
-static void
-_cairo_fini (cairo_t *cr)
+void
+cairo_destroy (cairo_t *cr)
{
while (cr->gstate) {
cairo_restore (cr);
}
+
+ free (cr);
}
-void
-cairo_destroy (cairo_t *cr)
+cairo_t *
+cairo_copy (cairo_t *cr_other)
{
- _cairo_fini (cr);
- free (cr);
+ cairo_t *cr;
+
+ cr = malloc (sizeof (cairo_t));
+ if (cr == NULL)
+ return NULL;
+
+ *cr = *cr_other;
+
+ cr->gstate = _cairo_gstate_clone (cr_other->gstate);
+ if (cr->gstate == NULL)
+ cr->status = CAIRO_STATUS_NO_MEMORY;
+
+ return cr;
}
void
Index: cairo.h
===================================================================
RCS file: /local/src/CVS/cairo/src/cairo.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- cairo.h 4 Sep 2003 23:27:35 -0000 1.10
+++ cairo.h 5 Sep 2003 15:35:09 -0000 1.11
@@ -53,6 +53,9 @@
extern void __external_linkage
cairo_destroy (cairo_t *cr);
+extern cairo_t * __external_linkage
+cairo_copy (cairo_t *cr_other);
+
extern void __external_linkage
cairo_save (cairo_t *cr);
Index: cairo_gstate.c
===================================================================
RCS file: /local/src/CVS/cairo/src/cairo_gstate.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- cairo_gstate.c 5 Sep 2003 14:16:46 -0000 1.9
+++ cairo_gstate.c 5 Sep 2003 15:35:09 -0000 1.10
@@ -93,6 +93,8 @@
_cairo_path_init (&gstate->path);
+ gstate->current_pt.x = 0.0;
+ gstate->current_pt.y = 0.0;
gstate->has_current_pt = 0;
_cairo_pen_init_empty (&gstate->pen_regular);
@@ -193,6 +195,7 @@
return NULL;
}
}
+ clone->next = NULL;
return clone;
}
More information about the Commit
mailing list