Update ooo320-m1
[ooovba.git] / binfilter / inc / bf_sw / fesh.hxx
blob5444c1e7128690d81322e8fc379491af9a538aed
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: fesh.hxx,v $
10 * $Revision: 1.8 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
30 #ifndef _FESH_HXX
31 #define _FESH_HXX
33 #ifndef _EDITSH_HXX
34 #include <editsh.hxx>
35 #endif
36 #ifndef _ORNTENUM_HXX
37 #include <orntenum.hxx>
38 #endif
39 #ifndef _FLYENUM_HXX
40 #include <flyenum.hxx>
41 #endif
43 // OD 25.06.2003 #108784#
44 #ifndef _SVDTYPES_HXX
45 #include <bf_svx/svdtypes.hxx>
46 #endif
48 #include <vector>
49 class Color;
50 namespace binfilter {
52 class SvEmbeddedObject;
53 class SvEmbeddedObjectRef;
54 class SvInPlaceObject;
55 class SwFlyFrm;
57 class SwTabCols;
58 class SvxBrushItem;
59 class SwTableAutoFmt;
60 class SwFrm;
61 class SwTabFrm;
62 class SwFmtFrmSize;
63 class SvxBorderLine;
64 class SvStorageStream;
65 class SdrObject;
67 class Outliner;
68 class SotDataObject;
69 class SdrViewUserMarker;
70 class SwFrmFmt;
71 struct SwSortOptions;
72 class SdrMarkList;
74 enum FrmType
76 //Veroderung.
77 FRMTYPE_NONE = 0,
78 FRMTYPE_PAGE = 1,
79 FRMTYPE_HEADER = 2,
80 FRMTYPE_FOOTER = 4,
81 FRMTYPE_BODY = 8,
82 FRMTYPE_COLUMN = 16,
83 FRMTYPE_TABLE = 32,
84 FRMTYPE_FLY_FREE = 64,
85 FRMTYPE_FLY_ATCNT = 128,
86 FRMTYPE_FLY_INCNT = 256,
87 FRMTYPE_FOOTNOTE = 512,
88 FRMTYPE_FTNPAGE = 1024,
89 FRMTYPE_FLY_ANY = 2048,
90 FRMTYPE_DRAWOBJ = 4096,
91 FRMTYPE_COLSECT = 8192,
92 FRMTYPE_COLSECTOUTTAB = 16384
95 #define FRMTYPE_ANYCOLSECT ( FRMTYPE_COLSECT | FRMTYPE_COLSECTOUTTAB )
97 enum GotoObjType
99 DRAW_CONTROL = 1,
100 DRAW_SIMPLE = 2,
101 DRAW_ANY = 3,
102 FLY_FRM = 4,
103 FLY_GRF = 8,
104 FLY_OLE = 16,
105 FLY_ANY = 28,
106 GOTO_ANY = 31
109 enum FlyProtectType
111 FLYPROTECT_CONTENT = 1, // kann verodert werden!
112 FLYPROTECT_SIZE = 2,
113 FLYPROTECT_POS = 4,
114 FLYPROTECT_PARENT = 8, // nur Parents untersuchen
115 FLYPROTECT_FIXED = 16 // nur nicht aufhebbarer Schutz
116 // z.B. durch OLE-Server, gilt auch
117 // fuer Dialog
120 enum ObjCntType //Fuer das Ermitteln des Cntnts per Positon (D&D)
122 OBJCNT_NONE,
123 OBJCNT_FLY,
124 OBJCNT_GRF,
125 OBJCNT_OLE,
126 OBJCNT_SIMPLE,
127 OBJCNT_CONTROL,
128 OBJCNT_URLBUTTON,
130 OBJCNT_GROUPOBJ,
131 OBJCNT_DONTCARE // nicht bestimmbar - unterschiedliche Objecte selektiert
134 enum CurRectType
136 RECT_PAGE, //Rect der aktuellen Seite.
137 RECT_PAGE_CALC, //... Seite wird ggf. Formatiert
138 RECT_PAGE_PRT, //Rect der aktuellen PrtArea der Seite
139 RECT_FRM, //Rect des aktuellen Rahmen
140 RECT_FLY_EMBEDDED, //Rect des aktuellen FlyFrm
141 RECT_FLY_PRT_EMBEDDED, //Rect der PrtArea des FlyFrm
142 RECT_SECTION, //Rect des aktuellen Bereichs
143 RECT_OUTTABSECTION, //Rect des aktuellen Bereichs,
144 // aber ausserhalb der Tabelle
145 RECT_SECTION_PRT, //Rect der aktuellen PrtArea des Bereichs
146 RECT_OUTTABSECTION_PRT, //Rect der aktuellen PrtArea des Bereichs,
147 // aber ausserhalb der Tabelle
148 RECT_HEADERFOOTER, //Rect des aktuellen Headers/Footer
149 RECT_HEADERFOOTER_PRT //Rect der PrtArea des aktuellen Headers/Footers
152 struct SwGetCurColNumPara
154 const SwFrmFmt* pFrmFmt;
155 const SwRect* pPrtRect, *pFrmRect;
156 SwGetCurColNumPara() : pFrmFmt( 0 ), pPrtRect( 0 ), pFrmRect( 0 ) {}
159 #define SW_PASTESDR_INSERT 1
160 #define SW_PASTESDR_REPLACE 2
161 #define SW_PASTESDR_SETATTR 3
163 #define SW_ADD_SELECT 1
164 #define SW_ENTER_GROUP 2
165 #define SW_LEAVE_FRAME 4
167 #define SW_MOVE_UP 0
168 #define SW_MOVE_DOWN 1
169 #define SW_MOVE_LEFT 2
170 #define SW_MOVE_RIGHT 3
172 #define SW_TABCOL_NONE 0
173 #define SW_TABCOL_HORI 1
174 #define SW_TABCOL_VERT 2
176 class SwFEShell : public SwEditShell
178 SdrViewUserMarker *pChainFrom,
179 *pChainTo;
180 BOOL bCheckForOLEInCaption;
182 SwFlyFrm *FindFlyFrm() const;
184 public:
185 TYPEINFO();
186 SwFEShell( SwDoc& rDoc, Window *pWin,
187 SwRootFrm *pMaster = 0, const SwViewOption *pOpt = 0 );
188 virtual ~SwFEShell();
190 // #107513#
191 // Test if there is a draw object at that position and if it should be selected.
192 // The 'should' is aimed at Writer text fly frames which may be in front of
193 // the draw object.
194 sal_Bool ShouldObjectBeSelected(const Point& rPt);
196 // zeige die aktuelle Selektion an ( ggfs. den Rahmen/DrawObject)
197 virtual void MakeSelVisible();
199 //Liefert neben der Grafik in rName bei gelinkten Grafiken den Namen mit
200 //Pfad und sonst den Grafiknamen. rbLink ist TRU bei gelinkten Grafiken.
202 //SS fuer Rahmen --------------------------------------------
204 BOOL IsFrmSelected() const;
206 #ifdef ACCESSIBLE_LAYOUT
207 const SwFlyFrm *GetCurrFlyFrm() const { return FindFlyFrm(); }
208 #endif
210 //Der Client fuer das OleObject muss bezueglich der Scalierung auf dem
211 //neuesten Stand gehalten werden. Impl in der WrtShell.
212 //Wird ein Pointer auf eine Size uebergeben, so ist diese die aktuelle
213 //Core-Groesse des Objectes. Anderfalls wird die Groesse per GetCurFlyRect()
214 //besorgt.
215 virtual void CalcAndSetScale( SvEmbeddedObjectRef xIPObj,
216 const SwRect *pFlyPrtRect = 0,
217 const SwRect *pFlyFrmRect = 0 ) = 0;
219 //Objekte mit ActivateWhenVisible werden beim Paint Connected.
220 //gerufen von notxtfrm::Paint, impl in wrtsh
221 virtual void ConnectObj( SvInPlaceObjectRef xIPObj, const SwRect &rPrt,
222 const SwRect &rFrm ) = 0;
224 //Sichbaren Bereich auf das Object setzen, wenn es noch nicht sichtbar ist.
226 // check resize of OLE-Object
227 BOOL IsCheckForOLEInCaption() const { return bCheckForOLEInCaption; }
228 void SetCheckForOLEInCaption( BOOL bFlag ) { bCheckForOLEInCaption = bFlag; }
230 //Fuer das Chain wird immer der durch das Format spezifizierte Fly
231 //mit dem durch den Point getroffenen verbunden.
232 //In rRect wird das Rect des Flys geliefert (fuer Highlight desselben)
233 void HideChainMarker();
234 void SetChainMarker();
237 //SS fuer DrawObjekte ---------------------
239 //Temporaer um Bug zu umgehen.
241 //Achtung: Uneindeutikeiten bei Mehrfachselektionen.
245 //Setzen vom DragMode (z.B. Rotate), tut nix bei Rahmenselektion.
247 #ifdef ACCESSIBLE_LAYOUT
248 #endif
251 //Ankertyp des selektierten Objektes, -1 bei Uneindeutigkeit oder
252 //Rahmenselektion; FLY_PAGE bzw. FLY_AT_CNTNT aus frmatr.hxx sonst.
254 //Erzeugen von DrawObjekten, beim Begin wird der Objekttyp mitgegeben.
255 //Beim End kann ein Cmd mitgegeben werden, hier ist ggf.
256 //SDRCREATE_RESTRAINTEND fuer Ende oder SDRCREATE_NEXTPOINT fuer ein
257 //Polygon relevant. Nach dem RESTRAINTEND ist das Objekt erzeugt und
258 //selektiert.
259 //Mit BreakCreate wird der Vorgang abgebrochen, dann ist kein Objekt
260 //mehr selektiert.
262 // Funktionen f�r Rubberbox, um Draw-Objekte zu selektieren
264 //Gruppe erzeugen, aufloesen, nix bei Rahmenselektion.
265 //Es koennen noch immer Gruppen dabei sein.
267 // OD 27.06.2003 #108784# - change return type.
270 //Umankern. erlaubt sind: FLY_PAGE und FLY_AT_CNTNT des enum RndStdIds aus
271 //frmatr.hxx. Hier kein enum wg. Abhaengigkeiten
272 //Der BOOL ist nur fuer internen Gebrauch! Anker wird nur - anhand der
273 //aktuellen Dokumentposition - neu gesetzt aber nicht umgesetzt.
275 // hole die selectierten DrawObj als Grafik (MetaFile/Bitmap)
276 // Return-Wert besagt ob konvertiert wurde!!
280 //Einfuegen eines DrawObjectes. Das Object muss bereits im DrawModel
281 // angemeldet sein.
284 //------------------------------------------
286 //Auskunft ueber naechstliegenden Inhalt zum uebergebenen Point
288 //convert document position into position relative to the current page
289 Point GetRelativePagePosition(const Point& rDocPos);
291 //Ausgleich der Zellenbreiten, mit bTstOnly feststellen, ob mehr als
292 //eine Zelle markiert ist.
293 BOOL BalanceCellWidth( BOOL bTstOnly );
295 BOOL IsLastCellInRow() const;
296 // Die Breite des aktuellen Bereichs fuer Spaltendialog
298 /** Is default horizontal text direction for selected drawing object right-to-left
300 OD 09.12.2002 #103045#
301 Because drawing objects only painted for each page only, the default
302 horizontal text direction of a drawing object is given by the corresponding
303 page property.
305 @author OD
307 @returns boolean, indicating, if the horizontal text direction of the
308 page, the selected drawing object is on, is right-to-left.
310 const bool IsShapeDefaultHoriTextDirR2L() const;
312 void ParkCursorInTab();
315 } //namespace binfilter
316 #endif