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 ();