summaryrefslogtreecommitdiff
path: root/extensions
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2023-01-12 11:35:54 +0000
committerCaolán McNamara <caolanm@redhat.com>2023-01-12 20:05:09 +0000
commit019c49ec96afc3ea0c50e99881f5a6324b4ec732 (patch)
treed378184f1c8626d96248038cfe3c3d8f1d0e4845 /extensions
parentaf27dabe816666945b02cd31bb6d6f9d84f732c0 (diff)
draw selection bounds without using RasterOp::Invert
Change-Id: I65fa68bbd8ff40c0e324851376dd8a8a1614ac99 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145396 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'extensions')
-rw-r--r--extensions/source/scanner/sanedlg.cxx58
1 files changed, 40 insertions, 18 deletions
diff --git a/extensions/source/scanner/sanedlg.cxx b/extensions/source/scanner/sanedlg.cxx
index 0d27a802cef0..35f2b37d63c7 100644
--- a/extensions/source/scanner/sanedlg.cxx
+++ b/extensions/source/scanner/sanedlg.cxx
@@ -24,6 +24,7 @@
#include <vcl/bitmapex.hxx>
#include <vcl/customweld.hxx>
#include <vcl/dibtools.hxx>
+#include <vcl/lineinfo.hxx>
#include <vcl/weld.hxx>
#include <vcl/svapp.hxx>
#include <vcl/event.hxx>
@@ -43,28 +44,52 @@
namespace {
-void DrawRectangles(vcl::RenderContext& rRenderContext, Point const & rUL, Point const & rBR)
+void DrawRect(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect)
{
- int nMiddleX, nMiddleY;
- Point aBL, aUR;
+ tools::Rectangle aRect(rRect);
+ rRenderContext.SetFillColor(COL_BLACK);
+ rRenderContext.SetLineColor();
+ rRenderContext.DrawRect(aRect);
+ aRect.Move(1, 1);
+ aRect.AdjustRight(-2);
+ aRect.AdjustBottom(-2);
+ rRenderContext.SetFillColor();
+ rRenderContext.SetLineColor(COL_WHITE);
+ rRenderContext.DrawRect(aRect);
+}
- aUR = Point(rBR.X(), rUL.Y());
- aBL = Point(rUL.X(), rBR.Y());
- nMiddleX = (rBR.X() - rUL.X()) / 2 + rUL.X();
- nMiddleY = (rBR.Y() - rUL.Y()) / 2 + rUL.Y();
+void DrawRectangles(vcl::RenderContext& rRenderContext, Point const & rUL, Point const & rBR)
+{
+ Point aUR(rBR.X(), rUL.Y());
+ Point aBL(rUL.X(), rBR.Y());
+ int nMiddleX = (rBR.X() - rUL.X()) / 2 + rUL.X();
+ int nMiddleY = (rBR.Y() - rUL.Y()) / 2 + rUL.Y();
+ rRenderContext.SetLineColor(COL_WHITE);
rRenderContext.DrawLine(rUL, aBL);
rRenderContext.DrawLine(aBL, rBR);
rRenderContext.DrawLine(rBR, aUR);
rRenderContext.DrawLine(aUR, rUL);
- rRenderContext.DrawRect(tools::Rectangle(rUL, Size(RECT_SIZE_PIX,RECT_SIZE_PIX)));
- rRenderContext.DrawRect(tools::Rectangle(aBL, Size(RECT_SIZE_PIX, -RECT_SIZE_PIX)));
- rRenderContext.DrawRect(tools::Rectangle(rBR, Size(-RECT_SIZE_PIX, -RECT_SIZE_PIX)));
- rRenderContext.DrawRect(tools::Rectangle(aUR, Size(-RECT_SIZE_PIX, RECT_SIZE_PIX )));
- rRenderContext.DrawRect(tools::Rectangle(Point(nMiddleX - RECT_SIZE_PIX / 2, rUL.Y()), Size(RECT_SIZE_PIX, RECT_SIZE_PIX)));
- rRenderContext.DrawRect(tools::Rectangle(Point(nMiddleX - RECT_SIZE_PIX / 2, rBR.Y()), Size(RECT_SIZE_PIX, -RECT_SIZE_PIX)));
- rRenderContext.DrawRect(tools::Rectangle(Point(rUL.X(), nMiddleY - RECT_SIZE_PIX / 2), Size(RECT_SIZE_PIX, RECT_SIZE_PIX)));
- rRenderContext.DrawRect(tools::Rectangle(Point(rBR.X(), nMiddleY - RECT_SIZE_PIX / 2), Size(-RECT_SIZE_PIX, RECT_SIZE_PIX)));
+
+ rRenderContext.SetLineColor(COL_BLACK);
+ LineInfo aInfo(LineStyle::Dash, 1);
+ aInfo.SetDistance(8);
+ aInfo.SetDotLen(4);
+ aInfo.SetDotCount(1);
+ rRenderContext.DrawLine(rUL, aBL, aInfo);
+ rRenderContext.DrawLine(aBL, rBR, aInfo);
+ rRenderContext.DrawLine(rBR, aUR, aInfo);
+ rRenderContext.DrawLine(aUR, rUL, aInfo);
+
+ Size aSize(RECT_SIZE_PIX, RECT_SIZE_PIX);
+ DrawRect(rRenderContext, tools::Rectangle(rUL, aSize));
+ DrawRect(rRenderContext, tools::Rectangle(Point(aBL.X(), aBL.Y() - RECT_SIZE_PIX), aSize));
+ DrawRect(rRenderContext, tools::Rectangle(Point(rBR.X() - RECT_SIZE_PIX, rBR.Y() - RECT_SIZE_PIX), aSize));
+ DrawRect(rRenderContext, tools::Rectangle(Point(aUR.X() - RECT_SIZE_PIX, aUR.Y()), aSize));
+ DrawRect(rRenderContext, tools::Rectangle(Point(nMiddleX - RECT_SIZE_PIX / 2, rUL.Y()), aSize));
+ DrawRect(rRenderContext, tools::Rectangle(Point(nMiddleX - RECT_SIZE_PIX / 2, rBR.Y() - RECT_SIZE_PIX), aSize));
+ DrawRect(rRenderContext, tools::Rectangle(Point(rUL.X(), nMiddleY - RECT_SIZE_PIX / 2), aSize));
+ DrawRect(rRenderContext, tools::Rectangle(Point(rBR.X() - RECT_SIZE_PIX, nMiddleY - RECT_SIZE_PIX / 2), aSize));
}
}
@@ -1181,13 +1206,10 @@ void ScanPreview::DrawDrag(vcl::RenderContext& rRenderContext)
if (!mbDragEnable)
return;
- RasterOp eROP = rRenderContext.GetRasterOp();
- rRenderContext.SetRasterOp(RasterOp::Invert);
rRenderContext.SetMapMode(MapMode(MapUnit::MapPixel));
DrawRectangles(rRenderContext, maTopLeft, maBottomRight);
- rRenderContext.SetRasterOp(eROP);
rRenderContext.SetMapMode(MapMode(MapUnit::MapAppFont));
}