src/lib/VSDStyles.h         |    4 +++-
 src/test/data/blue-box.vsdx |binary
 src/test/importtest.cpp     |   12 ++++++++++++
 3 files changed, 15 insertions(+), 1 deletion(-)

New commits:
commit 2af22206aca7c14e70e40ee248e9a8a361fbc88f
Author:     Andras Timar <[email protected]>
AuthorDate: Thu Dec 28 23:29:35 2023 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Sat Dec 30 10:21:11 2023 +0100

    tdf#77915 fix import of default shape fill color
    
    Change-Id: I5f2f5fd4678774b024301aede4be50ad04a22f87
    Reviewed-on: https://gerrit.libreoffice.org/c/libvisio/+/161397
    Tested-by: Bartosz Kosiorek <[email protected]>
    Reviewed-by: Bartosz Kosiorek <[email protected]>

diff --git a/src/lib/VSDStyles.h b/src/lib/VSDStyles.h
index 542b952..93eff0e 100644
--- a/src/lib/VSDStyles.h
+++ b/src/lib/VSDStyles.h
@@ -129,7 +129,9 @@ struct VSDOptionalFillStyle
     ASSIGN_OPTIONAL(style.qsFillColour, qsFillColour);
     ASSIGN_OPTIONAL(style.qsShadowColour, qsShadowColour);
     ASSIGN_OPTIONAL(style.qsFillMatrix, qsFillMatrix);
-    ASSIGN_OPTIONAL(style.fgColour, fgColour);
+    // Colour 'Blue, Variant 1' is special. It is the default,
+    // and it is not saved explicitely in the VSDX file.
+    ASSIGN_OPTIONAL(style.fgColour, fgColour);else fgColour = Colour(0x5b, 
0x9b, 0xd5, 0);
     ASSIGN_OPTIONAL(style.bgColour, bgColour);
     ASSIGN_OPTIONAL(style.shadowFgColour, shadowFgColour);
   }
diff --git a/src/test/data/blue-box.vsdx b/src/test/data/blue-box.vsdx
new file mode 100644
index 0000000..934d037
Binary files /dev/null and b/src/test/data/blue-box.vsdx differ
diff --git a/src/test/importtest.cpp b/src/test/importtest.cpp
index 4a26b4a..5192284 100644
--- a/src/test/importtest.cpp
+++ b/src/test/importtest.cpp
@@ -215,6 +215,7 @@ class ImportTest : public CPPUNIT_NS::TestFixture
   CPPUNIT_TEST(testVsd11TextfieldsWithUnits);
   CPPUNIT_TEST(testBmpFileHeader);
   CPPUNIT_TEST(testBmpFileHeader2);
+  CPPUNIT_TEST(testVsdxImportDefaultFillColour);
   CPPUNIT_TEST_SUITE_END();
 
   void testVsdxMetadataTitle();
@@ -232,6 +233,7 @@ class ImportTest : public CPPUNIT_NS::TestFixture
   void testVsd11TextfieldsWithUnits();
   void testBmpFileHeader();
   void testBmpFileHeader2();
+  void testVsdxImportDefaultFillColour();
 
   xmlBufferPtr m_buffer;
   xmlDocPtr m_doc;
@@ -519,6 +521,16 @@ void ImportTest::testBmpFileHeader2()
   assertBmpDataOffset(m_doc, "/document/page/layer/drawGraphicObject[1]", 330);
 }
 
+void ImportTest::testVsdxImportDefaultFillColour()
+{
+  // Without the accompanying fix in place, this test would have failed with:
+  // equality assertion failed
+  // - Expected: #5b9bd5
+  // - Actual  : #ffffff
+  m_doc = parse("blue-box.vsdx", m_buffer);
+  assertXPath(m_doc, "/document/page/layer[1]//setStyle[2]", "fill-color", 
"#5b9bd5");
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(ImportTest);
 
 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */

Reply via email to