Inkscape
Vector Graphics Editor
Loading...
Searching...
No Matches
svg-renderer.h
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-2.0-or-later
2
3#ifndef SEEN_SVG_RENDERER_H
4#define SEEN_SVG_RENDERER_H
5
6#include <cstdint>
7#include <memory>
8#include <optional>
9#include <cairomm/refptr.h>
10#include <cairomm/surface.h>
11#include <glibmm/refptr.h>
12
13#include "colors/color.h"
14
15class SPDocument;
16class SPRoot;
17
18namespace Cairo {
19class Surface;
20} // namespace Cairo
21
22namespace Glib {
23class ustring;
24} // namespace Glib
25
26namespace Gdk {
27class Pixbuf;
28} // namespace Gdk
29
30namespace Inkscape {
31
32class Pixbuf;
33
35{
36public:
37 // load SVG document from file (abs path)
38 explicit svg_renderer(char const *path);
39
40 // pass in document to render
41 explicit svg_renderer(SPDocument &document);
42
44
45 // set inline style on selected elements; return number of elements modified
46 size_t set_style(const Glib::ustring& selector, const char* name, const Glib::ustring& value);
47
48 // render document at given scale
49 Glib::RefPtr<Gdk::Pixbuf> render(double scale);
50 Cairo::RefPtr<Cairo::ImageSurface> render_surface(double scale);
51
52 // if set, draw checkerboard pattern before image
53 void set_checkerboard_color(uint32_t rgba) { _checkerboard = rgba; }
54
55 // set requested scale, by default it is 1.0
56 void set_scale(double scale);
57
58 // get document size
59 double get_width_px() const;
60 double get_height_px() const;
61
62private:
63 Pixbuf *do_render(double device_scale);
64
65 std::unique_ptr<SPDocument> const _optional_storage;
68
69 std::optional<uint32_t> _checkerboard;
70 double _scale = 1.0;
71};
72
73} // namespace Inkscape
74
75#endif // SEEN_SVG_RENDERER_H
76
77/*
78 Local Variables:
79 mode:c++
80 c-file-style:"stroustrup"
81 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
82 indent-tabs-mode:nil
83 fill-column:99
84 End:
85*/
86// vim:filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99:
Class to hold image data for raster images.
Definition cairo-utils.h:31
double get_width_px() const
Pixbuf * do_render(double device_scale)
void set_scale(double scale)
double get_height_px() const
std::optional< uint32_t > _checkerboard
size_t set_style(const Glib::ustring &selector, const char *name, const Glib::ustring &value)
Glib::RefPtr< Gdk::Pixbuf > render(double scale)
Cairo::RefPtr< Cairo::ImageSurface > render_surface(double scale)
std::unique_ptr< SPDocument > const _optional_storage
void set_checkerboard_color(uint32_t rgba)
Typed SVG document implementation.
Definition document.h:101
<svg> element
Definition sp-root.h:31
Control handle rendering/caching.
Helper class to stream background task notifications as a series of messages.
Glib::ustring name
Definition toolbars.cpp:55