/* * GooCanvas. Copyright (C) 2005 Damon Chaplin. * Released under the GNU LGPL license. See COPYING for details. * * goocanvasmodelsimple.c - simple canvas model. */ /** * SECTION:goocanvasmodelsimple * @Title: GooCanvasModelSimple * @Short_Description: a simple implementation of the canvas model interface. * * #GooCanvasModelSimple is a simple implementation of the #GooCanvasModel * interface. * * Typically the canvas model is created, items are added, and then the model * is set in the #GooCanvasView: * * * GooCanvasModelSimple *canvas_model; * GooCanvasItem *root, *item; * * /* Create a simple model. */ * canvas_model = goo_canvas_model_simple_new (); * * /* Get the root item of the model. */ * root = goo_canvas_model_get_root_item (GOO_CANVAS_MODEL (canvas_model)); * * /* Create a rectangle item. */ * item = goo_canvas_rect_new (root, 100, 100, 50, 50, NULL); * * /* Pass the model to the GooCanvasView. */ * goo_canvas_view_set_model (GOO_CANVAS_VIEW (canvas), * GOO_CANVAS_MODEL (canvas_model)); * * /* Unref the model, since the GooCanvasView owns it now. */ * g_object_unref (canvas_model); * */ #include #include #include #include "goocanvasmodelsimple.h" #include "goocanvasgroup.h" #include "goocanvasitem.h" #include "goocanvasutils.h" static void canvas_model_interface_init (GooCanvasModelIface *iface); static void goo_canvas_model_simple_finalize (GObject *object); static GooCanvasItem* goo_canvas_model_simple_get_root_item (GooCanvasModel *model); G_DEFINE_TYPE_WITH_CODE (GooCanvasModelSimple, goo_canvas_model_simple, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (GOO_TYPE_CANVAS_MODEL, canvas_model_interface_init)) static void goo_canvas_model_simple_class_init (GooCanvasModelSimpleClass *klass) { GObjectClass *gobject_class = (GObjectClass*) klass; gobject_class->finalize = goo_canvas_model_simple_finalize; } static void canvas_model_interface_init (GooCanvasModelIface *iface) { iface->get_root_item = goo_canvas_model_simple_get_root_item; } static void goo_canvas_model_simple_init (GooCanvasModelSimple *model) { model->root_group = goo_canvas_group_new (NULL); goo_canvas_group_set_model (GOO_CANVAS_GROUP (model->root_group), GOO_CANVAS_MODEL (model)); } /** * goo_canvas_model_simple_new: * * Creates a new simple canvas model. * * Returns: a new #GooCanvasModelSimple. **/ GooCanvasModelSimple* goo_canvas_model_simple_new (void) { return GOO_CANVAS_MODEL_SIMPLE (g_object_new (GOO_TYPE_CANVAS_MODEL_SIMPLE, NULL)); } static void goo_canvas_model_simple_finalize (GObject *object) { GooCanvasModelSimple *model = (GooCanvasModelSimple*) object; g_object_unref (model->root_group); G_OBJECT_CLASS (goo_canvas_model_simple_parent_class)->finalize (object); } static GooCanvasItem* goo_canvas_model_simple_get_root_item (GooCanvasModel *model) { return GOO_CANVAS_MODEL_SIMPLE (model)->root_group; }