summaryrefslogtreecommitdiffstats
path: root/src/extension
diff options
context:
space:
mode:
authorKees Cook <kees@outflux.net>2007-12-10 05:29:23 +0000
committerkeescook <keescook@users.sourceforge.net>2007-12-10 05:29:23 +0000
commit3bbfb29347465809918421d6dafcd5c0816935e1 (patch)
treeeb280d39803051efd86b1f496bfe130afa42787f /src/extension
parentalways build cairo backend; add interface for setting cairo surface to renderer (diff)
downloadinkscape-3bbfb29347465809918421d6dafcd5c0816935e1.tar.gz
inkscape-3bbfb29347465809918421d6dafcd5c0816935e1.zip
Implement cross-architecture print dialog using cairo and PNG backends.
(bzr r4199)
Diffstat (limited to 'src/extension')
-rw-r--r--src/extension/internal/cairo-render-context.cpp9
-rw-r--r--src/extension/internal/cairo-render-context.h4
2 files changed, 9 insertions, 4 deletions
diff --git a/src/extension/internal/cairo-render-context.cpp b/src/extension/internal/cairo-render-context.cpp
index 8f106f55f..8511973e4 100644
--- a/src/extension/internal/cairo-render-context.cpp
+++ b/src/extension/internal/cairo-render-context.cpp
@@ -647,6 +647,10 @@ CairoRenderContext::addClippingRect(double x, double y, double width, double hei
bool
CairoRenderContext::setupSurface(double width, double height)
{
+ // Is the surface already set up?
+ if (_is_valid)
+ return true;
+
if (_vector_based_target && _stream == NULL)
return false;
@@ -674,11 +678,12 @@ CairoRenderContext::setupSurface(double width, double height)
}
bool
-CairoRenderContext::setSurface(cairo_surface_t *surface)
+CairoRenderContext::setSurfaceTarget(cairo_surface_t *surface, bool is_vector)
{
if (_is_valid || !surface)
return false;
+ _vector_based_target = is_vector;
bool ret = _finishSurfaceSetup (surface);
if (ret)
cairo_surface_reference (surface);
@@ -724,7 +729,7 @@ CairoRenderContext::finish(void)
_is_valid = FALSE;
- if (_vector_based_target) {
+ if (_vector_based_target && _stream) {
/* Flush stream to be sure. */
(void) fflush(_stream);
diff --git a/src/extension/internal/cairo-render-context.h b/src/extension/internal/cairo-render-context.h
index ff7ebec7f..e3cbbad8a 100644
--- a/src/extension/internal/cairo-render-context.h
+++ b/src/extension/internal/cairo-render-context.h
@@ -83,13 +83,13 @@ public:
bool setImageTarget(cairo_format_t format);
bool setPdfTarget(gchar const *utf8_fn);
bool setPsTarget(gchar const *utf8_fn);
+ /** Set the cairo_surface_t from an external source */
+ bool setSurfaceTarget(cairo_surface_t *surface, bool is_vector);
/** Creates the cairo_surface_t for the context with the
given width, height and with the currently set target
surface type. */
bool setupSurface(double width, double height);
- /** Set the cairo_surface_t from an external source */
- bool setSurface(cairo_surface_t *surface);
cairo_surface_t *getSurface(void);