3#include <glibmm/fileutils.h>
4#include <glibmm/i18n.h>
16 if (patterns.empty()) {
17 g_warning(
"No stock patterns!");
23 std::vector<SPPattern*> list;
24 if (!source)
return list;
27 for (
auto pattern : patterns) {
28 auto p = cast<SPPattern>(pattern);
29 if (p && p == p->rootPattern() && p->hasChildren()) {
30 list.push_back(cast<SPPattern>(pattern));
70 if (!link_pattern)
return;
73 g_assert(
false &&
"Setting pattern gap requires link and root patterns objects");
77 auto set_gap = [=](
double size,
double percent,
const char* attr) {
78 if (percent == 0.0 ||
size <= 0.0) {
82 else if (percent > 0.0) {
86 else if (percent < 0.0 && percent > -100.0) {
93 set_gap(
root->width(), gap_percent[
Geom::X],
"width");
94 set_gap(
root->height(), gap_percent[
Geom::Y],
"height");
100 if (!link_pattern)
return gap;
102 if (!
root ||
root == link_pattern) {
103 g_assert(
false &&
"Reading pattern gap requires link and root patterns objects");
107 auto get_gap = [=](
double root_size,
double link_size) {
108 if (root_size > 0.0 && link_size > 0.0) {
109 if (link_size > root_size) {
110 return (link_size - root_size) / root_size;
112 else if (link_size < root_size) {
113 return -link_size / root_size;
120 get_gap(
root->width(), link_pattern->
width()) * 100.0,
121 get_gap(
root->height(), link_pattern->
height()) * 100.0
127 if (!pattern)
return std::string();
132 return std::string(gettext(
label));
135 const char* stock_id = _(repr->
attribute(
"inkscape:stockid"));
136 const char* pat_id = stock_id ? stock_id : _(repr->
attribute(
"id"));
137 return std::string(pat_id ? pat_id :
"");
3x3 matrix representing an affine transformation.
Two-dimensional point that doubles as a vector.
static StockPaintDocuments & get(Args &&... args)
Interface for refcounted XML nodes.
virtual char const * attribute(char const *key) const =0
Get the string representation of a node's attribute.
Typed SVG document implementation.
std::vector< SPObject * > const getResourceList(char const *key)
void setAttributeDouble(Inkscape::Util::const_char_ptr key, double value)
void setAttribute(Inkscape::Util::const_char_ptr key, Inkscape::Util::const_char_ptr value)
void removeAttribute(char const *key)
void changeCSS(SPCSSAttr *css, char const *attr)
Inkscape::XML::Node * getRepr()
Returns the XML representation of tree.
char const * getAttribute(char const *name) const
void transform_multiply(Geom::Affine postmul, bool set)
SPPattern const * rootPattern() const
std::vector< SPDocument * > get_paint_documents(std::function< bool(SPDocument *)> const &filter)
std::shared_ptr< Css const > css
std::vector< SPDocument * > sp_get_stock_patterns()
std::string sp_get_pattern_label(SPPattern *pattern)
void sp_pattern_set_uniform_scale(SPPattern *pattern, bool uniform)
void sp_pattern_set_gap(SPPattern *link_pattern, Geom::Scale gap_percent)
Geom::Scale sp_pattern_get_gap(SPPattern *link_pattern)
void sp_pattern_set_offset(SPPattern *pattern, const Geom::Point &offset)
void sp_pattern_set_color(SPPattern *pattern, Inkscape::Colors::Color const &c)
void sp_pattern_set_transform(SPPattern *pattern, const Geom::Affine &transform)
std::vector< SPPattern * > sp_get_pattern_list(SPDocument *source)
SPCSSAttr * sp_repr_css_attr_new()
Creates an empty SPCSSAttr (a class for manipulating CSS style properties).
void sp_repr_css_attr_unref(SPCSSAttr *css)
Unreferences an SPCSSAttr (will be garbage collected if no references remain).
void sp_repr_css_set_property_string(SPCSSAttr *css, char const *name, std::string const &value)
Set a style property to a standard string.
C facade to Inkscape::XML::Node.
SVG <pattern> implementation.
TODO: insert short description here.