diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2018-06-17 20:51:09 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2018-08-05 00:31:06 +0000 |
| commit | a989bfb85b3827e97881b096c11f4fa6beb58496 (patch) | |
| tree | 80f3c8301a3d5eddf1f0b9eabdeafdb3256ab9a4 /src | |
| parent | Refactor with Tav help (diff) | |
| download | inkscape-a989bfb85b3827e97881b096c11f4fa6beb58496.tar.gz inkscape-a989bfb85b3827e97881b096c11f4fa6beb58496.zip | |
Fixes compiling bugs
Diffstat (limited to 'src')
| -rw-r--r-- | src/extension/internal/emf-inout.cpp | 8 | ||||
| -rw-r--r-- | src/extension/internal/wmf-inout.cpp | 4 | ||||
| -rw-r--r-- | src/selection-chemistry.cpp | 2 | ||||
| -rw-r--r-- | src/style-internal.cpp | 24 | ||||
| -rw-r--r-- | src/style-internal.h | 2 | ||||
| -rw-r--r-- | src/widgets/dash-selector.cpp | 12 |
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; |
