diff options
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/svdraw/svdhdl.cxx | 129 | ||||
-rw-r--r-- | svx/source/svdraw/svdstr.src | 95 |
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"; |