All pastes #558663 Raw Edit

Untitled

public text v1 · immutable
·published 2007-06-11 13:32 UTC
rendered paste body
Index: xaml.cpp
===================================================================
--- xaml.cpp	(revision 79174)
+++ xaml.cpp	(working copy)
@@ -507,6 +507,7 @@
 void
 transform_group_add_child (XamlParserInfo *p, XamlElementInstance *parent, XamlElementInstance *child)
 {
+g_warning ("transform_group_add_child");
 	TransformGroup *tg = (TransformGroup *) parent->item;
 
 	if (is_instance_of (child, Value::TRANSFORM_COLLECTION)) {
@@ -530,6 +531,7 @@
 void
 transform_collection_add_child (XamlParserInfo *p, XamlElementInstance *parent, XamlElementInstance *child)
 {
+g_warning ("transform_collection_add_child");
 	if (!is_instance_of (child, Value::TRANSFORM)) {
 		g_warning ("error, attempting to add non Transform type (%d) to TransformCollection element\n",
 				child->info->dependency_type);
@@ -540,12 +542,16 @@
 	Transform *t = (Transform *) child->item;
 	Value v = Value (t);
 
+//
+// SHOULDN'T v BE ADDED HERE ?
+//
 	tc->Add (&t);
 }
 
 void
 geometry_group_add_child (XamlParserInfo *p, XamlElementInstance *parent, XamlElementInstance *child)
 {
+g_warning ("geometry_group_add_child");
 	GeometryGroup *gg = (GeometryGroup *) parent->item;
 
 	if (is_instance_of (child, Value::GEOMETRY_COLLECTION)) {
@@ -567,12 +573,37 @@
 }
 
 void
+path_geometry_add_child (XamlParserInfo *p, XamlElementInstance *parent, XamlElementInstance *child)
+{
+g_warning ("path_geometry_add_child");
+	PathGeometry *pg = (PathGeometry *) parent->item;
+
+	if (is_instance_of (child, Value::PATHFIGURE_COLLECTION)) {
+		Value v ((PathFigureCollection *) child->item);
+		pg->SetValue (pg->FiguresProperty, &v);
+		return;
+	}
+
+	if (!is_instance_of (child, Value::PATHFIGURE)) {
+		g_warning ("error, attempting to add non PathFigure type (%d) to PathFigureCollection element\n",
+				child->info->dependency_type);
+		return;
+	}
+
+	PathFigure *pf = (PathFigure *) child->item;
+	Value v = Value (pf);
+
+	pg->children->Add (&v);
+}
+
+void
 path_figure_add_child (XamlParserInfo *p, XamlElementInstance *parent, XamlElementInstance *child)
 {
+g_warning ("path_figure_add_child");
 	PathFigure *pf = (PathFigure *) parent->item;
 
-	if (is_instance_of (child, Value::PATHFIGURE_COLLECTION)) {
-		Value v ((PathFigureCollection *) child->item);
+	if (is_instance_of (child, Value::PATHSEGMENT_COLLECTION)) {
+		Value v ((PathSegmentCollection *) child->item);
 		pf->SetValue (pf->SegmentsProperty, &v);
 		return;
 	}
@@ -589,6 +620,23 @@
 	pf->children->Add (&v);
 }
 
+void
+path_figure_collection_add_child (XamlParserInfo *p, XamlElementInstance *parent, XamlElementInstance *child)
+{
+g_warning ("path_figure_collection_add_child");
+	if (!is_instance_of (child, Value::PATHFIGURE)) {
+		g_warning ("error, attempting to add non PathFigure type (%d) to PathFigureCollection element\n",
+				child->info->dependency_type);
+		return;
+	}
+
+	PathFigureCollection *pfc = (PathFigureCollection *) parent->item;
+	PathFigure *pf = (PathFigure *) child->item;
+	Value v = Value (pf);
+
+	pfc->Add (&v);
+}
+
 ///
 /// set property funcs
 ///
@@ -833,16 +881,33 @@
 
 	XamlElementInfo *geo = register_ghost_element ("Geometry", NULL, Value::GEOMETRY);
 	register_dependency_object_element ("EllipseGeometry", geo, Value::ELLIPSEGEOMETRY, (create_item_func) ellipse_geometry_new);
-//	register_dependency_object_element ("CombinedGeometry", geo, Value::COMBINEDGEOMETRY, (create_item_func) combined_geometry_new);
 	register_dependency_object_element ("LineGeometry", geo, Value::LINEGEOMETRY, (create_item_func) line_geometry_new);
-	register_dependency_object_element ("PathGeometry", geo, Value::PATHGEOMETRY, (create_item_func) path_geometry_new);
 	register_dependency_object_element ("RectangleGeometry", geo, Value::RECTANGLEGEOMETRY, (create_item_func) rectangle_geometry_new);
-//	register_dependency_object_element ("StreamGeometry", geo, Value::STREAMGEOMETRY, (create_item_func) stream_geometry_new);
+
 	XamlElementInfo *gg = register_dependency_object_element ("GeometryGroup", geo, Value::GEOMETRYGROUP, (create_item_func) geometry_group_new);
 	gg->add_child = geometry_group_add_child;
+//	XamlElementInfo *gc = register_dependency_object_element ("GeometryCollection", geo, Value::GEOMETRYGROUP, (create_item_func) geometry_group_new);
+//	gc->add_child = geometry_collection_add_child;
+
+	XamlElementInfo *pg = register_dependency_object_element ("PathGeometry", geo, Value::PATHGEOMETRY, (create_item_func) path_geometry_new);
+//	pg->add_child = path_geometry_add_child;
+	XamlElementInfo *pfc = register_dependency_object_element ("PathFigureCollection", geo, Value::PATHFIGURE_COLLECTION, (create_item_func) NULL);
+	pfc->add_child = path_figure_collection_add_child;
+
 	XamlElementInfo *pf = register_dependency_object_element ("PathFigure", geo, Value::PATHFIGURE, (create_item_func) path_figure_new);
 	pf->add_child = path_figure_add_child;
+	XamlElementInfo *psc = register_dependency_object_element ("PathSegmentCollection", geo, Value::PATHFIGURE, (create_item_func) path_figure_new);
+//	psc->add_child = path_segment_collection_add_child;
 
+	XamlElementInfo *ps = register_ghost_element ("PathSegment", geo, Value::PATHSEGMENT);
+	register_dependency_object_element ("ArcSegment", ps, Value::ARCSEGMENT, (create_item_func) arc_segment_new);
+	register_dependency_object_element ("BezierSegment", ps, Value::BEZIERSEGMENT, (create_item_func) bezier_segment_new);
+	register_dependency_object_element ("LineSegment", ps, Value::LINESEGMENT, (create_item_func) line_segment_new);
+	register_dependency_object_element ("PolyBezierSegment", ps, Value::POLYBEZIERSEGMENT, (create_item_func) poly_bezier_segment_new);
+	register_dependency_object_element ("PolyLineSegment", ps, Value::POLYLINESEGMENT, (create_item_func) poly_line_segment_new);
+	register_dependency_object_element ("PolyQuadraticBezierSegment", ps, Value::POLYQUADRATICBEZIERSEGMENT, (create_item_func) poly_quadratic_bezier_segment_new);
+	register_dependency_object_element ("QuadraticBezierSegment", ps, Value::QUADRATICBEZIERSEGMENT, (create_item_func) quadratic_bezier_segment_new);
+
 	///
 	/// Panels
 	///
Index: transform.cpp
===================================================================
--- transform.cpp	(revision 79174)
+++ transform.cpp	(working copy)
@@ -246,8 +246,6 @@
 void
 TransformCollection::Add (void *data)
 {
-	TransformGroup *tfg = (TransformGroup *) closure;
-	
 	Value *v = (Value *) data;
 	Transform *transform = v->AsTransform ();
 
@@ -257,8 +255,6 @@
 void
 TransformCollection::Remove (void *data)
 {
-	TransformGroup *tfg = (TransformGroup *) closure;
-	
 	Value *v = (Value *) data;
 	Transform *transform = v->AsTransform ();