canvas/source/opengl/ogl_canvashelper.cxx |  130 +++++++++++++++++++++---------
 canvas/source/opengl/ogl_canvashelper.hxx |    8 -
 2 files changed, 98 insertions(+), 40 deletions(-)

New commits:
commit 42f7bf3d2186c8767642f7a376d93b29f778b11d
Author:     Nastasie Raul-Ionut <[email protected]>
AuthorDate: Wed Oct 15 18:27:42 2025 +0300
Commit:     Hossein <[email protected]>
CommitDate: Thu Nov 20 00:45:19 2025 +0100

    tdf#165233 Use lambdas instead of std::bind
    
    Replaced 6 instances of std::bind with lambdas in ogl_canvashelper.cxx
    
    Change-Id: I1d8ee501fd747f5db36a64cc47ba3ad42cd88be4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192454
    Tested-by: Jenkins
    Reviewed-by: Hossein <[email protected]>

diff --git a/canvas/source/opengl/ogl_canvashelper.cxx 
b/canvas/source/opengl/ogl_canvashelper.cxx
index 85a9d90cba23..53b0702cd6e7 100644
--- a/canvas/source/opengl/ogl_canvashelper.cxx
+++ b/canvas/source/opengl/ogl_canvashelper.cxx
@@ -378,8 +378,8 @@ namespace oglcanvas
     }
 
     void CanvasHelper::drawLine( const rendering::XCanvas*      /*pCanvas*/,
-                                 const geometry::RealPoint2D&   aStartPoint,
-                                 const geometry::RealPoint2D&   aEndPoint,
+                                 const geometry::RealPoint2D&   rStartPoint,
+                                 const geometry::RealPoint2D&   rEndPoint,
                                  const rendering::ViewState&    viewState,
                                  const rendering::RenderState&  renderState )
     {
@@ -389,15 +389,24 @@ namespace oglcanvas
             Action& rAct=mpRecordedActions->back();
 
             setupGraphicsState( rAct, viewState, renderState );
-            rAct.maFunction = std::bind(&lcl_drawLine,
-                                          std::placeholders::_1, 
std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, 
std::placeholders::_5,
-                                          aStartPoint, aEndPoint);
+
+            rAct.maFunction = [rStartPoint, rEndPoint]
+                (const CanvasHelper& rHelper,
+                 const basegfx::B2DHomMatrix& rTransform,
+                 GLenum eSrcBlend,
+                 GLenum eDstBlend,
+                 const rendering::ARGBColor& rColor,
+                 const basegfx::B2DPolyPolygonVector& /*polygons*/) -> bool
+            {
+                return lcl_drawLine(rHelper, rTransform, eSrcBlend, eDstBlend, 
rColor, rStartPoint, rEndPoint);
+            };
+
         }
     }
 
     void CanvasHelper::drawBezier( const rendering::XCanvas*            
/*pCanvas*/,
-                                   const geometry::RealBezierSegment2D& 
aBezierSegment,
-                                   const geometry::RealPoint2D&         
aEndPoint,
+                                   const geometry::RealBezierSegment2D& 
rBezierSegment,
+                                   const geometry::RealPoint2D&         
rEndPoint,
                                    const rendering::ViewState&          
viewState,
                                    const rendering::RenderState&        
renderState )
     {
@@ -410,12 +419,19 @@ namespace oglcanvas
         setupGraphicsState( rAct, viewState, renderState );
 
         // TODO(F2): subdivide&render whole curve
-        rAct.maFunction = std::bind(&lcl_drawLine,
-                                        std::placeholders::_1, 
std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, 
std::placeholders::_5,
-                                        geometry::RealPoint2D(
-                                            aBezierSegment.Px,
-                                            aBezierSegment.Py),
-                                        aEndPoint);
+
+        rAct.maFunction = [rStartPoint = 
geometry::RealPoint2D(rBezierSegment.Px, rBezierSegment.Py),
+                           rEndPoint]
+            (const CanvasHelper& rHelper,
+             const basegfx::B2DHomMatrix& rTransform,
+             GLenum eSrcBlend,
+             GLenum eDstBlend,
+             const rendering::ARGBColor& rColor,
+             const basegfx::B2DPolyPolygonVector& /*polygons*/) -> bool
+        {
+            return lcl_drawLine(rHelper, rTransform, eSrcBlend, eDstBlend, 
rColor, rStartPoint, rEndPoint);
+        };
+
     }
 
     uno::Reference< rendering::XCachedPrimitive > 
CanvasHelper::drawPolyPolygon( const rendering::XCanvas*                        
  /*pCanvas*/,
@@ -562,11 +578,24 @@ namespace oglcanvas
                     const ::canvas::ParametricPolyPolygon::Values aValues(
                         pGradient->getValues() );
 
-                    rAct.maFunction = std::bind(&lcl_fillGradientPolyPolygon,
-                                                    std::placeholders::_1, 
std::placeholders::_2, std::placeholders::_3, std::placeholders::_4,
-                                                    aValues,
-                                                    textures[0],
-                                                    std::placeholders::_6);
+                    rAct.maFunction = [aValues = aValues, aTexture = 
textures[0]]
+                        (const CanvasHelper& rHelper,
+                         const basegfx::B2DHomMatrix& rTransform,
+                         GLenum eSrcBlend,
+                         GLenum eDstBlend,
+                         const rendering::ARGBColor& /*rColor*/,
+                         const basegfx::B2DPolyPolygonVector& rPolyPolygons) 
-> bool
+                    {
+                        return lcl_fillGradientPolyPolygon(rHelper,
+                                                           rTransform,
+                                                           eSrcBlend,
+                                                           eDstBlend,
+                                                           aValues,
+                                                           aTexture,
+                                                           rPolyPolygons);
+                    };
+
+
                 }
                 else
                 {
@@ -605,15 +634,28 @@ namespace oglcanvas
                                 aPixelData,
                                 canvastools::getStdColorSpace()));
 
