/*
8 * Copyright (C) 2013 Authors
9 * Released under GNU GPL v2+, read the file
'COPYING' for more information.
15#include <glibmm/miscutils.h>
78 size_t nsize = p->
size + length;
82 else{ p->
buffer = (
char *) malloc(nsize); }
84 if(!p->
buffer){ png_error(png_ptr,
"Write Error"); }
100 png_structp png_ptr =
nullptr;
101 png_infop info_ptr =
nullptr;
103 png_byte ** row_pointers =
nullptr;
110 png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING,
nullptr,
nullptr,
nullptr);
111 if (png_ptr ==
nullptr){
116 info_ptr = png_create_info_struct (png_ptr);
117 if (info_ptr ==
nullptr){
118 png_destroy_write_struct (&png_ptr, &info_ptr);
125 if (setjmp (png_jmpbuf (png_ptr))) {
126 png_destroy_write_struct (&png_ptr, &info_ptr);
141 PNG_COMPRESSION_TYPE_DEFAULT,
142 PNG_FILTER_TYPE_DEFAULT
147 row_pointers = (png_byte **) png_malloc (png_ptr, bitmap->
height * sizeof (png_byte *));
148 for (y = 0; y < bitmap->
height; ++y) {
150 (png_byte *) png_malloc (png_ptr,
sizeof (uint8_t) * bitmap->
width * pixel_size);
151 row_pointers[bitmap->
height - y - 1] = row;
152 for (x = 0; x < bitmap->
width; ++x) {
155 *row++ = pixel->
green;
156 *row++ = pixel->
blue;
162 png_set_rows (png_ptr, info_ptr, row_pointers);
166 png_write_png (png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY,
nullptr);
168 for (y = 0; y < bitmap->
height; y++) {
169 png_free (png_ptr, row_pointers[y]);
171 png_free (png_ptr, row_pointers);
172 png_destroy_write_struct(&png_ptr, &info_ptr);
189 os << doc_unit->
abbr;
200 if(SP_ACTIVE_DOCUMENT){
201 dh = SP_ACTIVE_DOCUMENT->getHeight().value(
"px");
209 bool transform_stroke = prefs->
getBool(
"/options/transform/stroke",
true);
210 bool transform_rectcorners = prefs->
getBool(
"/options/transform/rectcorners",
true);
211 bool transform_pattern = prefs->
getBool(
"/options/transform/pattern",
true);
212 bool transform_gradient = prefs->
getBool(
"/options/transform/gradient",
true);
213 prefs->
setBool(
"/options/transform/stroke",
true);
214 prefs->
setBool(
"/options/transform/rectcorners",
true);
215 prefs->
setBool(
"/options/transform/pattern",
true);
216 prefs->
setBool(
"/options/transform/gradient",
true);
222 prefs->
setBool(
"/options/transform/stroke", transform_stroke);
223 prefs->
setBool(
"/options/transform/rectcorners", transform_rectcorners);
224 prefs->
setBool(
"/options/transform/pattern", transform_pattern);
225 prefs->
setBool(
"/options/transform/gradient", transform_gradient);
262 out = (U_RGBAGetR(color) << 16) +
263 (U_RGBAGetG(color) << 8 ) +
264 (U_RGBAGetB(color) );
273 gchar *gstring = g_strdup(
"iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAA3NCSVQICAjb4U/gAAAALElEQVQImQXBQQ2AMAAAsUJQMSWI2H8qME1yMshojwrvGB8XcHKvR1XtOTc/8HENumHCsOMAAAAASUVORK5CYII=");
TODO: insert short description here.
static CRect from_xywh(Coord x, Coord y, Coord w, Coord h)
Create rectangle from origin and dimensions.
Two-dimensional point that doubles as a vector.
RAII-style mechanism for creating a temporary undo-insensitive context.
Preference storage class.
bool getBool(Glib::ustring const &pref_path, bool def=false)
Retrieve a Boolean value.
static Preferences * get()
Access the singleton Preferences object.
void setBool(Glib::ustring const &pref_path, bool value)
Set a Boolean value.
static void blockSetItem(bool b)
double value(Unit const *u) const
Return the quantity's value in the specified unit.
static double convert(double from_dist, Unit const *from, Unit const *to)
Convert distances.
Interface for refcounted XML nodes.
void setAttribute(Util::const_char_ptr key, Util::const_char_ptr value)
Change an attribute of this node.
Typed SVG document implementation.
SPRoot * getRoot()
Returns our SPRoot.
Inkscape::Util::Quantity getWidth() const
int ensureUpToDate(unsigned int object_modified_tag=0)
Repeatedly works on getting the document updated, since sometimes it takes more than one pass to get ...
SPNamedView * getNamedView()
Get the namedview for this document, creates it if it's not found.
void setViewBox()
Set default viewbox calculated from document properties.
Inkscape::Util::Quantity getHeight() const
void scaleChildItemsRec(Geom::Scale const &sc, Geom::Point const &p, bool noRecurse)
Inkscape::XML::Node * getRepr()
Returns the XML representation of tree.
TODO: insert short description here.
Helper class to stream background task notifications as a series of messages.
TODO: insert short description here.
Singleton class to access the preferences file in a convenient way.
Inkscape::ShapeEditor This is a container class which contains a knotholder for shapes.
SPRoot: SVG <svg> implementation.
TODO: insert short description here.