diff --git a/src/extension/internal/cairo-render-context.h b/src/extension/internal/cairo-render-context.h
index e3cbbad8aa211d1ee007987f85e70ede50c3f5a2..948efc438a87dc7516d028867e3892132adaf8d1 100644 (file)
* Miklos Erdelyi <erdelyim@gmail.com>
*
* Copyright (C) 2006 Miklos Erdelyi
- *
+ *
* Licensed under GNU GPL
*/
unsigned int has_overflow : 1;
unsigned int parent_has_userspace : 1; // whether the parent's ctm should be applied
float opacity;
+ bool has_filtereffect;
SPClipPath *clip_path;
SPMask* mask;
- NRMatrix transform; // the CTM
+ NR::Matrix transform; // the CTM
};
class CairoRenderContext {
RENDER_MODE_NORMAL,
RENDER_MODE_CLIP
};
-
+
typedef enum CairoClipMode {
CLIP_MODE_PATH,
CLIP_MODE_MASK
};
-
+
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);
+ void setPSLevel(unsigned int level);
+ unsigned int getPSLevel(void);
+ void setPDFLevel(unsigned int level);
+ void setTextToPath(bool texttopath);
+ bool getTextToPath(void);
+ void setFilterToBitmap(bool filtertobitmap);
+ bool getFilterToBitmap(void);
+ void setBitmapResolution(int resolution);
+ int getBitmapResolution(void);
+
/** Creates the cairo_surface_t for the context with the
given width, height and with the currently set target
surface type. */
CairoRenderMode getRenderMode(void) const;
void setClipMode(CairoClipMode mode);
CairoClipMode getClipMode(void) const;
-
+
void addBpath(NArtBpath const *bp);
void setBpath(NArtBpath const *bp);
-
+
void pushLayer(void);
void popLayer(void);
CairoRenderState *getParentState(void) const;
void setStateForStyle(SPStyle const *style);
- void transform(NRMatrix const *transform);
- void setTransform(NRMatrix const *transform);
- void getTransform(NRMatrix *copy) const;
- void getParentTransform(NRMatrix *copy) const;
+ void transform(NR::Matrix const *transform);
+ void setTransform(NR::Matrix const *transform);
+ void getTransform(NR::Matrix *copy) const;
+ void getParentTransform(NR::Matrix *copy) const;
/* Clipping methods */
void addClipPath(NArtBpath const *bp, SPIEnum const *fill_rule);
/* Rendering methods */
bool renderPath(NRBPath const *bpath, SPStyle const *style, NRRect const *pbox);
bool renderImage(unsigned char *px, unsigned int w, unsigned int h, unsigned int rs,
- NRMatrix const *image_transform, SPStyle const *style);
- bool renderGlyphtext(PangoFont *font, NRMatrix const *font_matrix,
+ NR::Matrix const *image_transform, SPStyle const *style);
+ bool renderGlyphtext(PangoFont *font, NR::Matrix const *font_matrix,
std::vector<CairoGlyphInfo> const &glyphtext, SPStyle const *style);
/* More general rendering methods will have to be added (like fill, stroke) */
protected:
CairoRenderContext(CairoRenderer *renderer);
virtual ~CairoRenderContext(void);
-
+
float _width;
float _height;
unsigned short _dpi;
-
+ unsigned int _pdf_level;
+ unsigned int _ps_level;
+ bool _is_texttopath;
+ bool _is_filtertobitmap;
+ int _bitmapresolution;
+
FILE *_stream;
-
+
unsigned int _is_valid : 1;
unsigned int _vector_based_target : 1;
cairo_surface_type_t _target;
cairo_format_t _target_format;
PangoLayout *_layout;
-
+
unsigned int _clip_rule : 8;
unsigned int _clip_winding_failed : 1;
-
+
GSList *_state_stack;
CairoRenderState *_state; // the current state
-
+
CairoRenderer *_renderer;
CairoRenderMode _render_mode;
cairo_pattern_t *_createPatternForPaintServer(SPPaintServer const *const paintserver,
NRRect const *pbox, float alpha);
cairo_pattern_t *_createPatternPainter(SPPaintServer const *const paintserver, NRRect const *pbox);
-
+
unsigned int _showGlyphs(cairo_t *cr, PangoFont *font, std::vector<CairoGlyphInfo> const &glyphtext, bool is_stroke);
bool _finishSurfaceSetup(cairo_surface_t *surface);
void _setFillStyle(SPStyle const *style, NRRect const *pbox);
void _setStrokeStyle(SPStyle const *style, NRRect const *pbox);
-
- void _initCairoMatrix(cairo_matrix_t *matrix, NRMatrix const *transform);
+
+ void _initCairoMatrix(cairo_matrix_t *matrix, NR::Matrix const *transform);
void _concatTransform(cairo_t *cr, double xx, double yx, double xy, double yy, double x0, double y0);
- void _concatTransform(cairo_t *cr, NRMatrix const *transform);
+ void _concatTransform(cairo_t *cr, NR::Matrix const *transform);
CairoRenderState *_createState(void);
};