diff options
| author | miklosh <miklosh@users.sourceforge.net> | 2006-10-01 13:53:34 +0000 |
|---|---|---|
| committer | miklosh <miklosh@users.sourceforge.net> | 2006-10-01 13:53:34 +0000 |
| commit | 39b8549fd346db752c77b0039f994c03da1c4ff6 (patch) | |
| tree | 832a8d077e5174e9942927039c1ef69bc780c1c0 /src | |
| parent | Initial commit of Cairo renderer for PDF export (diff) | |
| download | inkscape-39b8549fd346db752c77b0039f994c03da1c4ff6.tar.gz inkscape-39b8549fd346db752c77b0039f994c03da1c4ff6.zip | |
Initial commit of Cairo renderer for PDF export
(bzr r1732)
Diffstat (limited to 'src')
| -rw-r--r-- | src/extension/internal/cairo-renderer.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/src/extension/internal/cairo-renderer.h b/src/extension/internal/cairo-renderer.h new file mode 100644 index 000000000..7ce30b9ec --- /dev/null +++ b/src/extension/internal/cairo-renderer.h @@ -0,0 +1,85 @@ +#ifndef EXTENSION_INTERNAL_CAIRO_RENDERER_H_SEEN +#define EXTENSION_INTERNAL_CAIRO_RENDERER_H_SEEN + +/** \file + * Declaration of CairoRenderer, a class used for rendering via a CairoRenderContext. + */ +/* + * Authors: + * Miklos Erdelyi <erdelyim@gmail.com> + * + * Copyright (C) 2006 Miklos Erdelyi + * + * Licensed under GNU GPL + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef HAVE_CAIRO_PDF + +#include "extension/extension.h" +#include <set> +#include <string> + +#include "libnr/nr-path.h" +//#include "libnrtype/font-instance.h" +#include "style.h" + +#include <cairo.h> + +class SPClipPath; +class SPMask; + +namespace Inkscape { +namespace Extension { +namespace Internal { + +class CairoRenderer; +class CairoRenderContext; + +class CairoRenderer { +public: + CairoRenderer(void); + ~CairoRenderer(void); + + CairoRenderContext *createContext(void); + void destroyContext(CairoRenderContext *ctx); + + void setStateForItem(CairoRenderContext *ctx, SPItem const *item); + + void applyClipPath(CairoRenderContext *ctx, SPClipPath const *cp); + void applyMask(CairoRenderContext *ctx, SPMask const *mask); + + /** Initializes the CairoRenderContext according to the specified + SPDocument. A set*Target function can only be called on the context + before setupDocument. */ + bool setupDocument(CairoRenderContext *ctx, SPDocument *doc); + + /** Traverses the object tree and invokes the render methods. */ + void renderItem(CairoRenderContext *ctx, SPItem *item); +}; + +// FIXME: this should be a static method of CairoRenderer +void calculatePreserveAspectRatio(unsigned int aspect_align, unsigned int aspect_clip, double vp_width, + double vp_height, double *x, double *y, double *width, double *height); + +} /* namespace Internal */ +} /* namespace Extension */ +} /* namespace Inkscape */ + +#endif /* HAVE_CAIRO_PDF */ + +#endif /* !EXTENSION_INTERNAL_CAIRO_RENDERER_H_SEEN */ + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : |
