You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by ms...@apache.org on 2023/04/01 07:50:31 UTC

[openoffice] branch trunk updated: Define graphic for unselected glue point

This is an automated email from the ASF dual-hosted git repository.

mseidel pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/openoffice.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 5db901c00c Define graphic for unselected glue point
5db901c00c is described below

commit 5db901c00c4ab03f18ad0e74b83aefdc617eb041
Author: mseidel <ms...@apache.org>
AuthorDate: Sat Apr 1 09:42:11 2023 +0200

    Define graphic for unselected glue point
---
 main/svx/inc/svx/svdhdl.hxx       | 126 +++++++++++++++++++-------------------
 main/svx/source/svdraw/svdhdl.cxx |  30 ++++++---
 2 files changed, 84 insertions(+), 72 deletions(-)

diff --git a/main/svx/inc/svx/svdhdl.hxx b/main/svx/inc/svx/svdhdl.hxx
index 34a76d8a25..b2a0dddab2 100644
--- a/main/svx/inc/svx/svdhdl.hxx
+++ b/main/svx/inc/svx/svdhdl.hxx
@@ -1,5 +1,5 @@
 /**************************************************************
- * 
+ *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -7,16 +7,16 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
- * 
+ *
  *************************************************************/
 
 
@@ -67,26 +67,27 @@ class MouseEvent;
 // Modus selektiert wird.
 // HDL_MOVE...HDL_LWRGT muessen im enum immer zusammen stehen bleiben!
 
