summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2018-06-17 20:51:09 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2018-08-05 00:31:06 +0000
commita989bfb85b3827e97881b096c11f4fa6beb58496 (patch)
tree80f3c8301a3d5eddf1f0b9eabdeafdb3256ab9a4 /src
parentRefactor with Tav help (diff)
downloadinkscape-a989bfb85b3827e97881b096c11f4fa6beb58496.tar.gz
inkscape-a989bfb85b3827e97881b096c11f4fa6beb58496.zip
Fixes compiling bugs
Diffstat (limited to 'src')
-rw-r--r--src/extension/internal/emf-inout.cpp8
-rw-r--r--src/extension/internal/wmf-inout.cpp4
-rw-r--r--src/selection-chemistry.cpp2
-rw-r--r--src/style-internal.cpp24
-rw-r--r--src/style-internal.h2
-rw-r--r--src/widgets/dash-selector.cpp12
6 files changed, 30 insertions, 22 deletions
diff --git a/src/extension/internal/emf-inout.cpp b/src/extension/internal/emf-inout.cpp
index 3e3b6ec43..49ad7c5ed 100644
--- a/src/extension/internal/emf-inout.cpp
+++ b/src/extension/internal/emf-inout.cpp
@@ -1098,7 +1098,7 @@ Emf::select_pen(PEMF_CALLBACK_DATA d, int index)
SPILength spilength;
spilength.read("1");
int penstyle = (pEmr->lopn.lopnStyle & U_PS_STYLE_MASK);
- if (!d->dc[d->level].style.stroke_dasharray.values.empty() && (d->level==0 || (d->level>0 && d->dc[d->level].style.stroke_dasharray.values!=d->dc[d->level-1].style.stroke_dasharray.values)))
+ if (!d->dc[d->level].style.stroke_dasharray.values.empty() && (d->level==0 || (d->level>0 && d->dc[d->level].style.stroke_dasharray!=d->dc[d->level-1].style.stroke_dasharray)))
d->dc[d->level].style.stroke_dasharray.values.clear();
if (penstyle==U_PS_DASH || penstyle==U_PS_DASHDOT || penstyle==U_PS_DASHDOTDOT) {
spilength.read("3");
@@ -1184,7 +1184,7 @@ Emf::select_extpen(PEMF_CALLBACK_DATA d, int index)
case U_PS_USERSTYLE:
{
if (pEmr->elp.elpNumEntries) {
- if (!d->dc[d->level].style.stroke_dasharray.values.empty() && (d->level==0 || (d->level>0 && d->dc[d->level].style.stroke_dasharray.values!=d->dc[d->level-1].style.stroke_dasharray.values)))
+ if (!d->dc[d->level].style.stroke_dasharray.values.empty() && (d->level==0 || (d->level>0 && d->dc[d->level].style.stroke_dasharray!=d->dc[d->level-1].style.stroke_dasharray)))
d->dc[d->level].style.stroke_dasharray.values.clear();
SPILength spilength;
for (unsigned int i=0; i<pEmr->elp.elpNumEntries; i++) {
@@ -1207,7 +1207,7 @@ Emf::select_extpen(PEMF_CALLBACK_DATA d, int index)
case U_PS_DASHDOTDOT:
{
int penstyle = (pEmr->elp.elpPenStyle & U_PS_STYLE_MASK);
- if (!d->dc[d->level].style.stroke_dasharray.values.empty() && (d->level==0 || (d->level>0 && d->dc[d->level].style.stroke_dasharray.values!=d->dc[d->level-1].style.stroke_dasharray.values)))
+ if (!d->dc[d->level].style.stroke_dasharray.values.empty() && (d->level==0 || (d->level>0 && d->dc[d->level].style.stroke_dasharray!=d->dc[d->level-1].style.stroke_dasharray)))
d->dc[d->level].style.stroke_dasharray.values.clear();
SPILength spilength;
if (penstyle==U_PS_DASH || penstyle==U_PS_DASHDOT || penstyle==U_PS_DASHDOTDOT) {
@@ -2363,7 +2363,7 @@ std::cout << "BEFORE DRAW"
d->level = d->level + pEmr->iRelative;
}
while (old_level > d->level) {
- if (!d->dc[old_level].style.stroke_dasharray.values.empty() && (old_level==0 || (old_level>0 && d->dc[old_level].style.stroke_dasharray.values!=d->dc[old_level-1].style.stroke_dasharray.values))){
+ if (!d->dc[old_level].style.stroke_dasharray.values.empty() && (old_level==0 || (old_level>0 && d->dc[old_level].style.stroke_dasharray!=d->dc[old_level-1].style.stroke_dasharray))){
d->dc[old_level].style.stroke_dasharray.values.clear();
}
if(d->dc[old_level].font_name){
diff --git a/src/extension/internal/wmf-inout.cpp b/src/extension/internal/wmf-inout.cpp
index b6d0b8ba1..d88998a16 100644
--- a/src/extension/internal/wmf-inout.cpp
+++ b/src/extension/internal/wmf-inout.cpp
@@ -987,7 +987,7 @@ Wmf::select_pen(PWMF_CALLBACK_DATA d, int index)
int penstyle = (up.Style & U_PS_STYLE_MASK);
SPILength spilength;
spilength.read("1");
- if (!d->dc[d->level].style.stroke_dasharray.values.empty() && (d->level==0 || (d->level>0 && d->dc[d->level].style.stroke_dasharray.values!=d->dc[d->level-1].style.stroke_dasharray.values)))
+ if (!d->dc[d->level].style.stroke_dasharray.values.empty() && (d->level==0 || (d->level>0 && d->dc[d->level].style.stroke_dasharray!=d->dc[d->level-1].style.stroke_dasharray)))
d->dc[d->level].style.stroke_dasharray.values.clear();
if (penstyle==U_PS_DASH || penstyle==U_PS_DASHDOT || penstyle==U_PS_DASHDOTDOT) {
spilength.read("3");
@@ -2444,7 +2444,7 @@ std::cout << "BEFORE DRAW"
d->level = d->level + DC;
}
while (old_level > d->level) {
- if (!d->dc[old_level].style.stroke_dasharray.values.empty() && (old_level==0 || (old_level>0 && d->dc[old_level].style.stroke_dasharray.values!=d->dc[old_level-1].style.stroke_dasharray.values))){
+ if (!d->dc[old_level].style.stroke_dasharray.values.empty() && (old_level==0 || (old_level>0 && d->dc[old_level].style.stroke_dasharray!=d->dc[old_level-1].style.stroke_dasharray))){
d->dc[old_level].style.stroke_dasharray.values.clear();
}
if(d->dc[old_level].font_name){
diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp
index 3e1bb56aa..366ccbe33 100644
--- a/src/selection-chemistry.cpp
+++ b/src/selection-chemistry.cpp
@@ -2157,7 +2157,7 @@ std::vector<SPItem*> sp_get_same_style(SPItem *sel, std::vector<SPItem*> &src, S
if (type == SP_STROKE_STYLE_DASHES|| type == SP_STROKE_STYLE_ALL || type==SP_STYLE_ALL) {
match = (sel_style->stroke_dasharray.set == iter_style->stroke_dasharray.set);
if (sel_style->stroke_dasharray.set && iter_style->stroke_dasharray.set) {
- match = (sel_style->stroke_dasharray.values == iter_style->stroke_dasharray.values);
+ match = (sel_style->stroke_dasharray == iter_style->stroke_dasharray);
}
}
match_g = match_g && match;
diff --git a/src/style-internal.cpp b/src/style-internal.cpp
index 400ef2e77..d58eaf51e 100644
--- a/src/style-internal.cpp
+++ b/src/style-internal.cpp
@@ -483,7 +483,7 @@ SPILength::toString( guint const flags, SPStyleSrc const &style_src_req, SPIBase
}
bool
-SPILength::operator==(const SPIBase& rhs) const {
+SPILength::operator==(const SPIBase& rhs) {
if( const SPILength* r = dynamic_cast<const SPILength*>(&rhs) ) {
if( unit != r->unit ) return false;
@@ -2083,24 +2083,26 @@ SPIDashArray::read( gchar const *str ) {
if( strcmp(str, "none") == 0) {
return;
}
- std::vector<Glib::ustring> tokens = Glib::Regex::split_simple("[,\\s]+", str );
+ std::vector<Glib::ustring> tokens = Glib::Regex::split_simple("[(,\\s|\\s)]+", str );
gchar *e = NULL;
bool LineSolid = true;
- SPDocument * document = SP_ACTIVE_DOCUMENT;
- Geom::Rect vbox = document->getViewBox();
+ SPDocument *document = NULL;
+ if ( style) {
+ document = (style->object) ? style->object->document : NULL;
+ }
for (auto token:tokens) {
SPILength spilength;
spilength.read(token.c_str());
if(spilength.value > 0.00000001)
LineSolid = false;
- double dash = 0;
- if(spilength.unit == SPCSSUnit::SP_CSS_UNIT_NONE) {
- dash = spilength.value;
- } else if (spilength.unit == SPCSSUnit::SP_CSS_UNIT_PERCENT) {
- dash = vbox.width() * spilength.value;
- } else {
- dash = spilength.computed / document->getDocumentScale()[0];
+ double dash = spilength.value;
+ if (document) {
+ if (spilength.unit == SPCSSUnit::SP_CSS_UNIT_PERCENT) {
+ dash = document->getViewBox().width() * spilength.value;
+ } else if(spilength.unit != SPCSSUnit::SP_CSS_UNIT_NONE) {
+ dash = spilength.computed / document->getDocumentScale()[0];
+ }
}
Inkscape::CSSOStringStream osarray;
osarray << dash;
diff --git a/src/style-internal.h b/src/style-internal.h
index 4ddad939b..b3e467398 100644
--- a/src/style-internal.h
+++ b/src/style-internal.h
@@ -455,7 +455,7 @@ public:
bool operator!=(const SPIBase& rhs) override {
return !(*this == rhs);
}
-
+
// To do: make private
public:
bool normal : 1;
diff --git a/src/widgets/dash-selector.cpp b/src/widgets/dash-selector.cpp
index 5ad74914a..7c3f32765 100644
--- a/src/widgets/dash-selector.cpp
+++ b/src/widgets/dash-selector.cpp
@@ -152,6 +152,8 @@ void SPDashSelector::set_dash (int ndash, double *dash, double o)
int pos = -1; // Allows custom patterns to remain unscathed by this.
int count = 0; // will hold the NULL terminator at the end of the dashes list
if (ndash > 0) {
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ gboolean scale = prefs->getBool("/options/dash/scale", true);
double delta = 0.0;
for (int i = 0; i < ndash; i++)
delta += dash[i];
@@ -165,9 +167,13 @@ void SPDashSelector::set_dash (int ndash, double *dash, double o)
if (np == ndash) {
int j;
for (j = 0; j < ndash; j++) {
-
- if (!Geom::are_near(dash[j], pattern[j], delta))
- break;
+ if (scale) {
+ if (!Geom::are_near(dash[j], pattern[j], delta))
+ break;
+ } else {
+ if (!Geom::are_near(dash[j], pattern[j], delta))
+ break;
+ }
}
if (j == ndash) {
pos = i;