diff options
| author | Krzysztof Kosi??ski <tweenk.pl@gmail.com> | 2010-06-22 21:36:47 +0000 |
|---|---|---|
| committer | Krzysztof KosiĆski <tweenk.pl@gmail.com> | 2010-06-22 21:36:47 +0000 |
| commit | 917de2bab458d51b4149a1b794cbb1b6b9562171 (patch) | |
| tree | 9abd6fe6497b8b0965bb85caf4b4456ff2099989 /src/sp-paint-server.cpp | |
| parent | * [INTL:sk] Slovak translation update (diff) | |
| download | inkscape-917de2bab458d51b4149a1b794cbb1b6b9562171.tar.gz inkscape-917de2bab458d51b4149a1b794cbb1b6b9562171.zip | |
Initial Cairo rendering commit: solid shapes, gradients, opacity and patterns
(bzr r9508.1.1)
Diffstat (limited to 'src/sp-paint-server.cpp')
| -rw-r--r-- | src/sp-paint-server.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/sp-paint-server.cpp b/src/sp-paint-server.cpp index 258323a93..e49e6a378 100644 --- a/src/sp-paint-server.cpp +++ b/src/sp-paint-server.cpp @@ -26,6 +26,7 @@ static void sp_paint_server_init(SPPaintServer *ps); static void sp_paint_server_release(SPObject *object); static void sp_painter_stale_fill(SPPainter *painter, NRPixBlock *pb); +static cairo_pattern_t *sp_paint_server_create_dummy_pattern(SPPaintServer *ps, cairo_t *ct, NRRect const *bbox, double opacity); static SPObjectClass *parent_class; static GSList *stale_painters = NULL; @@ -55,6 +56,7 @@ static void sp_paint_server_class_init(SPPaintServerClass *psc) { SPObjectClass *sp_object_class = (SPObjectClass *) psc; sp_object_class->release = sp_paint_server_release; + psc->pattern_new = sp_paint_server_create_dummy_pattern; parent_class = (SPObjectClass *) g_type_class_ref(SP_TYPE_OBJECT); } @@ -106,6 +108,36 @@ SPPainter *sp_paint_server_painter_new(SPPaintServer *ps, return painter; } +cairo_pattern_t *sp_paint_server_create_pattern(SPPaintServer *ps, + cairo_t *ct, + NRRect const *bbox, + double opacity) +{ + // NOTE: the ct argument is used for when rendering patterns + // to create a group, instead of explicitly creating a temporary surface + g_return_val_if_fail(ps != NULL, NULL); + g_return_val_if_fail(SP_IS_PAINT_SERVER(ps), NULL); + g_return_val_if_fail(bbox != NULL, 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); + } + + return cp; +} + +static cairo_pattern_t * +sp_paint_server_create_dummy_pattern(SPPaintServer */*ps*/, + cairo_t */* ct */, + NRRect const */*bbox*/, + double /* opacity */) +{ + cairo_pattern_t *cp = cairo_pattern_create_rgb(1.0, 0.0, 1.0); + return cp; +} + static void sp_paint_server_painter_free(SPPaintServer *ps, SPPainter *painter) { g_return_if_fail(ps != NULL); |