-enum SdrHdlKind 
+enum SdrHdlKind
 {
 	HDL_MOVE,		// Handle zum Verschieben des Objekts
-	HDL_UPLFT,		// Oben links
-	HDL_UPPER,		// Oben
-	HDL_UPRGT,		// Oben rechts
-	HDL_LEFT,		// Links
-	HDL_RIGHT,		// Rechts
-	HDL_LWLFT,		// Unten links
-	HDL_LOWER,		// Unten
-	HDL_LWRGT,		// Unten rechts
+	HDL_UPLFT,		// top left
+	HDL_UPPER,		// top
+	HDL_UPRGT,		// top right
+	HDL_LEFT,		// left
+	HDL_RIGHT,		// right
+	HDL_LWLFT,		// bottom left
+	HDL_LOWER,		// bottom
+	HDL_LWRGT,		// bottom right
 	HDL_POLY,		// Punktselektion an Polygon oder Bezierkurve
 	HDL_BWGT,		// Gewicht an einer Bezierkurve
 	HDL_CIRC,		// Winkel an Kreissegmenten, Eckenradius am Rect
 	HDL_REF1,		// Referenzpunkt 1, z.B. Rotationsmitte
 	HDL_REF2,		// Referenzpunkt 2, z.B. Endpunkt der Spiegelachse
 	HDL_MIRX,		// Die Spiegelachse selbst
-	HDL_GLUE,		// GluePoint
+	HDL_GLUE,		// glue point
+	HDL_GLUE_UNSEL,	// glue point unselected
 	HDL_ANCHOR,		// anchor symbol (SD, SW)
-	HDL_TRNS,		// interactive transparence
+	HDL_TRNS,		// interactive transparency
 	HDL_GRAD,		// interactive gradient
 	HDL_COLR,		// interactive color
 	HDL_USER,
@@ -130,9 +131,10 @@ enum BitmapMarkerKind
 	RectPlus_11x11,
 	Crosshair,
 	Glue,
+	Glue_Unselected,
 	Anchor,
 
-	// #98388# add AnchorPressed to be able to aninate anchor control, too.
+	// #98388# add AnchorPressed to be able to animate anchor control, too.
 	AnchorPressed,
 
 	// #101688# AnchorTR for SW
@@ -156,9 +158,9 @@ class SVX_DLLPUBLIC SdrHdl
 	BitmapEx ImpGetBitmapEx(BitmapMarkerKind eKindOfMarker, sal_uInt16 nInd, sal_Bool bFine, sal_Bool bIsHighContrast);
 
 protected:
-	SdrObject*					pObj;      // Gehoert das Handle zu einem Objekt?
-	SdrPageView*				pPV;       // Gehoert das Handle zu einem Objekt in einer bestimmten PageView?
-	SdrHdlList*					pHdlList;  // Zum Feststelen der Handlegroesse
+	SdrObject*					pObj; // Gehoert das Handle zu einem Objekt?
+	SdrPageView*				pPV; // Gehoert das Handle zu einem Objekt in einer bestimmten PageView?
+	SdrHdlList*					pHdlList; // Zum Feststellen der Handlegroesse
 
 	// OVERLAYMANAGER
 	::sdr::overlay::OverlayObjectList			maOverlayGroup;
@@ -169,16 +171,16 @@ protected:
 
 	long						nDrehWink; // Handles bzw. Mauszeiger drehen
 	sal_uInt32					nObjHdlNum; // wird von der MarkView benoetigt
-	sal_uInt32					nPolyNum;  // Polygonpunktes
-	sal_uInt32					nPPntNum;  // Punktnummer des Polygons
+	sal_uInt32					nPolyNum; // Polygonpunktes
+	sal_uInt32					nPPntNum; // Punktnummer des Polygons
 	sal_uInt32					nSourceHdlNum; // ist noch vollstaendig zu implementieren
 
-	unsigned					bSelect : 1;   // Ein selektierter Polygonpunkt?
+	unsigned					bSelect : 1; // Ein selektierter Polygonpunkt?
 	unsigned					b1PixMore : 1; // True=Handle wird 1 Pixel groesser dargestellt
-	unsigned					bPlusHdl : 1;  // u.a. fuer Hld-Paint Optimierung bei MarkPoint/UnmarkPoint, ...
-	
+	unsigned					bPlusHdl : 1; // u.a. fuer Hld-Paint Optimierung bei MarkPoint/UnmarkPoint, ...
+
 	bool						mbMoveOutside; // forces this handle to be moved outside of the selection rectangle
-	
+
 	// create marker for this kind
 	virtual void CreateB2dIAObject();
 
@@ -186,11 +188,11 @@ protected:
 	void GetRidOfIAObject();
 
 private:
-	bool						mbMouseOver;	// is true if the mouse is over this handle
+	bool						mbMouseOver; // is true if the mouse is over this handle
 
 protected:
 	::sdr::overlay::OverlayObject* CreateOverlayObject(
-		const basegfx::B2DPoint& rPos, 
+		const basegfx::B2DPoint& rPos,
 		BitmapColorIndex eColIndex, BitmapMarkerKind eKindOfMarker, Point aMoveOutsideOffset = Point());
 	BitmapMarkerKind GetNextBigger(BitmapMarkerKind eKnd) const;
 
@@ -211,7 +213,7 @@ public:
 	SdrPageView* GetPageView() const { return pPV; }
 	void SetPageView(SdrPageView* pNewPV) { pPV=pNewPV; }
 
-	SdrObject* GetObj() const { return pObj;  }
+	SdrObject* GetObj() const { return pObj; }
 	void SetObj(SdrObject* pNewObj);
 
 	sal_Bool IsSelected() const { return bSelect; }
@@ -247,11 +249,11 @@ public:
 	void SetMoveOutside( bool bMoveOutside );
 
 	/** is called when the mouse enters the area of this handle. If the handle changes his
-		visualisation during mouse over it must override this method and call Touch(). */
+		visualization during mouse over it must override this method and call Touch(). */
 	virtual void onMouseEnter(const MouseEvent& rMEvt);
 
 	/** is called when the mouse leaves the area of this handle. If the handle changes his
-		visualisation during mouse over it must override this method and call Touch(). */
+		visualization during mouse over it must override this method and call Touch(). */
 	virtual void onMouseLeave();
 
 	bool isMouseOver() const;
@@ -265,14 +267,14 @@ public:
 class SVX_DLLPUBLIC SdrHdlColor : public SdrHdl
 {
 private:
-	// size of colr markers
+	// size of color markers
 	Size						aMarkerSize;
 
 	// color
 	Color						aMarkerColor;
 
 	// callback link when value changed
-    Link						aColorChangeHdl;
+	Link						aColorChangeHdl;
 
 	// use luminance values only
 	unsigned					bUseLuminance : 1;
@@ -297,8 +299,8 @@ public:
 	const Size& GetSize() const { return aMarkerSize; }
 	void SetSize(const Size& rNew);
 
-    void SetColorChangeHdl(const Link& rLink) { aColorChangeHdl = rLink; }
-    const Link& GetColorChangeHdl() const { return aColorChangeHdl; }
+	void SetColorChangeHdl(const Link& rLink) { aColorChangeHdl = rLink; }
+	const Link& GetColorChangeHdl() const { return aColorChangeHdl; }
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -313,7 +315,7 @@ private:
 	// 2nd position
 	Point						a2ndPos;
 
-	// is this a gradient or a transparence
+	// is this a gradient or a transparency
 	unsigned					bGradient : 1;
 
 	// select which handle to move
@@ -436,7 +438,7 @@ public:
 
 class ImpTextframeHdl: public SdrHdl
 {
-    const Rectangle maRect;
+	const Rectangle maRect;
 
 	// create marker for this kind
 	virtual void CreateB2dIAObject();
@@ -445,8 +447,6 @@ public:
 	explicit ImpTextframeHdl(const Rectangle& rRect);
 };
 
-////////////////////////////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 
 // #97016# II
@@ -462,7 +462,7 @@ protected:
 
 	unsigned					bRotateShear : 1;
 	unsigned					bDistortShear : 1;
-	unsigned					bMoveOutside : 1;      // Handles nach aussen ruecken (fuer TextEdit)
+	unsigned					bMoveOutside : 1; // Handles nach aussen ruecken (fuer TextEdit)
 	unsigned					bFineHandles : 1;
 
 private:
@@ -519,17 +519,17 @@ public:
 class SVX_DLLPUBLIC SdrCropHdl : public SdrHdl
 {
 private:
-    // evtl. shear and rotation, equal to the object's one to allow adaption of
-    // the visualization handles
-    double          mfShearX;
-    double          mfRotation;
+	// evtl. shear and rotation, equal to the object's one to allow adaption of
+	// the visualization handles
+	double			mfShearX;
+	double			mfRotation;
 
 public:
-    SdrCropHdl(
-        const Point& rPnt, 
-        SdrHdlKind eNewKind,
-        double fShearX,
-        double fRotation);
+	SdrCropHdl(
+		const Point& rPnt,
+		SdrHdlKind eNewKind,
+		double fShearX,
+		double fRotation);
 
 protected:
 	// create marker for this kind
@@ -545,25 +545,25 @@ protected:
 class SVX_DLLPUBLIC SdrCropViewHdl : public SdrHdl
 {
 private:
-    basegfx::B2DHomMatrix       maObjectTransform;
-    Graphic                     maGraphic;
-    double                      mfCropLeft;
-    double                      mfCropTop;
-    double                      mfCropRight;
-    double                      mfCropBottom;
+	basegfx::B2DHomMatrix		maObjectTransform;
+	Graphic						maGraphic;
+	double						mfCropLeft;
+	double						mfCropTop;
+	double						mfCropRight;
+	double						mfCropBottom;
 
 public:
-    SdrCropViewHdl(
-        const basegfx::B2DHomMatrix& rObjectTransform,
-        const Graphic& rGraphic,
-        double fCropLeft,
-        double fCropTop,
-        double fCropRight,
-        double fCropBottom);
+	SdrCropViewHdl(
+		const basegfx::B2DHomMatrix& rObjectTransform,
+		const Graphic& rGraphic,
+		double fCropLeft,
+		double fCropTop,
+		double fCropRight,
+		double fCropBottom);
 
 protected:
-    // create marker for this kind
-    virtual void CreateB2dIAObject();
+	// create marker for this kind
+	virtual void CreateB2dIAObject();
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/main/svx/source/svdraw/svdhdl.cxx b/main/svx/source/svdraw/svdhdl.cxx
index 8db0f62958..7c48c613f8 100644
--- a/main/svx/source/svdraw/svdhdl.cxx
+++ b/main/svx/source/svdraw/svdhdl.cxx
@@ -101,11 +101,11 @@ public:
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 #define KIND_COUNT			(14)
 #define INDEX_COUNT			(6)
-#define INDIVIDUAL_COUNT	(4)
+#define INDIVIDUAL_COUNT	(5)
 
 SdrHdlBitmapSet::SdrHdlBitmapSet(sal_uInt16 nResId)
 :	maMarkersBitmap(ResId(nResId, *ImpGetResMgr())), // just use resource with alpha channel
-	// 14 kinds (BitmapMarkerKind) use index [0..5], 4 extra
+	// 14 kinds (BitmapMarkerKind) use index [0..5], 5 extra
 	maRealMarkers((KIND_COUNT * INDEX_COUNT) + INDIVIDUAL_COUNT)
 {
 }
@@ -251,17 +251,22 @@ const BitmapEx& SdrHdlBitmapSet::GetBitmapEx(BitmapMarkerKind eKindOfMarker, sal
 			return impGetOrCreateTargetBitmap((KIND_COUNT * INDEX_COUNT) + 1, Rectangle(Point(15, 74), Size(9, 9)));
 		}
 
+		case Glue_Unselected:
+		{
+			return impGetOrCreateTargetBitmap((KIND_COUNT * INDEX_COUNT) + 2, Rectangle(Point(15, 83), Size(9, 9)));
+		}
+
 		case Anchor: // #101688# AnchorTR for SW
 		case AnchorTR:
 		{
-			return impGetOrCreateTargetBitmap((KIND_COUNT * INDEX_COUNT) + 2, Rectangle(Point(24, 68), Size(24, 24)));
+			return impGetOrCreateTargetBitmap((KIND_COUNT * INDEX_COUNT) + 3, Rectangle(Point(24, 68), Size(24, 24)));
 		}
 
 		// #98388# add AnchorPressed to be able to animate anchor control
 		case AnchorPressed:
 		case AnchorPressedTR:
 		{
-			return impGetOrCreateTargetBitmap((KIND_COUNT * INDEX_COUNT) + 3, Rectangle(Point(48, 68), Size(24, 24)));
+			return impGetOrCreateTargetBitmap((KIND_COUNT * INDEX_COUNT) + 4, Rectangle(Point(48, 68), Size(24, 24)));
 		}
 	}
 
@@ -534,6 +539,11 @@ void SdrHdl::CreateB2dIAObject()
 				eKindOfMarker = Glue;
 				break;
 			}
+			case HDL_GLUE_UNSEL:
+			{
+				eKindOfMarker = Glue_Unselected;
+				break;
+			}
 			case HDL_ANCHOR:
 			{
 				eKindOfMarker = Anchor;
@@ -753,7 +763,7 @@ BitmapEx SdrHdl::ImpGetBitmapEx(BitmapMarkerKind eKindOfMarker, sal_uInt16 nInd,
 					break;
 
 				case Glue:
-					eNextBigger = Crosshair;
+					eNextBigger = Glue_Unselected;
 					break;
 				default:
 					break;
@@ -906,6 +916,7 @@ Pointer SdrHdl::GetPointer() const
 				case HDL_REF2 : ePtr=POINTER_REFHAND;	break;
 				case HDL_BWGT : ePtr=POINTER_MOVEBEZIERWEIGHT;	break;
 				case HDL_GLUE : ePtr=POINTER_MOVEPOINT;	break;
+				case HDL_GLUE_UNSEL : ePtr=POINTER_MOVEPOINT;	break;
 				case HDL_CUSTOMSHAPE1 : ePtr=POINTER_HAND;	break;
 				default:
 					break;
@@ -929,7 +940,7 @@ sal_Bool SdrHdl::IsFocusHdl() const
 		case HDL_LOWER:		// bottom
 		case HDL_LWRGT:		// bottom right
 		{
-			// if it's a activated TextEdit, it's moved to extended points
+			// if it's an activated TextEdit, it's moved to extended points
 			if(pHdlList && pHdlList->IsMoveOutside())
 				return sal_False;
 			else
@@ -943,7 +954,8 @@ sal_Bool SdrHdl::IsFocusHdl() const
 		case HDL_REF1:		// Referenzpunkt 1, z.B. Rotationsmitte
 		case HDL_REF2:		// Referenzpunkt 2, z.B. Endpunkt der Spiegelachse
 		//case HDL_MIRX:		// Die Spiegelachse selbst
-		case HDL_GLUE:		// GluePoint
+		case HDL_GLUE:		// glue point
+		case HDL_GLUE_UNSEL: // glue point unselected
 
 		// #98388# do NOT activate here, let SW implement their own SdrHdl and
 		// overload IsFocusHdl() there to make the anchor accessible
@@ -1773,11 +1785,11 @@ int ImpSdrHdlListSorter::Compare(const void* pElem1, const void* pElem2) const
 	if (eKind1!=eKind2)
 	{
 		if (eKind1==HDL_REF1 || eKind1==HDL_REF2 || eKind1==HDL_MIRX) n1=5;
-		else if (eKind1==HDL_GLUE) n1=2;
+		else if (eKind1==HDL_GLUE || eKind1==HDL_GLUE_UNSEL) n1=2;
 		else if (eKind1==HDL_USER) n1=3;
 		else if (eKind1==HDL_SMARTTAG) n1=0;
 		if (eKind2==HDL_REF1 || eKind2==HDL_REF2 || eKind2==HDL_MIRX) n2=5;
-		else if (eKind2==HDL_GLUE) n2=2;
+		else if (eKind2==HDL_GLUE || eKind1==HDL_GLUE_UNSEL) n2=2;
 		else if (eKind2==HDL_USER) n2=3;
 		else if (eKind2==HDL_SMARTTAG) n2=0;
 	}