summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdib Taraben <theadib@gmail.com>2009-04-24 10:37:51 +0000
committertheadib <theadib@users.sourceforge.net>2009-04-24 10:37:51 +0000
commit6ebeb66c1f71f2c9b6bf2772316a78496b0165bc (patch)
tree1c324a3ddf745dbbb134825c0a490390aa39dcfe /src
parent* [INTL: sk] Slovak translation update (trunk) (diff)
downloadinkscape-6ebeb66c1f71f2c9b6bf2772316a78496b0165bc.tar.gz
inkscape-6ebeb66c1f71f2c9b6bf2772316a78496b0165bc.zip
apply printing w32 patch https://bugs.launchpad.net/inkscape/+bug/179988/comments/174
(bzr r7767)
Diffstat (limited to 'src')
-rw-r--r--src/extension/internal/cairo-render-context.cpp8
-rw-r--r--src/extension/internal/cairo-render-context.h4
-rw-r--r--src/ui/dialog/print.cpp5
3 files changed, 11 insertions, 6 deletions
diff --git a/src/extension/internal/cairo-render-context.cpp b/src/extension/internal/cairo-render-context.cpp
index 656cd4a08..e10b637f3 100644
--- a/src/extension/internal/cairo-render-context.cpp
+++ b/src/extension/internal/cairo-render-context.cpp
@@ -780,20 +780,20 @@ CairoRenderContext::setupSurface(double width, double height)
}
bool
-CairoRenderContext::setSurfaceTarget(cairo_surface_t *surface, bool is_vector)
+CairoRenderContext::setSurfaceTarget(cairo_surface_t *surface, bool is_vector, cairo_matrix_t *ctm)
{
if (_is_valid || !surface)
return false;
_vector_based_target = is_vector;
- bool ret = _finishSurfaceSetup (surface);
+ bool ret = _finishSurfaceSetup (surface, ctm);
if (ret)
cairo_surface_reference (surface);
return ret;
}
bool
-CairoRenderContext::_finishSurfaceSetup(cairo_surface_t *surface)
+CairoRenderContext::_finishSurfaceSetup(cairo_surface_t *surface, cairo_matrix_t *ctm)
{
if(surface == NULL) {
return FALSE;
@@ -803,6 +803,8 @@ CairoRenderContext::_finishSurfaceSetup(cairo_surface_t *surface)
}
_cr = cairo_create(surface);
+ if (ctm)
+ cairo_set_matrix(_cr, ctm);
_surface = surface;
if (_vector_based_target) {
diff --git a/src/extension/internal/cairo-render-context.h b/src/extension/internal/cairo-render-context.h
index 23845598e..930668e03 100644
--- a/src/extension/internal/cairo-render-context.h
+++ b/src/extension/internal/cairo-render-context.h
@@ -85,7 +85,7 @@ public:
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);
+ bool setSurfaceTarget(cairo_surface_t *surface, bool is_vector, cairo_matrix_t *ctm=NULL);
void setPSLevel(unsigned int level);
void setEPS(bool eps);
@@ -187,7 +187,7 @@ protected:
unsigned int _showGlyphs(cairo_t *cr, PangoFont *font, std::vector<CairoGlyphInfo> const &glyphtext, bool is_stroke);
- bool _finishSurfaceSetup(cairo_surface_t *surface);
+ bool _finishSurfaceSetup(cairo_surface_t *surface, cairo_matrix_t *ctm = NULL);
void _setFillStyle(SPStyle const *style, NRRect const *pbox);
void _setStrokeStyle(SPStyle const *style, NRRect const *pbox);
diff --git a/src/ui/dialog/print.cpp b/src/ui/dialog/print.cpp
index bb2b5d68d..890e0061c 100644
--- a/src/ui/dialog/print.cpp
+++ b/src/ui/dialog/print.cpp
@@ -167,7 +167,10 @@ draw_page (GtkPrintOperation */*operation*/,
}
#endif
- bool ret = ctx->setSurfaceTarget (surface, true); if (ret) {
+ cairo_matrix_t ctm;
+ cairo_get_matrix(cr, &ctm);
+ bool ret = ctx->setSurfaceTarget (surface, true, &ctm);
+ if (ret) {
ret = renderer.setupDocument (ctx, junk->_doc, TRUE, NULL);
if (ret) {
renderer.renderItem(ctx, junk->_base);