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 From c8e0129ab4988f2fc5cb06c56ff47b38dfde143f Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 30 Mar 2013 00:46:44 +0100 Subject: Replaced calls to "pattern_new". (bzr r11608.1.54) --- src/sp-paint-server.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/sp-paint-server.cpp') diff --git a/src/sp-paint-server.cpp b/src/sp-paint-server.cpp index 6df8719df..d9e224167 100644 --- a/src/sp-paint-server.cpp +++ b/src/sp-paint-server.cpp @@ -59,7 +59,7 @@ GType SPPaintServer::get_type(void) static void sp_paint_server_class_init(SPPaintServerClass *psc) { - psc->pattern_new = sp_paint_server_create_dummy_pattern; + //psc->pattern_new = sp_paint_server_create_dummy_pattern; parent_class = static_cast(g_type_class_ref(SP_TYPE_OBJECT)); } @@ -94,7 +94,11 @@ cairo_pattern_t *sp_paint_server_invoke_create_pattern(SPPaintServer *ps, // CPPIFY: make pure virtual cairo_pattern_t* CPaintServer::onCreatePattern(cairo_t *ct, Geom::OptRect const &bbox, double opacity) { - throw; + //throw; + + // dummy_pattern + cairo_pattern_t *cp = cairo_pattern_create_rgb(1.0, 0.0, 1.0); + return cp; } cairo_pattern_t *sp_paint_server_create_pattern(SPPaintServer *ps, -- cgit v1.2.3 From 7df6616da5ea2debb86838366ddf746841549cdb Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 30 Mar 2013 00:56:13 +0100 Subject: Renamed virtual function names. (bzr r11608.1.57) --- src/sp-paint-server.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/sp-paint-server.cpp') diff --git a/src/sp-paint-server.cpp b/src/sp-paint-server.cpp index 7b38c554d..75078f4ef 100644 --- a/src/sp-paint-server.cpp +++ b/src/sp-paint-server.cpp @@ -62,13 +62,13 @@ cairo_pattern_t *sp_paint_server_invoke_create_pattern(SPPaintServer *ps, cairo_pattern_t *cp = NULL; - cp = ps->cpaintserver->onCreatePattern(ct, bbox, opacity); + cp = ps->cpaintserver->pattern_new(ct, bbox, opacity); return cp; } // CPPIFY: make pure virtual -cairo_pattern_t* CPaintServer::onCreatePattern(cairo_t *ct, Geom::OptRect const &bbox, double opacity) { +cairo_pattern_t* CPaintServer::pattern_new(cairo_t *ct, Geom::OptRect const &bbox, double opacity) { //throw; // dummy_pattern -- cgit v1.2.3 From a5d6e692d661f0bf7648e64e8fcb04588bb8f3ab Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Mon, 1 Apr 2013 00:07:00 +0200 Subject: Prepared exchange of casting macros. (bzr r11608.1.63) --- src/sp-paint-server.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/sp-paint-server.cpp') diff --git a/src/sp-paint-server.cpp b/src/sp-paint-server.cpp index 75078f4ef..f75176f0e 100644 --- a/src/sp-paint-server.cpp +++ b/src/sp-paint-server.cpp @@ -47,6 +47,7 @@ static void sp_paint_server_init(SPPaintServer *ps) { ps->cpaintserver = new CPaintServer(ps); + ps->typeHierarchy.insert(typeid(SPPaintServer)); delete ps->cobject; ps->cobject = ps->cpaintserver; -- cgit v1.2.3 From 69f3b6f1abb2bb422935d43262e1e99aab359954 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 2 Apr 2013 01:41:30 +0200 Subject: Added constructors to SP classes. (bzr r11608.1.67) --- src/sp-paint-server.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/sp-paint-server.cpp') diff --git a/src/sp-paint-server.cpp b/src/sp-paint-server.cpp index f75176f0e..cabd6809c 100644 --- a/src/sp-paint-server.cpp +++ b/src/sp-paint-server.cpp @@ -30,7 +30,7 @@ bool SPPaintServerReference::_acceptObject(SPObject *obj) const return SP_IS_PAINT_SERVER(obj); } -G_DEFINE_TYPE(SPPaintServer, sp_paint_server, SP_TYPE_OBJECT); +G_DEFINE_TYPE(SPPaintServer, sp_paint_server, G_TYPE_OBJECT); static void sp_paint_server_class_init(SPPaintServerClass *psc) { @@ -43,14 +43,22 @@ CPaintServer::CPaintServer(SPPaintServer* paintserver) : CObject(paintserver) { CPaintServer::~CPaintServer() { } -static void -sp_paint_server_init(SPPaintServer *ps) -{ +SPPaintServer::SPPaintServer() : SPObject() { + SPPaintServer* ps = this; + ps->cpaintserver = new CPaintServer(ps); ps->typeHierarchy.insert(typeid(SPPaintServer)); delete ps->cobject; ps->cobject = ps->cpaintserver; + + ps->swatch = 0; +} + +static void +sp_paint_server_init(SPPaintServer *ps) +{ + new (ps) SPPaintServer(); } cairo_pattern_t *sp_paint_server_invoke_create_pattern(SPPaintServer *ps, -- cgit v1.2.3 From b0cc47554b385fb68643d07efe6e42366c7121ad Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 6 Apr 2013 01:36:16 +0200 Subject: Merged PaintServer and subclasses; moved Gradient classes to own files. (bzr r11608.1.82) --- src/sp-paint-server.cpp | 34 +++++++--------------------------- 1 file changed, 7 insertions(+), 27 deletions(-) (limited to 'src/sp-paint-server.cpp') diff --git a/src/sp-paint-server.cpp b/src/sp-paint-server.cpp index cabd6809c..b438e44b1 100644 --- a/src/sp-paint-server.cpp +++ b/src/sp-paint-server.cpp @@ -30,35 +30,15 @@ bool SPPaintServerReference::_acceptObject(SPObject *obj) const return SP_IS_PAINT_SERVER(obj); } -G_DEFINE_TYPE(SPPaintServer, sp_paint_server, G_TYPE_OBJECT); -static void sp_paint_server_class_init(SPPaintServerClass *psc) -{ -} - -CPaintServer::CPaintServer(SPPaintServer* paintserver) : CObject(paintserver) { - this->sppaintserver = paintserver; -} - -CPaintServer::~CPaintServer() { -} - -SPPaintServer::SPPaintServer() : SPObject() { - SPPaintServer* ps = this; - - ps->cpaintserver = new CPaintServer(ps); - ps->typeHierarchy.insert(typeid(SPPaintServer)); +SPPaintServer::SPPaintServer() : SPObject(), CObject(this) { + delete this->cobject; + this->cobject = this; - delete ps->cobject; - ps->cobject = ps->cpaintserver; - - ps->swatch = 0; + this->swatch = 0; } -static void -sp_paint_server_init(SPPaintServer *ps) -{ - new (ps) SPPaintServer(); +SPPaintServer::~SPPaintServer() { } cairo_pattern_t *sp_paint_server_invoke_create_pattern(SPPaintServer *ps, @@ -71,13 +51,13 @@ cairo_pattern_t *sp_paint_server_invoke_create_pattern(SPPaintServer *ps, cairo_pattern_t *cp = NULL; - cp = ps->cpaintserver->pattern_new(ct, bbox, opacity); + cp = ps->pattern_new(ct, bbox, opacity); return cp; } // CPPIFY: make pure virtual -cairo_pattern_t* CPaintServer::pattern_new(cairo_t *ct, Geom::OptRect const &bbox, double opacity) { +cairo_pattern_t* SPPaintServer::pattern_new(cairo_t *ct, Geom::OptRect const &bbox, double opacity) { //throw; // dummy_pattern -- cgit v1.2.3 From 27e2102f96a5554bcd5310ec11435d155773b279 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sun, 7 Apr 2013 18:28:22 +0200 Subject: Merge Object and subclasses. Merging of SP- and C-classes complete. (bzr r11608.1.86) --- src/sp-paint-server.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src/sp-paint-server.cpp') diff --git a/src/sp-paint-server.cpp b/src/sp-paint-server.cpp index b438e44b1..54b39a981 100644 --- a/src/sp-paint-server.cpp +++ b/src/sp-paint-server.cpp @@ -31,10 +31,7 @@ bool SPPaintServerReference::_acceptObject(SPObject *obj) const } -SPPaintServer::SPPaintServer() : SPObject(), CObject(this) { - delete this->cobject; - this->cobject = this; - +SPPaintServer::SPPaintServer() : SPObject() { this->swatch = 0; } -- cgit v1.2.3 From bf4a1d2d49850170b936c30cfe2b30e798716406 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 3 Aug 2013 03:03:43 +0200 Subject: Cleaned up. (bzr r11608.1.117) --- src/sp-paint-server.cpp | 36 ++++-------------------------------- 1 file changed, 4 insertions(+), 32 deletions(-) (limited to 'src/sp-paint-server.cpp') diff --git a/src/sp-paint-server.cpp b/src/sp-paint-server.cpp index 54b39a981..1f32086f7 100644 --- a/src/sp-paint-server.cpp +++ b/src/sp-paint-server.cpp @@ -38,43 +38,15 @@ SPPaintServer::SPPaintServer() : SPObject() { SPPaintServer::~SPPaintServer() { } -cairo_pattern_t *sp_paint_server_invoke_create_pattern(SPPaintServer *ps, - cairo_t *ct, - Geom::OptRect const &bbox, - double opacity) -{ - g_return_val_if_fail(ps != NULL, NULL); - g_return_val_if_fail(SP_IS_PAINT_SERVER(ps), NULL); - - cairo_pattern_t *cp = NULL; - - cp = ps->pattern_new(ct, bbox, opacity); - - return cp; -} - -// CPPIFY: make pure virtual -cairo_pattern_t* SPPaintServer::pattern_new(cairo_t *ct, Geom::OptRect const &bbox, double opacity) { - //throw; - - // dummy_pattern - cairo_pattern_t *cp = cairo_pattern_create_rgb(1.0, 0.0, 1.0); - return cp; -} - -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); -} - bool SPPaintServer::isSwatch() const { return swatch; } + +// TODO: So a solid brush is a gradient with a swatch and zero stops? +// Should we derive a new class for that? Or at least make this method +// virtual and move it out of the way? bool SPPaintServer::isSolid() const { bool solid = false; -- cgit v1.2.3