summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
Diffstat (limited to 'svx')
-rw-r--r--svx/source/svdraw/svdhdl.cxx129
-rw-r--r--svx/source/svdraw/svdstr.src95
2 files changed, 219 insertions, 5 deletions
diff --git a/svx/source/svdraw/svdhdl.cxx b/svx/source/svdraw/svdhdl.cxx
index 7115bba0355c..06c198280eb9 100644
--- a/svx/source/svdraw/svdhdl.cxx
+++ b/svx/source/svdraw/svdhdl.cxx
@@ -57,6 +57,7 @@
#include <vcl/svapp.hxx>
#include <svx/sdr/overlay/overlaypolypolygon.hxx>
#include <vcl/lazydelete.hxx>
+#include <vcl/BitmapTools.hxx>
#include <basegfx/polygon/b2dpolygontools.hxx>
#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
@@ -68,6 +69,7 @@
#include <memory>
+
// #i15222#
// Due to the resource problems in Win95/98 with bitmap resources I
// will change this handle bitmap providing class. Old version was splitting
@@ -673,12 +675,124 @@ BitmapMarkerKind SdrHdl::GetNextBigger(BitmapMarkerKind eKnd)
return eRetval;
}
-BitmapEx SdrHdl::ImpGetBitmapEx( BitmapMarkerKind eKindOfMarker, sal_uInt16 nInd)
+namespace
+{
+
+OUString appendMarkerName(BitmapMarkerKind eKindOfMarker)
{
+ switch(eKindOfMarker)
+ {
+ case BitmapMarkerKind::Rect_7x7:
+ return "rect7";
+ case BitmapMarkerKind::Rect_9x9:
+ return "rect9";
+ case BitmapMarkerKind::Rect_11x11:
+ return "rect11";
+ case BitmapMarkerKind::Rect_13x13:
+ return "rect13";
+ case BitmapMarkerKind::Circ_7x7:
+ case BitmapMarkerKind::Customshape_7x7:
+ return "circ7";
+ case BitmapMarkerKind::Circ_9x9:
+ case BitmapMarkerKind::Customshape_9x9:
+ return "circ9";
+ case BitmapMarkerKind::Circ_11x11:
+ case BitmapMarkerKind::Customshape_11x11:
+ return "circ11";
+ case BitmapMarkerKind::Elli_7x9:
+ return "elli7x9";
+ case BitmapMarkerKind::Elli_9x11:
+ return "elli9x11";
+ case BitmapMarkerKind::Elli_9x7:
+ return "elli9x7";
+ case BitmapMarkerKind::Elli_11x9:
+ return "elli11x9";
+ case BitmapMarkerKind::RectPlus_7x7:
+ return "rectplus7";
+ case BitmapMarkerKind::RectPlus_9x9:
+ return "rectplus9";
+ case BitmapMarkerKind::RectPlus_11x11:
+ return "rectplus11";
+ case BitmapMarkerKind::Crosshair:
+ return "cross";
+ case BitmapMarkerKind::Anchor:
+ case BitmapMarkerKind::AnchorTR:
+ return "anchor";
+ case BitmapMarkerKind::AnchorPressed:
+ case BitmapMarkerKind::AnchorPressedTR:
+ return "anchor-pressed";
+ case BitmapMarkerKind::Glue:
+ return "glue-selected";
+ case BitmapMarkerKind::Glue_Deselected:
+ return "glue-unselected";
+ default:
+ break;
+ }
+ return "";
+}
+
+OUString appendMarkerColor(BitmapColorIndex eIndex)
+{
+ switch(eIndex)
+ {
+ case BitmapColorIndex::LightGreen:
+ return "1";
+ case BitmapColorIndex::Cyan:
+ return "2";
+ case BitmapColorIndex::LightCyan:
+ return "3";
+ case BitmapColorIndex::Red:
+ return "4";
+ case BitmapColorIndex::LightRed:
+ return "5";
+ case BitmapColorIndex::Yellow:
+ return "6";
+ default:
+ break;
+ }
+ return "";
+}
+
+BitmapEx ImpGetBitmapEx(BitmapMarkerKind eKindOfMarker, BitmapColorIndex eIndex)
+{
+ // use this code path only when we use HiDPI (for now)
+ if (Application::GetDefaultDevice()->GetDPIScalePercentage() > 100)
+ {
+ OUString sMarkerPrefix("svx/res/marker-");
+
+ OUString sMarkerName = appendMarkerName(eKindOfMarker);
+ if (!sMarkerName.isEmpty())
+ {
+ BitmapEx aBitmapEx;
+
+ if (eKindOfMarker == BitmapMarkerKind::Crosshair
+ || eKindOfMarker == BitmapMarkerKind::Anchor
+ || eKindOfMarker == BitmapMarkerKind::AnchorTR
+ || eKindOfMarker == BitmapMarkerKind::AnchorPressed
+ || eKindOfMarker == BitmapMarkerKind::AnchorPressedTR
+ || eKindOfMarker == BitmapMarkerKind::Glue
+ || eKindOfMarker == BitmapMarkerKind::Glue_Deselected)
+ {
+ aBitmapEx = vcl::bitmap::loadFromName(sMarkerPrefix + sMarkerName + ".png");
+ }
+ else
+ {
+ aBitmapEx = vcl::bitmap::loadFromName(sMarkerPrefix + sMarkerName + "-" + appendMarkerColor(eIndex) + ".png");
+ }
+
+ if (!aBitmapEx.IsEmpty())
+ return aBitmapEx;
+ }
+ }
+
+ // if we can't load the marker..
+
static vcl::DeleteOnDeinit< SdrHdlBitmapSet > aModernSet(new SdrHdlBitmapSet);
- return aModernSet.get()->GetBitmapEx(eKindOfMarker, nInd);
+ return aModernSet.get()->GetBitmapEx(eKindOfMarker, sal_uInt16(eIndex));
}
+} // end anonymous namespace
+
sdr::overlay::OverlayObject* SdrHdl::CreateOverlayObject(
const basegfx::B2DPoint& rPos,
BitmapColorIndex eColIndex, BitmapMarkerKind eKindOfMarker, OutputDevice& /*rOutDev*/, Point aMoveOutsideOffset)
@@ -752,8 +866,8 @@ sdr::overlay::OverlayObject* SdrHdl::CreateOverlayObject(
}
// create animated handle
- BitmapEx aBmpEx1 = ImpGetBitmapEx( eKindOfMarker, (sal_uInt16)eColIndex );
- BitmapEx aBmpEx2 = ImpGetBitmapEx( eNextBigger, (sal_uInt16)eColIndex );
+ BitmapEx aBmpEx1 = ImpGetBitmapEx(eKindOfMarker, eColIndex);
+ BitmapEx aBmpEx2 = ImpGetBitmapEx(eNextBigger, eColIndex);
// #i53216# Use system cursor blink time. Use the unsigned value.
const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
@@ -784,7 +898,7 @@ sdr::overlay::OverlayObject* SdrHdl::CreateOverlayObject(
else
{
// create normal handle: use ImpGetBitmapEx(...) now
- BitmapEx aBmpEx = ImpGetBitmapEx(eKindOfMarker, (sal_uInt16)eColIndex);
+ BitmapEx aBmpEx = ImpGetBitmapEx(eKindOfMarker, eColIndex);
// When the image with handles is not found, the bitmap returned is
// empty. This is a problem when we use LibreOffice as a library
@@ -971,6 +1085,11 @@ void SdrHdl::onMouseLeave()
{
}
+BitmapEx SdrHdl::createGluePointBitmap()
+{
+ return ImpGetBitmapEx(BitmapMarkerKind::Glue_Deselected, BitmapColorIndex::LightGreen);
+}
+
SdrHdlColor::SdrHdlColor(const Point& rRef, Color aCol, const Size& rSize, bool bLum)
: SdrHdl(rRef, SdrHdlKind::Color),
aMarkerSize(rSize),
diff --git a/svx/source/svdraw/svdstr.src b/svx/source/svdraw/svdstr.src
index 871690393a4c..29fd30a30b9c 100644
--- a/svx/source/svdraw/svdstr.src
+++ b/svx/source/svdraw/svdstr.src
@@ -2678,6 +2678,101 @@ Bitmap SIP_SA_PAGESHADOW35X35
File = "pageshadow35x35.png";
};
+Bitmap BMP_MARKER_RECT7_1 { File = "marker-rect7-1.png"; };
+Bitmap BMP_MARKER_RECT7_2 { File = "marker-rect7-2.png"; };
+Bitmap BMP_MARKER_RECT7_3 { File = "marker-rect7-3.png"; };
+Bitmap BMP_MARKER_RECT7_4 { File = "marker-rect7-4.png"; };
+Bitmap BMP_MARKER_RECT7_5 { File = "marker-rect7-5.png"; };
+Bitmap BMP_MARKER_RECT7_6 { File = "marker-rect7-6.png"; };
+Bitmap BMP_MARKER_RECT9_1 { File = "marker-rect9-1.png"; };
+Bitmap BMP_MARKER_RECT9_2 { File = "marker-rect9-2.png"; };
+Bitmap BMP_MARKER_RECT9_3 { File = "marker-rect9-3.png"; };
+Bitmap BMP_MARKER_RECT9_4 { File = "marker-rect9-4.png"; };
+Bitmap BMP_MARKER_RECT9_5 { File = "marker-rect9-5.png"; };
+Bitmap BMP_MARKER_RECT9_6 { File = "marker-rect9-6.png"; };
+Bitmap BMP_MARKER_RECT11_1 { File = "marker-rect11-1.png"; };
+Bitmap BMP_MARKER_RECT11_2 { File = "marker-rect11-2.png"; };
+Bitmap BMP_MARKER_RECT11_3 { File = "marker-rect11-3.png"; };
+Bitmap BMP_MARKER_RECT11_4 { File = "marker-rect11-4.png"; };
+Bitmap BMP_MARKER_RECT11_5 { File = "marker-rect11-5.png"; };
+Bitmap BMP_MARKER_RECT11_6 { File = "marker-rect11-6.png"; };
+Bitmap BMP_MARKER_RECT13_1 { File = "marker-rect13-1.png"; };
+Bitmap BMP_MARKER_RECT13_2 { File = "marker-rect13-2.png"; };
+Bitmap BMP_MARKER_RECT13_3 { File = "marker-rect13-3.png"; };
+Bitmap BMP_MARKER_RECT13_4 { File = "marker-rect13-4.png"; };
+Bitmap BMP_MARKER_RECT13_5 { File = "marker-rect13-5.png"; };
+Bitmap BMP_MARKER_RECT13_6 { File = "marker-rect13-6.png"; };
+
+Bitmap BMP_MARKER_CIRC7_1 { File = "marker-circ7-1.png"; };
+Bitmap BMP_MARKER_CIRC7_2 { File = "marker-circ7-2.png"; };
+Bitmap BMP_MARKER_CIRC7_3 { File = "marker-circ7-3.png"; };
+Bitmap BMP_MARKER_CIRC7_4 { File = "marker-circ7-4.png"; };
+Bitmap BMP_MARKER_CIRC7_5 { File = "marker-circ7-5.png"; };
+Bitmap BMP_MARKER_CIRC7_6 { File = "marker-circ7-6.png"; };
+Bitmap BMP_MARKER_CIRC9_1 { File = "marker-circ9-1.png"; };
+Bitmap BMP_MARKER_CIRC9_2 { File = "marker-circ9-2.png"; };
+Bitmap BMP_MARKER_CIRC9_3 { File = "marker-circ9-3.png"; };
+Bitmap BMP_MARKER_CIRC9_4 { File = "marker-circ9-4.png"; };
+Bitmap BMP_MARKER_CIRC9_5 { File = "marker-circ9-5.png"; };
+Bitmap BMP_MARKER_CIRC9_6 { File = "marker-circ9-6.png"; };
+Bitmap BMP_MARKER_CIRC11_1 { File = "marker-circ11-1.png"; };
+Bitmap BMP_MARKER_CIRC11_2 { File = "marker-circ11-2.png"; };
+Bitmap BMP_MARKER_CIRC11_3 { File = "marker-circ11-3.png"; };
+Bitmap BMP_MARKER_CIRC11_4 { File = "marker-circ11-4.png"; };
+Bitmap BMP_MARKER_CIRC11_5 { File = "marker-circ11-5.png"; };
+Bitmap BMP_MARKER_CIRC11_6 { File = "marker-circ11-6.png"; };
+
+Bitmap BMP_MARKER_ELLI7x9_1 { File = "marker-elli7x9-1.png"; };
+Bitmap BMP_MARKER_ELLI7x9_2 { File = "marker-elli7x9-2.png"; };
+Bitmap BMP_MARKER_ELLI7x9_3 { File = "marker-elli7x9-3.png"; };
+Bitmap BMP_MARKER_ELLI7x9_4 { File = "marker-elli7x9-4.png"; };
+Bitmap BMP_MARKER_ELLI7x9_5 { File = "marker-elli7x9-5.png"; };
+Bitmap BMP_MARKER_ELLI7x9_6 { File = "marker-elli7x9-6.png"; };
+Bitmap BMP_MARKER_ELLI9x11_1 { File = "marker-elli9x11-1.png"; };
+Bitmap BMP_MARKER_ELLI9x11_2 { File = "marker-elli9x11-2.png"; };
+Bitmap BMP_MARKER_ELLI9x11_3 { File = "marker-elli9x11-3.png"; };
+Bitmap BMP_MARKER_ELLI9x11_4 { File = "marker-elli9x11-4.png"; };
+Bitmap BMP_MARKER_ELLI9x11_5 { File = "marker-elli9x11-5.png"; };
+Bitmap BMP_MARKER_ELLI9x11_6 { File = "marker-elli9x11-6.png"; };
+
+Bitmap BMP_MARKER_ELLI9x7_1 { File = "marker-elli9x7-1.png"; };
+Bitmap BMP_MARKER_ELLI9x7_2 { File = "marker-elli9x7-2.png"; };
+Bitmap BMP_MARKER_ELLI9x7_3 { File = "marker-elli9x7-3.png"; };
+Bitmap BMP_MARKER_ELLI9x7_4 { File = "marker-elli9x7-4.png"; };
+Bitmap BMP_MARKER_ELLI9x7_5 { File = "marker-elli9x7-5.png"; };
+Bitmap BMP_MARKER_ELLI9x7_6 { File = "marker-elli9x7-6.png"; };
+Bitmap BMP_MARKER_ELLI11x9_1 { File = "marker-elli11x9-1.png"; };
+Bitmap BMP_MARKER_ELLI11x9_2 { File = "marker-elli11x9-2.png"; };
+Bitmap BMP_MARKER_ELLI11x9_3 { File = "marker-elli11x9-3.png"; };
+Bitmap BMP_MARKER_ELLI11x9_4 { File = "marker-elli11x9-4.png"; };
+Bitmap BMP_MARKER_ELLI11x9_5 { File = "marker-elli11x9-5.png"; };
+Bitmap BMP_MARKER_ELLI11x9_6 { File = "marker-elli11x9-6.png"; };
+
+Bitmap BMP_MARKER_RECTPLUS7_1 { File = "marker-rectplus7-1.png"; };
+Bitmap BMP_MARKER_RECTPLUS7_2 { File = "marker-rectplus7-2.png"; };
+Bitmap BMP_MARKER_RECTPLUS7_3 { File = "marker-rectplus7-3.png"; };
+Bitmap BMP_MARKER_RECTPLUS7_4 { File = "marker-rectplus7-4.png"; };
+Bitmap BMP_MARKER_RECTPLUS7_5 { File = "marker-rectplus7-5.png"; };
+Bitmap BMP_MARKER_RECTPLUS7_6 { File = "marker-rectplus7-6.png"; };
+Bitmap BMP_MARKER_RECTPLUS9_1 { File = "marker-rectplus9-1.png"; };
+Bitmap BMP_MARKER_RECTPLUS9_2 { File = "marker-rectplus9-2.png"; };
+Bitmap BMP_MARKER_RECTPLUS9_3 { File = "marker-rectplus9-3.png"; };
+Bitmap BMP_MARKER_RECTPLUS9_4 { File = "marker-rectplus9-4.png"; };
+Bitmap BMP_MARKER_RECTPLUS9_5 { File = "marker-rectplus9-5.png"; };
+Bitmap BMP_MARKER_RECTPLUS9_6 { File = "marker-rectplus9-6.png"; };
+Bitmap BMP_MARKER_RECTPLUS11_1 { File = "marker-rectplus11-1.png"; };
+Bitmap BMP_MARKER_RECTPLUS11_2 { File = "marker-rectplus11-2.png"; };
+Bitmap BMP_MARKER_RECTPLUS11_3 { File = "marker-rectplus11-3.png"; };
+Bitmap BMP_MARKER_RECTPLUS11_4 { File = "marker-rectplus11-4.png"; };
+Bitmap BMP_MARKER_RECTPLUS11_5 { File = "marker-rectplus11-5.png"; };
+Bitmap BMP_MARKER_RECTPLUS11_6 { File = "marker-rectplus11-6.png"; };
+
+Bitmap BMP_MARKER_ANCHOR { File = "marker-anchor.png"; };
+Bitmap BMP_MARKER_ANCHOR_PRESSED { File = "marker-anchor-pressed.png"; };
+Bitmap BMP_MARKER_CROSS { File = "marker-cross.png"; };
+Bitmap BMP_MARKER_GLUE_SELECTED { File = "marker-glue-selected.png"; };
+Bitmap BMP_MARKER_GLUE_UNSELECTED { File = "marker-glue-unselected.png"; };
+
Bitmap SIP_SA_MARKERS
{
File = "markers.png";