/************************************************************** * * 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 * regarding copyright ownership. The ASF licenses this file * 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. * *************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_svx.hxx" #include #include #include #include #include #include //////////////////////////////////////////////////////////////////////////////////////////////////// Pointer SdrHelpLine::GetPointer() const { switch (eKind) { case SDRHELPLINE_VERTICAL : return Pointer(POINTER_ESIZE); case SDRHELPLINE_HORIZONTAL: return Pointer(POINTER_SSIZE); default : return Pointer(POINTER_MOVE); } // switch } FASTBOOL SdrHelpLine::IsHit(const Point& rPnt, sal_uInt16 nTolLog, const OutputDevice& rOut) const { Size a1Pix(rOut.PixelToLogic(Size(1,1))); FASTBOOL bXHit=rPnt.X()>=aPos.X()-nTolLog && rPnt.X()<=aPos.X()+nTolLog+a1Pix.Width(); FASTBOOL bYHit=rPnt.Y()>=aPos.Y()-nTolLog && rPnt.Y()<=aPos.Y()+nTolLog+a1Pix.Height(); switch (eKind) { case SDRHELPLINE_VERTICAL : return bXHit; case SDRHELPLINE_HORIZONTAL: return bYHit; case SDRHELPLINE_POINT: { if (bXHit || bYHit) { Size aRad(rOut.PixelToLogic(Size(SDRHELPLINE_POINT_PIXELSIZE,SDRHELPLINE_POINT_PIXELSIZE))); return rPnt.X()>=aPos.X()-aRad.Width() && rPnt.X()<=aPos.X()+aRad.Width()+a1Pix.Width() && rPnt.Y()>=aPos.Y()-aRad.Height() && rPnt.Y()<=aPos.Y()+aRad.Height()+a1Pix.Height(); } } break; } // switch return sal_False; } Rectangle SdrHelpLine::GetBoundRect(const OutputDevice& rOut) const { Rectangle aRet(aPos,aPos); Point aOfs(rOut.GetMapMode().GetOrigin()); Size aSiz(rOut.GetOutputSize()); switch (eKind) { case SDRHELPLINE_VERTICAL : aRet.Top()=-aOfs.Y(); aRet.Bottom()=-aOfs.Y()+aSiz.Height(); break; case SDRHELPLINE_HORIZONTAL: aRet.Left()=-aOfs.X(); aRet.Right()=-aOfs.X()+aSiz.Width(); break; case SDRHELPLINE_POINT : { Size aRad(rOut.PixelToLogic(Size(SDRHELPLINE_POINT_PIXELSIZE,SDRHELPLINE_POINT_PIXELSIZE))); aRet.Left() -=aRad.Width(); aRet.Right() +=aRad.Width(); aRet.Top() -=aRad.Height(); aRet.Bottom()+=aRad.Height(); } break; } // switch return aRet; } bool SdrHelpLine::IsVisibleEqual( const SdrHelpLine& rHelpLine, const OutputDevice& rOut ) const { if( eKind == rHelpLine.eKind) { Point aPt1(rOut.LogicToPixel(aPos)), aPt2(rOut.LogicToPixel(rHelpLine.aPos)); switch( eKind ) { case SDRHELPLINE_POINT: return aPt1 == aPt2; case SDRHELPLINE_VERTICAL: return aPt1.X() == aPt2.X(); case SDRHELPLINE_HORIZONTAL: return aPt1.Y() == aPt2.Y(); } } return false; } void SdrHelpLineList::Clear() { sal_uInt16 nAnz=GetCount(); for (sal_uInt16 i=0; i0;) { i--; if (GetObject(i)->IsHit(rPnt,nTolLog,rOut)) return i; } return SDRHELPLINE_NOTFOUND; } // eof