[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