include/vcl/rendercontext/DrawImageFlags.hxx |    3 ++-
 offapi/com/sun/star/awt/ImageDrawMode.idl    |    6 ++++++
 vcl/source/image/Image.cxx                   |    5 ++++-
 3 files changed, 12 insertions(+), 2 deletions(-)

New commits:
commit daa8f9a930a97aa712bcf609a3390b89054b8de4
Author:     Dan Williams <[email protected]>
AuthorDate: Thu Jan 8 13:27:52 2026 -0600
Commit:     Dan Williams <[email protected]>
CommitDate: Wed Feb 25 16:40:50 2026 +0100

    vcl: add DrawImageFlags::Invert and implement during Image drawing
    
    Inverts an image after applying other transformations.
    
    Change-Id: I05f31dc1d9be9c8ed72ee0e52d42133c081a2d74
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196872
    Tested-by: Jenkins
    Reviewed-by: Dan Williams <[email protected]>

diff --git a/include/vcl/rendercontext/DrawImageFlags.hxx 
b/include/vcl/rendercontext/DrawImageFlags.hxx
index 535ba74162b1..01dcca1d2dd7 100644
--- a/include/vcl/rendercontext/DrawImageFlags.hxx
+++ b/include/vcl/rendercontext/DrawImageFlags.hxx
@@ -30,10 +30,11 @@ enum class DrawImageFlags
     Deactive = 0x0004,
     // 0x0008 is unused,
     SemiTransparent = 0x0010,
+    Invert = 0x0020,
 };
 namespace o3tl
 {
-template <> struct typed_flags<DrawImageFlags> : 
is_typed_flags<DrawImageFlags, 0x001f>
+template <> struct typed_flags<DrawImageFlags> : 
is_typed_flags<DrawImageFlags, 0x003f>
 {
 };
 }
diff --git a/offapi/com/sun/star/awt/ImageDrawMode.idl 
b/offapi/com/sun/star/awt/ImageDrawMode.idl
index 40001b8bb31f..5c17ae1c158a 100644
--- a/offapi/com/sun/star/awt/ImageDrawMode.idl
+++ b/offapi/com/sun/star/awt/ImageDrawMode.idl
@@ -47,6 +47,12 @@ constants ImageDrawMode
     /** the image is drawn semi-transparent.
      */
     const short SEMITRANSPARENT = 0x0010;
+
+    /** the image is drawn inverted after all other mode transformations.
+
+        @since LibreOffice 26.8
+     */
+    const short INVERT = 0x0020;
 };
 
 }; }; }; };
diff --git a/vcl/source/image/Image.cxx b/vcl/source/image/Image.cxx
index 28506ecf459b..db6219718252 100644
--- a/vcl/source/image/Image.cxx
+++ b/vcl/source/image/Image.cxx
@@ -135,7 +135,7 @@ void Image::Draw(OutputDevice* pOutDev, const Point& rPos, 
DrawImageFlags nStyle
 
     if (!(nStyle & DrawImageFlags::Disable) &&
         (nStyle & (DrawImageFlags::Highlight | DrawImageFlags::Deactive |
-                   DrawImageFlags::SemiTransparent)))
+                   DrawImageFlags::SemiTransparent | DrawImageFlags::Invert)))
     {
         if (nStyle & (DrawImageFlags::Highlight | DrawImageFlags::Deactive))
         {
@@ -165,6 +165,9 @@ void Image::Draw(OutputDevice* pOutDev, const Point& rPos, 
DrawImageFlags nStyle
             }
             aRenderBmp = std::move(aTempBitmap);
         }
+
+        if (nStyle & DrawImageFlags::Invert)
+            aRenderBmp.Adjust(0, 0, 0, 0, 0, 0, true, false);
     }
 
     pOutDev->DrawBitmap(rPos, aOutSize, aRenderBmp);

Reply via email to