From c01878c174ad7548996a4ec78f67d96bf3836263 Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Sat, 9 Oct 2021 20:43:24 +0800 Subject: [PATCH] Import: fix transparency STEP export/import App::Color::a in FreeCAD is actually interpreted as transparency instead of alpha. --- src/Mod/Import/App/ExportOCAF.cpp | 2 +- src/Mod/Import/App/ImportOCAF.cpp | 2 +- src/Mod/Import/App/ImportOCAF2.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Mod/Import/App/ExportOCAF.cpp b/src/Mod/Import/App/ExportOCAF.cpp index 9ba1a4d0ae..3a76769b42 100644 --- a/src/Mod/Import/App/ExportOCAF.cpp +++ b/src/Mod/Import/App/ExportOCAF.cpp @@ -104,7 +104,7 @@ static inline Quantity_ColorRGBA convertColor(const App::Color &c) { - return Quantity_ColorRGBA(Quantity_Color(c.r, c.g, c.b, OCC_COLOR_SPACE), c.a); + return Quantity_ColorRGBA(Quantity_Color(c.r, c.g, c.b, OCC_COLOR_SPACE), 1.0 - c.a); } using namespace Import; diff --git a/src/Mod/Import/App/ImportOCAF.cpp b/src/Mod/Import/App/ImportOCAF.cpp index f92e7300b3..a6c392f0b7 100644 --- a/src/Mod/Import/App/ImportOCAF.cpp +++ b/src/Mod/Import/App/ImportOCAF.cpp @@ -122,7 +122,7 @@ static inline App::Color convertColor(const Quantity_ColorRGBA &c) return App::Color(static_cast(r), static_cast(g), static_cast(b), - static_cast(c.Alpha())); + 1.0f - static_cast(c.Alpha())); } #define OCAF_KEEP_PLACEMENT diff --git a/src/Mod/Import/App/ImportOCAF2.cpp b/src/Mod/Import/App/ImportOCAF2.cpp index 3b0d6ea49a..1c803be05c 100644 --- a/src/Mod/Import/App/ImportOCAF2.cpp +++ b/src/Mod/Import/App/ImportOCAF2.cpp @@ -92,12 +92,12 @@ static inline App::Color convertColor(const Quantity_ColorRGBA &c) return App::Color(static_cast(r), static_cast(g), static_cast(b), - static_cast(c.Alpha())); + 1.0f - static_cast(c.Alpha())); } static inline Quantity_ColorRGBA convertColor(const App::Color &c) { - return Quantity_ColorRGBA(Quantity_Color(c.r, c.g, c.b, OCC_COLOR_SPACE), c.a); + return Quantity_ColorRGBA(Quantity_Color(c.r, c.g, c.b, OCC_COLOR_SPACE), 1.0f - c.a); } static inline std::ostream& operator<<(std::ostream& os, const Quantity_ColorRGBA &c) {