summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid R. Bild <drbild@umich.edu>2013-08-26 20:03:43 +0000
committerDavid R. Bild <drbild@umich.edu>2013-08-26 20:03:43 +0000
commit76efdea96c0548aa8d3eddafd1a5a960245e4e21 (patch)
tree3cfb286c131735bd097b51f4c026b388889c5970 /src
parentUpdating outdated test. Fixes bug #1202271. (diff)
downloadinkscape-76efdea96c0548aa8d3eddafd1a5a960245e4e21.tar.gz
inkscape-76efdea96c0548aa8d3eddafd1a5a960245e4e21.zip
Move omit text feature from cairo renderer to context
(bzr r12487.1.1)
Diffstat (limited to 'src')
-rw-r--r--src/extension/internal/cairo-ps-out.cpp2
-rw-r--r--src/extension/internal/cairo-render-context.cpp14
-rw-r--r--src/extension/internal/cairo-render-context.h6
-rw-r--r--src/extension/internal/cairo-renderer-pdf-out.cpp2
-rw-r--r--src/extension/internal/cairo-renderer.cpp6
-rw-r--r--src/extension/internal/cairo-renderer.h4
6 files changed, 22 insertions, 12 deletions
diff --git a/src/extension/internal/cairo-ps-out.cpp b/src/extension/internal/cairo-ps-out.cpp
index bfbdd8149..e06c9f30d 100644
--- a/src/extension/internal/cairo-ps-out.cpp
+++ b/src/extension/internal/cairo-ps-out.cpp
@@ -97,7 +97,7 @@ ps_print_document_to_file(SPDocument *doc, gchar const *filename, unsigned int l
ctx->setPSLevel(level);
ctx->setEPS(eps);
ctx->setTextToPath(texttopath);
- renderer->_omitText = omittext;
+ ctx->setOmitText(omittext);
ctx->setFilterToBitmap(filtertobitmap);
ctx->setBitmapResolution(resolution);
diff --git a/src/extension/internal/cairo-render-context.cpp b/src/extension/internal/cairo-render-context.cpp
index 0ea1fd591..75ec45ad0 100644
--- a/src/extension/internal/cairo-render-context.cpp
+++ b/src/extension/internal/cairo-render-context.cpp
@@ -111,6 +111,7 @@ CairoRenderContext::CairoRenderContext(CairoRenderer *parent) :
_ps_level(1),
_eps(false),
_is_texttopath(FALSE),
+ _is_omittext(FALSE),
_is_filtertobitmap(FALSE),
_bitmapresolution(72),
_stream(NULL),
@@ -426,6 +427,16 @@ void CairoRenderContext::setTextToPath(bool texttopath)
_is_texttopath = texttopath;
}
+void CairoRenderContext::setOmitText(bool omittext)
+{
+ _is_omittext = omittext;
+}
+
+bool CairoRenderContext::getOmitText(void)
+{
+ return _is_omittext;
+}
+
void CairoRenderContext::setFilterToBitmap(bool filtertobitmap)
{
_is_filtertobitmap = filtertobitmap;
@@ -1490,6 +1501,9 @@ bool
CairoRenderContext::renderGlyphtext(PangoFont *font, Geom::Affine const &font_matrix,
std::vector<CairoGlyphInfo> const &glyphtext, SPStyle const *style)
{
+ if (_is_omittext)
+ return true;
+
// create a cairo_font_face from PangoFont
double size = style->font_size.computed; /// \fixme why is this variable never used?
gpointer fonthash = (gpointer)font;
diff --git a/src/extension/internal/cairo-render-context.h b/src/extension/internal/cairo-render-context.h
index 8829940c6..e66d4bf00 100644
--- a/src/extension/internal/cairo-render-context.h
+++ b/src/extension/internal/cairo-render-context.h
@@ -94,6 +94,8 @@ public:
void setPDFLevel(unsigned int level);
void setTextToPath(bool texttopath);
bool getTextToPath(void);
+ void setOmitText(bool omittext);
+ bool getOmitText(void);
void setFilterToBitmap(bool filtertobitmap);
bool getFilterToBitmap(void);
void setBitmapResolution(int resolution);
@@ -109,6 +111,9 @@ public:
/** Saves the contents of the context to a PNG file. */
bool saveAsPng(const char *file_name);
+ /** On targets supporting multiple pages, sends subsequent rendering to a new page*/
+ void newPage(void);
+
/* Render/clip mode setting/query */
void setRenderMode(CairoRenderMode mode);
CairoRenderMode getRenderMode(void) const;
@@ -157,6 +162,7 @@ protected:
unsigned int _ps_level;
bool _eps;
bool _is_texttopath;
+ bool _is_omittext;
bool _is_filtertobitmap;
int _bitmapresolution;
diff --git a/src/extension/internal/cairo-renderer-pdf-out.cpp b/src/extension/internal/cairo-renderer-pdf-out.cpp
index 0a0c3f44a..b9125582a 100644
--- a/src/extension/internal/cairo-renderer-pdf-out.cpp
+++ b/src/extension/internal/cairo-renderer-pdf-out.cpp
@@ -94,7 +94,7 @@ pdf_render_document_to_file(SPDocument *doc, gchar const *filename, unsigned int
CairoRenderContext *ctx = renderer->createContext();
ctx->setPDFLevel(level);
ctx->setTextToPath(texttopath);
- renderer->_omitText = omittext;
+ ctx->setOmitText(omittext);
ctx->setFilterToBitmap(filtertobitmap);
ctx->setBitmapResolution(resolution);
diff --git a/src/extension/internal/cairo-renderer.cpp b/src/extension/internal/cairo-renderer.cpp
index f7ab63c98..76ebbfcb5 100644
--- a/src/extension/internal/cairo-renderer.cpp
+++ b/src/extension/internal/cairo-renderer.cpp
@@ -101,7 +101,6 @@ namespace Extension {
namespace Internal {
CairoRenderer::CairoRenderer(void)
- : _omitText(false)
{}
CairoRenderer::~CairoRenderer(void)
@@ -578,11 +577,6 @@ CairoRenderer::setStateForItem(CairoRenderContext *ctx, SPItem const *item)
// TODO change this to accept a const SPItem:
void CairoRenderer::renderItem(CairoRenderContext *ctx, SPItem *item)
{
- if ( _omitText && (SP_IS_TEXT(item) || SP_IS_FLOWTEXT(item)) ) {
- // skip text if _omitText is true
- return;
- }
-
ctx->pushState();
setStateForItem(ctx, item);
diff --git a/src/extension/internal/cairo-renderer.h b/src/extension/internal/cairo-renderer.h
index c1482d82e..1ab8f1872 100644
--- a/src/extension/internal/cairo-renderer.h
+++ b/src/extension/internal/cairo-renderer.h
@@ -57,10 +57,6 @@ public:
/** Traverses the object tree and invokes the render methods. */
void renderItem(CairoRenderContext *ctx, SPItem *item);
-
- /** If _omitText is true, no text will be output to the PDF document.
- The PDF will be exactly the same as if the text was written to it and then erased. */
- bool _omitText;
};
// FIXME: this should be a static method of CairoRenderer