From 62fbbefccbe10ec11e727735e6bfe890003b0af2 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 21 Aug 2012 02:54:06 +0200 Subject: 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) --- src/sp-paint-server.cpp | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) (limited to 'src/sp-paint-server.cpp') 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(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 */, -- cgit v1.2.3