Code

Pot and Dutch translation update
[inkscape.git] / src / extension / internal / cairo-renderer.h
1 #ifndef EXTENSION_INTERNAL_CAIRO_RENDERER_H_SEEN
2 #define EXTENSION_INTERNAL_CAIRO_RENDERER_H_SEEN
4 /** \file
5  * Declaration of CairoRenderer, a class used for rendering via a CairoRenderContext.
6  */
7 /*
8  * Authors:
9  *         Miklos Erdelyi <erdelyim@gmail.com>
10  *
11  * Copyright (C) 2006 Miklos Erdelyi
12  * 
13  * Licensed under GNU GPL
14  */
16 #ifdef HAVE_CONFIG_H
17 # include "config.h"
18 #endif
20 #include "extension/extension.h"
21 #include <set>
22 #include <string>
24 //#include "libnrtype/font-instance.h"
25 #include "style.h"
27 #include <cairo.h>
29 class SPClipPath;
30 class SPMask;
32 namespace Inkscape {
33 namespace Extension {
34 namespace Internal {
36 class CairoRenderer;
37 class CairoRenderContext;
39 class CairoRenderer {
40 public:
41     CairoRenderer(void);
42     virtual ~CairoRenderer(void);
43     
44     CairoRenderContext *createContext(void);
45     void destroyContext(CairoRenderContext *ctx);
47     void setStateForItem(CairoRenderContext *ctx, SPItem const *item);
49     void applyClipPath(CairoRenderContext *ctx, SPClipPath const *cp);
50     void applyMask(CairoRenderContext *ctx, SPMask const *mask);
52     /** Initializes the CairoRenderContext according to the specified
53     SPDocument. A set*Target function can only be called on the context
54     before setupDocument. */
55     bool setupDocument(CairoRenderContext *ctx, SPDocument *doc, bool pageBoundingBox, SPItem *base);
57     /** Traverses the object tree and invokes the render methods. */
58     void renderItem(CairoRenderContext *ctx, SPItem *item);
60     /** If _omitText is true, no text will be output to the PDF document.
61         The PDF will be exactly the same as if the text was written to it and then erased. */
62     bool _omitText;
63 };
65 // FIXME: this should be a static method of CairoRenderer
66 void calculatePreserveAspectRatio(unsigned int aspect_align, unsigned int aspect_clip, double vp_width,
67                                   double vp_height, double *x, double *y, double *width, double *height);
69 }  /* namespace Internal */
70 }  /* namespace Extension */
71 }  /* namespace Inkscape */
73 #endif /* !EXTENSION_INTERNAL_CAIRO_RENDERER_H_SEEN */
75 /*
76   Local Variables:
77   mode:c++
78   c-file-style:"stroustrup"
79   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
80   indent-tabs-mode:nil
81   fill-column:99
82   End:
83 */
84 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :