oox/source/drawingml/color.cxx      |    4 ++++
 sd/qa/unit/data/pptx/tdf164936.pptx |binary
 sd/qa/unit/import-tests.cxx         |   18 ++++++++++++++++++
 3 files changed, 22 insertions(+)

New commits:
commit 0f034eaacbee30f3ff5e669d0bdfef20102cac32
Author:     Mohit Marathe <mohit.marathe.ext...@allotropia.de>
AuthorDate: Wed Feb 19 12:21:19 2025 +0530
Commit:     Adolfo Jayme Barrientos <fit...@ubuntu.com>
CommitDate: Tue Feb 25 02:41:41 2025 +0100

    tdf#164936 oox: modify getColor method to include alpha
    
    Change-Id: I141be9568b54334a17f5f781f1612423bec19999
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181861
    Tested-by: Jenkins
    Reviewed-by: Sarper Akdemir <sarper.akde...@allotropia.de>
    (cherry picked from commit 1916957d0750b5471f23f17b2867a907e0e9e0e2)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182102
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/oox/source/drawingml/color.cxx b/oox/source/drawingml/color.cxx
index 8ca000cb763e..8961618a10f7 100644
--- a/oox/source/drawingml/color.cxx
+++ b/oox/source/drawingml/color.cxx
@@ -785,6 +785,10 @@ model::ComplexColor Color::getComplexColor() const
         // store resulting RGB value in mnC1
         toRgb();
         mnC1 = lclRgbComponentsToRgb( mnC1, mnC2, mnC3 );
+        if (hasTransparency())
+        {
+            mnC1 |= static_cast<sal_Int32>(255.0 * (MAX_PERCENT - mnAlpha) / 
MAX_PERCENT) << 24;
+        }
     }
     else // if( meMode != COLOR_UNUSED )
     {
diff --git a/sd/qa/unit/data/pptx/tdf164936.pptx 
b/sd/qa/unit/data/pptx/tdf164936.pptx
new file mode 100644
index 000000000000..370ead21bbc5
Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf164936.pptx differ
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
index 41beb185e0c6..bde573807b78 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -305,6 +305,24 @@ CPPUNIT_TEST_FIXTURE(SdImportTest, testTableStyle)
     CPPUNIT_ASSERT_EQUAL(Color(0x5b9bd5), nFillColor);
 }
 
+CPPUNIT_TEST_FIXTURE(SdImportTest, testTableBorderTransparent)
+{
+    createSdImpressDoc("pptx/tdf164936.pptx");
+    const SdrPage* pPage = GetPage(1);
+
+    sdr::table::SdrTableObj* pTableObj = 
dynamic_cast<sdr::table::SdrTableObj*>(pPage->GetObj(0));
+    CPPUNIT_ASSERT(pTableObj);
+
+    uno::Reference<table::XCellRange> xTable(pTableObj->getTable(), 
uno::UNO_QUERY_THROW);
+    uno::Reference<beans::XPropertySet> xCellPropSet;
+    table::BorderLine2 aBorderLine;
+
+    xCellPropSet.set(xTable->getCellByPosition(0, 0), uno::UNO_QUERY_THROW);
+    xCellPropSet->getPropertyValue(u"LeftBorder"_ustr) >>= aBorderLine;
+    CPPUNIT_ASSERT_EQUAL(Color(ColorTransparency, 0xff2670c9),
+                         Color(ColorTransparency, aBorderLine.Color));
+}
+
 CPPUNIT_TEST_FIXTURE(SdImportTest, testFreeformShapeGluePoints)
 {
     createSdImpressDoc("pptx/tdf156829.pptx");

Reply via email to