-                        rAct.maFunction = 
std::bind(&lcl_fillTexturedPolyPolygon,
-                                                        std::placeholders::_1, 
std::placeholders::_2, std::placeholders::_3, std::placeholders::_4,
-                                                        textures[0],
-                                                        aSize,
-                                                        aARGBBytes,
-                                                        rtl_crc32(0,
-                                                                  
aARGBBytes.getConstArray(),
-                                                                  
aARGBBytes.getLength()),
-                                                        std::placeholders::_6);
+                        rAct.maFunction = [aTexture = textures[0],
+                                           aPixelSize = aSize,
+                                           aPixelData = aARGBBytes,
+                                           nPixelCrc32 = rtl_crc32(0, 
aARGBBytes.getConstArray(), aARGBBytes.getLength())]
+                            (const CanvasHelper& rHelper,
+                             const basegfx::B2DHomMatrix& rTransform,
+                             GLenum eSrcBlend,
+                             GLenum eDstBlend,
+                             const rendering::ARGBColor& /*rColor*/,
+                             const basegfx::B2DPolyPolygonVector& 
rPolyPolygons) -> bool
+                        {
+                            return lcl_fillTexturedPolyPolygon(rHelper,
+                                                               rTransform,
+                                                               eSrcBlend,
+                                                               eDstBlend,
+                                                               aTexture,
+                                                               aPixelSize,
+                                                               aPixelData,
+                                                               nPixelCrc32,
+                                                               rPolyPolygons);
+                        };
+
                     }
                     // TODO(F1): handle non-integer case
                 }
@@ -786,9 +828,18 @@ namespace oglcanvas
                 Action& rAct=mpRecordedActions->back();
 
                 setupGraphicsState( rAct, viewState, renderState );
-                rAct.maFunction = std::bind(&lcl_drawOwnBitmap,
-                                                std::placeholders::_1, 
std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, 
std::placeholders::_5,
-                                                *pOwnBitmap);
+
+                rAct.maFunction = [pOwnBitmap](const CanvasHelper& rHelper,
+                                               const basegfx::B2DHomMatrix& 
rTransform,
+                                               GLenum eSrcBlend,
+                                               GLenum eDstBlend,
+                                               const rendering::ARGBColor& 
rColor,
+                                               const 
basegfx::B2DPolyPolygonVector& /*polygons*/) -> bool
+                {
+                    return lcl_drawOwnBitmap(rHelper, rTransform, eSrcBlend, 
eDstBlend, rColor, *pOwnBitmap);
+                };
+
+
             }
             else
             {
@@ -815,12 +866,19 @@ namespace oglcanvas
                     Action& rAct=mpRecordedActions->back();
 
                     setupGraphicsState( rAct, viewState, renderState );
-                    rAct.maFunction = std::bind(&lcl_drawGenericBitmap,
-                                                    std::placeholders::_1, 
std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, 
std::placeholders::_5,
-                                                    aSize, aARGBBytes,
-                                                    rtl_crc32(0,
-                                                              
aARGBBytes.getConstArray(),
-                                                              
aARGBBytes.getLength()));
+
+                    rAct.maFunction = [aPixelSize = aSize,
+                                       aPixelData = aARGBBytes,
+                                       nPixelCrc32 = rtl_crc32(0, 
aARGBBytes.getConstArray(), aARGBBytes.getLength())]
+                        (const CanvasHelper& rHelper,
+                         const basegfx::B2DHomMatrix& rTransform,
+                         GLenum eSrcBlend,
+                         GLenum eDstBlend,
+                         const rendering::ARGBColor& rColor,
+                         const basegfx::B2DPolyPolygonVector& /*polygons*/) -> 
bool
+                    {
+                        return lcl_drawGenericBitmap(rHelper, rTransform, 
eSrcBlend, eDstBlend, rColor, aPixelSize, aPixelData, nPixelCrc32);
+                    };
                 }
                 // TODO(F1): handle non-integer case
             }
diff --git a/canvas/source/opengl/ogl_canvashelper.hxx 
b/canvas/source/opengl/ogl_canvashelper.hxx
index 49513983d157..084b6464d9e7 100644
--- a/canvas/source/opengl/ogl_canvashelper.hxx
+++ b/canvas/source/opengl/ogl_canvashelper.hxx
@@ -55,13 +55,13 @@ namespace oglcanvas
         // interface. Also note subtle method parameter differences)
         void clear();
         void drawLine( const css::rendering::XCanvas*      pCanvas,
-                       const css::geometry::RealPoint2D&   aStartPoint,
-                       const css::geometry::RealPoint2D&   aEndPoint,
+                       const css::geometry::RealPoint2D&   rStartPoint,
+                       const css::geometry::RealPoint2D&   rEndPoint,
                        const css::rendering::ViewState&    viewState,
                        const css::rendering::RenderState&  renderState );
         void drawBezier( const css::rendering::XCanvas*            pCanvas,
-                         const css::geometry::RealBezierSegment2D& 
aBezierSegment,
-                         const css::geometry::RealPoint2D&         aEndPoint,
+                         const css::geometry::RealBezierSegment2D& 
rBezierSegment,
+                         const css::geometry::RealPoint2D&         rEndPoint,
                          const css::rendering::ViewState&          viewState,
                          const css::rendering::RenderState&        renderState 
);
         css::uno::Reference< css::rendering::XCachedPrimitive >

Reply via email to