1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_tools.hxx" 30 31 #include <tools/svborder.hxx> 32 #include <osl/diagnose.h> 33 34 SvBorder::SvBorder( const Rectangle & rOuter, const Rectangle & rInner ) 35 { 36 Rectangle aOuter( rOuter ); 37 aOuter.Justify(); 38 Rectangle aInner( rInner ); 39 if( aInner.IsEmpty() ) 40 aInner = Rectangle( aOuter.Center(), aOuter.Center() ); 41 else 42 aInner.Justify(); 43 44 OSL_ENSURE( aOuter.IsInside( aInner ), 45 "SvBorder::SvBorder: sal_False == aOuter.IsInside( aInner )" ); 46 nTop = aInner.Top() - aOuter.Top(); 47 nRight = aOuter.Right() - aInner.Right(); 48 nBottom = aOuter.Bottom() - aInner.Bottom(); 49 nLeft = aInner.Left() - aOuter.Left(); 50 } 51 52 Rectangle & operator += ( Rectangle & rRect, const SvBorder & rBorder ) 53 { 54 // wegen Empty-Rect, GetSize muss als erstes gerufen werden 55 Size aS( rRect.GetSize() ); 56 aS.Width() += rBorder.Left() + rBorder.Right(); 57 aS.Height() += rBorder.Top() + rBorder.Bottom(); 58 59 rRect.Left() -= rBorder.Left(); 60 rRect.Top() -= rBorder.Top(); 61 rRect.SetSize( aS ); 62 return rRect; 63 } 64 65 Rectangle & operator -= ( Rectangle & rRect, const SvBorder & rBorder ) 66 { 67 // wegen Empty-Rect, GetSize muss als erstes gerufen werden 68 Size aS( rRect.GetSize() ); 69 aS.Width() -= rBorder.Left() + rBorder.Right(); 70 aS.Height() -= rBorder.Top() + rBorder.Bottom(); 71 72 rRect.Left() += rBorder.Left(); 73 rRect.Top() += rBorder.Top(); 74 rRect.SetSize( aS ); 75 return rRect; 76 } 77 78