summaryrefslogtreecommitdiffstats
path: root/src/sp-paint-server.cpp
diff options
context:
space:
mode:
authorMarkus Engel <markus.engel@tum.de>2012-08-21 00:54:06 +0000
committerMarkus Engel <markus.engel@tum.de>2012-08-21 00:54:06 +0000
commit62fbbefccbe10ec11e727735e6bfe890003b0af2 (patch)
tree1741dcb7c61f75230ba00489ee2d9f3c0d11692f /src/sp-paint-server.cpp
parentAdded "virtual pad" to SPScript. (diff)
downloadinkscape-62fbbefccbe10ec11e727735e6bfe890003b0af2.tar.gz
inkscape-62fbbefccbe10ec11e727735e6bfe890003b0af2.zip
Added "virtual pad" to
- SPPaintServer - SPPattern - SPGradient - SPStop - SPLinearGradient - SPMeshGradient - SPMeshPatch - SPMeshRow - SPRadialGradient As all subclasses of SPPaintServer now have "virtual pads" with correct inheritance, the virtual function call to "onCreatePattern" was converted to C++ style. (bzr r11608.1.35)
Diffstat (limited to 'src/sp-paint-server.cpp')
-rw-r--r--src/sp-paint-server.cpp32
1 files changed, 26 insertions, 6 deletions
diff --git a/src/sp-paint-server.cpp b/src/sp-paint-server.cpp
index ae4a60ba6..6df8719df 100644
--- a/src/sp-paint-server.cpp
+++ b/src/sp-paint-server.cpp
@@ -64,11 +64,20 @@ static void sp_paint_server_class_init(SPPaintServerClass *psc)
parent_class = static_cast<SPObjectClass *>(g_type_class_ref(SP_TYPE_OBJECT));
}
-void SPPaintServer::init(SPPaintServer * /*ps*/)
+CPaintServer::CPaintServer(SPPaintServer* paintserver) : CObject(paintserver) {
+ this->sppaintserver = paintserver;
+}
+
+CPaintServer::~CPaintServer() {
+}
+
+void SPPaintServer::init(SPPaintServer * ps)
{
+ ps->cpaintserver = new CPaintServer(ps);
+ ps->cobject = ps->cpaintserver;
}
-cairo_pattern_t *sp_paint_server_create_pattern(SPPaintServer *ps,
+cairo_pattern_t *sp_paint_server_invoke_create_pattern(SPPaintServer *ps,
cairo_t *ct,
Geom::OptRect const &bbox,
double opacity)
@@ -77,14 +86,25 @@ cairo_pattern_t *sp_paint_server_create_pattern(SPPaintServer *ps,
g_return_val_if_fail(SP_IS_PAINT_SERVER(ps), NULL);
cairo_pattern_t *cp = NULL;
- SPPaintServerClass *psc = (SPPaintServerClass *) G_OBJECT_GET_CLASS(ps);
- if ( psc->pattern_new ) {
- cp = (*psc->pattern_new)(ps, ct, bbox, opacity);
- }
+
+ cp = ps->cpaintserver->onCreatePattern(ct, bbox, opacity);
return cp;
}
+// CPPIFY: make pure virtual
+cairo_pattern_t* CPaintServer::onCreatePattern(cairo_t *ct, Geom::OptRect const &bbox, double opacity) {
+ throw;
+}
+
+cairo_pattern_t *sp_paint_server_create_pattern(SPPaintServer *ps,
+ cairo_t *ct,
+ Geom::OptRect const &bbox,
+ double opacity)
+{
+ return sp_paint_server_invoke_create_pattern(ps, ct, bbox, opacity);
+}
+
static cairo_pattern_t *
sp_paint_server_create_dummy_pattern(SPPaintServer */*ps*/,
cairo_t */* ct */,