diff options
author | Hans-Joachim Lankenau <hjs@openoffice.org> | 2004-06-28 12:29:02 +0000 |
---|---|---|
committer | Hans-Joachim Lankenau <hjs@openoffice.org> | 2004-06-28 12:29:02 +0000 |
commit | 75c1d8c4964826f99af842bfa11ec418a6e97ade (patch) | |
tree | 61946f59045204a45b916c9f22362a70573a8756 /sw/inc/anchoreddrawobject.hxx | |
parent | INTEGRATION: CWS swqbugfixes01 (1.95.32); FILE MERGED (diff) | |
download | core-75c1d8c4964826f99af842bfa11ec418a6e97ade.tar.gz core-75c1d8c4964826f99af842bfa11ec418a6e97ade.zip |
INTEGRATION: CWS swdrawpositioning (1.1.2); FILE ADDED
2004/06/17 10:17:33 od 1.1.2.4: #i26791# - further adjustments for the unification of the positioning
of Writer fly frames and drawing objects.
2004/06/01 12:01:09 od 1.1.2.3: #i26791# classes <SwAnchoredObject> and <SwAnchoredDrawObject> -
method to set and convert positioning attributes.
2004/04/23 07:23:55 od 1.1.2.2: #i26791# - adjustments for the unification of the positioning of Writer
fly frames and drawing objects
2004/04/07 08:58:42 od 1.1.2.1: #i26791# new class <SwAnchoredDrawObject> for the unification of the positioning
of Writer fly frames and drawing objects.
Diffstat (limited to 'sw/inc/anchoreddrawobject.hxx')
-rw-r--r-- | sw/inc/anchoreddrawobject.hxx | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/sw/inc/anchoreddrawobject.hxx b/sw/inc/anchoreddrawobject.hxx new file mode 100644 index 000000000000..153d9d635e1d --- /dev/null +++ b/sw/inc/anchoreddrawobject.hxx @@ -0,0 +1,189 @@ +/************************************************************************* + * + * $RCSfile: anchoreddrawobject.hxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: hjs $ $Date: 2004-06-28 13:29:02 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (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.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ +#ifndef _ANCHOREDDRAWOBJECT_HXX +#define _ANCHOREDDRAWOBJECT_HXX + +#ifndef _ANCHOREDOBJECT_HXX +#include <anchoredobject.hxx> +#endif +#ifndef _GEN_HXX +#include <tools/gen.hxx> +#endif + +enum tLayoutDir +{ + HORI_L2R, + HORI_R2L, + VERT_R2L, + VERT_L2R // not supported yet +}; + +/** class for the positioning of drawing objects + + OD 2004-03-25 #i26791# + + @author OD +*/ +class SwAnchoredDrawObject : public SwAnchoredObject +{ + private: + // boolean, indicating that the object position has been invalidated + // and that a positioning has to be performed. + bool mbValidPos; + + // boolean, indicating that the object positioning algorithm is in progress. + bool mbPositioningInProgress; + + // rectangle, keeping the last object rectangle after the postioning + Rectangle maLastObjRect; + + // boolean, indicating that anchored drawing object hasn't been attached + // to a anchor frame yet. Once, it is attached to a anchor frame the + // boolean change its state. + bool mbNotYetAttachedToAnchorFrame; + + /** method to determine positioning attributes as long as the anchored + drawing object isn't attached to a anchor frame + + The positioning attributes are determined by the current object + geometry. + + @author OD + */ + void _SetPositioningAttr(); + + /** method to set internal anchor position of <SdrObject> instance + of the drawing according to its positioning alignments. + + For drawing objects the internal anchor position of the <SdrObject> + instance has to be set. The <SdrObject> instance represents + the drawing object in the drawing layer and is responsible for + storing the position coordinates in the file format. + The setting has to be performed according to its positioning + alignments, in order to get the correct positioning coordinates + saved in the file format. + Note: This adjustment is not be done for as-character anchored + drawing object - the positioning code takes care of this. + + @author OD + */ + void _SetDrawObjAnchor( const Point _aOffsetToFrmAnchorPos ); + + protected: + + /** method to indicate, that anchored drawing object is attached to + a anchor frame + + @author OD + */ + virtual void ObjectAttachedToAnchorFrame(); + + public: + TYPEINFO(); + + SwAnchoredDrawObject(); + virtual ~SwAnchoredDrawObject(); + + // declaration of pure virtual methods of base class <SwAnchoredObject> + virtual void MakeObjPos(); + virtual void InvalidateObjPos(); + virtual void SetPositioningInProgress( const bool _bPosInProgress ); + virtual bool IsPositioningInProgress() const; + + // accessors to the format + virtual SwFrmFmt& GetFrmFmt(); + virtual const SwFrmFmt& GetFrmFmt() const; + + // accessors to the object area and its position + virtual const SwRect GetObjRect() const; + virtual void SetObjTop( const SwTwips _nTop); + virtual void SetObjLeft( const SwTwips _nLeft); + const Rectangle& GetLastObjRect() const; + Rectangle& LastObjRect(); + + /** adjust positioning and alignment attributes for new anchor frame + + OD 2004-04-21 + Set horizontal and vertical position/alignment to manual position + relative to anchor frame area using the anchor position of the + new anchor frame and the current absolute drawing object position. + Note: For correct Undo/Redo method should only be called inside a + Undo-/Redo-action. + + @author OD + */ + void AdjustPositioningAttr( const SwFrm* _pNewAnchorFrm ); + + /** method to set positioning attributes as long as the anchored drawing + object isn't attached to a anchor frame + + @author OD + */ + inline void SetPositioningAttr() + { + if ( mbNotYetAttachedToAnchorFrame ) + { + _SetPositioningAttr(); + } + } +}; + +#endif |