summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlvin Penner <penner@vaxxine.com>2012-05-27 22:15:46 +0000
committerapenner <penner@vaxxine.com>2012-05-27 22:15:46 +0000
commit49c2989ecbe4a0990edf744d0b1f530bc39c34cf (patch)
tree4733d8856235b0764aa78e60d29397d0e7a8785b /src
parentGet rid of remaining deprecated GdkDevice API usage (diff)
downloadinkscape-49c2989ecbe4a0990edf744d0b1f530bc39c34cf.tar.gz
inkscape-49c2989ecbe4a0990edf744d0b1f530bc39c34cf.zip
emf import/export. patch by David Mathog for setmiterlimit (Bug 1004084)
Fixed bugs: - https://launchpad.net/bugs/1004084 (bzr r11427)
Diffstat (limited to 'src')
-rw-r--r--src/extension/internal/emf-win32-inout.cpp11
-rw-r--r--src/extension/internal/emf-win32-print.cpp8
2 files changed, 7 insertions, 12 deletions
diff --git a/src/extension/internal/emf-win32-inout.cpp b/src/extension/internal/emf-win32-inout.cpp
index f54bfc6ea..9c8755201 100644
--- a/src/extension/internal/emf-win32-inout.cpp
+++ b/src/extension/internal/emf-win32-inout.cpp
@@ -1654,11 +1654,12 @@ myEnhMetaFileProc(HDC /*hDC*/, HANDLETABLE * /*lpHTable*/, ENHMETARECORD const *
PEMRSETMITERLIMIT pEmr = (PEMRSETMITERLIMIT) lpEMFR;
- float miterlimit = pEmr->eMiterLimit;
- miterlimit = miterlimit * 4.0 / 10.0;
- d->dc[d->level].style.stroke_miterlimit.value = pix_to_size_point( d, miterlimit );
- if (d->dc[d->level].style.stroke_miterlimit.value < 1)
- d->dc[d->level].style.stroke_miterlimit.value = 4.0;
+ //BUG in SetMiterLimit() on mingw, possibly in underlying Windows(at least on XP?)
+ //The function takes a float but saves a 32 bit int in the EMR_SETMITERLIMIT record.
+ float miterlimit = *((int32_t *) &(pEmr->eMiterLimit));
+ d->dc[d->level].style.stroke_miterlimit.value = miterlimit; //ratio, not a pt size
+ if (d->dc[d->level].style.stroke_miterlimit.value < 1.0)
+ d->dc[d->level].style.stroke_miterlimit.value = 1.0;
break;
}
case EMR_BEGINPATH:
diff --git a/src/extension/internal/emf-win32-print.cpp b/src/extension/internal/emf-win32-print.cpp
index ef76c2c14..2b79fd5a4 100644
--- a/src/extension/internal/emf-win32-print.cpp
+++ b/src/extension/internal/emf-win32-print.cpp
@@ -374,13 +374,7 @@ void PrintEmfWin32::create_pen(SPStyle const *style, const Geom::Affine &transfo
if (linejoin == PS_JOIN_MITER) {
float oldmiterlimit;
- float miterlimit = style->stroke_miterlimit.value;
-
- miterlimit = miterlimit * 10.0 / 4.0;
- if (miterlimit < 1)
- miterlimit = 10.0;
-
- miterlimit = miterlimit * IN_PER_PX * dwDPI;
+ float miterlimit = style->stroke_miterlimit.value; //ratio, not a pt size
SetMiterLimit(
hdc,