diff options
-rw-r--r-- | filter/source/msfilter/msdffimp.cxx | 5 | ||||
-rw-r--r-- | sw/qa/extras/ww8import/data/tdf125281.doc | bin | 0 -> 82432 bytes | |||
-rw-r--r-- | sw/qa/extras/ww8import/ww8import.cxx | 17 |
3 files changed, 22 insertions, 0 deletions
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx index 8dbddea29cf1..1c31a10f7ec8 100644 --- a/filter/source/msfilter/msdffimp.cxx +++ b/filter/source/msfilter/msdffimp.cxx @@ -6610,6 +6610,11 @@ bool SvxMSDffManager::GetBLIPDirect( SvStream& rBLIPStream, Graphic& rData, tool // size to the size of this record. sal_uInt64 maxSize = pGrStream == &rBLIPStream ? nLength : 0; Graphic aGraphic = rGF.ImportUnloadedGraphic(*pGrStream, maxSize); + + // Size available in metafile header, set that here. + if (aMtfSize100.getWidth() && aMtfSize100.getHeight()) + aGraphic.SetPrefSize(aMtfSize100); + if (!aGraphic.IsNone()) { rData = aGraphic; diff --git a/sw/qa/extras/ww8import/data/tdf125281.doc b/sw/qa/extras/ww8import/data/tdf125281.doc Binary files differnew file mode 100644 index 000000000000..15146f9e3daf --- /dev/null +++ b/sw/qa/extras/ww8import/data/tdf125281.doc diff --git a/sw/qa/extras/ww8import/ww8import.cxx b/sw/qa/extras/ww8import/ww8import.cxx index abdc2a335227..1af645f90cb1 100644 --- a/sw/qa/extras/ww8import/ww8import.cxx +++ b/sw/qa/extras/ww8import/ww8import.cxx @@ -14,6 +14,7 @@ #include <com/sun/star/graphic/XGraphic.hpp> #include <viscrs.hxx> #include <wrtsh.hxx> +#include <ndgrf.hxx> #include <editeng/boxitem.hxx> #include <editeng/lrspitem.hxx> #include <editeng/ulspitem.hxx> @@ -204,6 +205,22 @@ DECLARE_WW8IMPORT_TEST(testTdf121734, "tdf121734.doc") } } +DECLARE_WW8IMPORT_TEST(testTdf125281, "tdf125281.doc") +{ + // Load a .doc file which has an embedded .emf image. + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + SwNode* pNode = pDoc->GetNodes()[6]; + CPPUNIT_ASSERT(pNode->IsGrfNode()); + SwGrfNode* pGrfNode = pNode->GetGrfNode(); + const Graphic& rGraphic = pGrfNode->GetGrf(); + + // Without the accompanying fix in place, this test would have failed, as pref size was 0 till + // an actual Paint() was performed (and even then, it was wrong). + long nExpected = 25664; + CPPUNIT_ASSERT_EQUAL(nExpected, rGraphic.GetPrefSize().getWidth()); +} + DECLARE_WW8IMPORT_TEST(testTdf122425_1, "tdf122425_1.doc") { // This is for header text in case we use a hack for fixed-height headers |