Update ooo320-m1
[ooovba.git] / svx / inc / svx / svdetc.hxx
blob8a93741bc306d4f0e176c835cf4fe18aa019315f
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: svdetc.hxx,v $
10 * $Revision: 1.4.152.1 $
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 ************************************************************************/
31 #ifndef _SVDETC_HXX
32 #define _SVDETC_HXX
34 #include <tools/string.hxx>
35 #include <tools/contnr.hxx>
37 #ifndef _OUTDEV_HXX //autogen
38 #include <vcl/outdev.hxx>
39 #endif
40 #include <tools/shl.hxx>
41 #include <svx/outliner.hxx>
42 #include "svx/svxdllapi.h"
44 ////////////////////////////////////////////////////////////////////////////////////////////////////
46 // ExchangeFormat-Id der DrawingEngine holen. Daten koennen dann per
47 // static BOOL CopyData(pData,nLen,nFormat);
48 // bereitgestellt werden, wobei pData/nLen einen SvMemoryStream beschreiben in
49 // dem ein SdrModel gestreamt wird an dem fuer die Zeitdauer des Streamens das
50 // Flag SdrModel::SetStreamingSdrModel(TRUE) gesetzt wird.
51 // ULONG SdrGetExchangeFormat(); -- JP 18.01.99 - dafuer gibt es ein define
53 class SdrOutliner;
54 class SdrModel;
55 class SvtSysLocale;
56 class CharClass;
57 class LocaleDataWrapper;
59 namespace com { namespace sun { namespace star { namespace lang {
60 struct Locale;
61 }}}}
63 // Einen Outliner mit den engineglobalen
64 // Defaulteinstellungen auf dem Heap erzeugen.
65 // Ist pMod<>NULL, dann wird der MapMode des uebergebenen
66 // Models verwendet. Die resultierende Default-Fonthoehe bleibt
67 // jedoch dieselbe (die logische Fonthoehe wird umgerechnet).
68 SVX_DLLPUBLIC SdrOutliner* SdrMakeOutliner( USHORT nOutlinerMode, SdrModel* pMod );
70 // Globale Defaulteinstellungen fuer die DrawingEngine.
71 // Diese Einstellungen sollte man direkt beim Applikationsstart
72 // vornehmen, noch bevor andere Methoden der Engine gerufen werden.
73 class SVX_DLLPUBLIC SdrEngineDefaults
75 friend class SdrAttrObj;
76 String aFontName;
77 FontFamily eFontFamily;
78 Color aFontColor;
79 ULONG nFontHeight;
80 MapUnit eMapUnit;
81 Fraction aMapFraction;
83 private:
84 static SdrEngineDefaults& GetDefaults();
86 public:
87 SdrEngineDefaults();
88 // Default Fontname ist "Times New Roman"
89 static void SetFontName(const String& rFontName) { GetDefaults().aFontName=rFontName; }
90 static String GetFontName() { return GetDefaults().aFontName; }
91 // Default FontFamily ist FAMILY_ROMAN
92 static void SetFontFamily(FontFamily eFam) { GetDefaults().eFontFamily=eFam; }
93 static FontFamily GetFontFamily() { return GetDefaults().eFontFamily; }
94 // Default FontColor ist COL_BLACK
95 static void SetFontColor(const Color& rColor) { GetDefaults().aFontColor=rColor; }
96 static Color GetFontColor() { return GetDefaults().aFontColor; }
97 // Default FontHeight ist 847. Die Fonthoehe wird in logischen Einheiten
98 // (MapUnit/MapFraction (siehe unten)) angegeben. Die Defaulteinstellung
99 // 847/100mm entspricht also ca. 24 Point. Verwendet man stattdessen
100 // beispielsweise Twips (SetMapUnit(MAP_TWIP)) (20 Twip = 1 Point) muss
101 // man als Fonthoehe 480 angeben um 24 Point als default zu erhalten.
102 static void SetFontHeight(ULONG nHeight) { GetDefaults().nFontHeight=nHeight; }
103 static ULONG GetFontHeight() { return GetDefaults().nFontHeight; }
104 // Der MapMode wird fuer den globalen Outliner benoetigt.
105 // Gleichzeitig bekommt auch jedes neu instanziierte SdrModel
106 // diesen MapMode default zugewiesen.
107 // Default MapUnit ist MAP_100TH_MM
108 static void SetMapUnit(MapUnit eMap) { GetDefaults().eMapUnit=eMap; }
109 static MapUnit GetMapUnit() { return GetDefaults().eMapUnit; }
110 // Default MapFraction ist 1/1.
111 static void SetMapFraction(const Fraction& rMap) { GetDefaults().aMapFraction=rMap; }
112 static Fraction GetMapFraction() { return GetDefaults().aMapFraction; }
113 // Der Aufruf der folgenden Methode veranlasst die Engine
114 // ihre sprachabhaengigen Resourcen neu zu initiallisieren.
115 // Bereits bestehende Undotexte, etc. bleiben jedoch in der
116 // sprache erhalten, in der sie erzeugt wurden.
117 static void LanguageHasChanged();
120 // Einen Outliner mit den engineglobalen
121 // Defaulteinstellungen auf dem Heap erzeugen.
122 // Ist pMod<>NULL, dann wird der MapMode des uebergebenen
123 // Models verwendet. Die resultierende Default-Fonthoehe bleibt
124 // jedoch dieselbe (die logische Fonthoehe wird umgerechnet).
125 friend SVX_DLLPUBLIC SdrOutliner* SdrMakeOutliner( USHORT nOutlinerMode, SdrModel* pMod );
128 class SfxItemSet;
129 // Liefert eine Ersatzdarstellung fuer einen XFillStyle
130 // Bei XFILL_NONE gibt's FALSE und rCol bleibt unveraendert.
131 SVX_DLLPUBLIC FASTBOOL GetDraftFillColor(const SfxItemSet& rSet, Color& rCol);
133 // Ein Container fuer USHORTs (im Prinzip ein dynamisches Array)
134 class UShortCont {
135 Container aArr;
136 public:
137 UShortCont(USHORT nBlock, USHORT nInit, USHORT nResize): aArr(nBlock,nInit,nResize) {}
138 void Clear() { aArr.Clear(); }
139 void Insert(USHORT nElem, ULONG nPos=CONTAINER_APPEND) { aArr.Insert((void*)ULONG(nElem),nPos); }
140 void Remove(ULONG nPos) { aArr.Remove(nPos); }
141 void Replace(USHORT nElem, ULONG nPos) { aArr.Replace((void*)ULONG(nElem),nPos); }
142 USHORT GetObject(ULONG nPos) const { return USHORT(ULONG(aArr.GetObject(nPos))); }
143 ULONG GetPos(USHORT nElem) const { return aArr.GetPos((void*)(ULONG)nElem); }
144 ULONG GetCount() const { return aArr.Count(); }
145 void Sort();
148 class ContainerSorter {
149 protected:
150 Container& rCont;
151 private:
152 //#if 0 // _SOLAR__PRIVATE
153 void ImpSubSort(long nL, long nR) const;
154 //#endif // __PRIVATE
155 public:
156 ContainerSorter(Container& rNewCont): rCont(rNewCont) {}
157 void DoSort(ULONG a=0, ULONG b=0xFFFFFFFF) const;
158 #ifdef This_Is_Just_For_A_Comment
159 Compare() muss returnieren:
160 -1 falls *pElem1<*pElem2
161 0 falls *pElem1=*pElem2
162 +1 falls *pElem1>*pElem2
163 #endif
164 virtual int Compare(const void* pElem1, const void* pElem2) const=0;
165 private: // damit keiner vergessen wird
166 virtual
167 void
168 Is1stLessThan2nd(const void* pElem1, const void* pElem2) const;
169 // virtual FASTBOOL Is1stLessThan2nd(const void* pElem1, const void* pElem2) const=NULL;
172 ////////////////////////////////////////////////////////////////////////////////////////////////////
174 //#if 0 // _SOLAR__PRIVATE
175 #define SDRHDC_SAVEPEN 1 /* Save Linecolor */
176 #define SDRHDC_SAVEBRUSH 2 /* Save Fillcolorn */
177 #define SDRHDC_SAVEFONT 4 /* Save Font */
178 #define SDRHDC_SAVEPENANDBRUSH 3 /* Save Line- and FillColor */
179 #define SDRHDC_SAVEPENANDBRUSHANDFONT 7 /* Save Font, Line- and fillcolor */
180 #define SDRHDC_SAVECLIPPING 8 /* Save Clipping */
181 #define SDRHDC_SAVEALL 15 /* Save Clipping, Font, fill- and linecolor */
183 class ImpClipMerk;
184 class ImpColorMerk;
185 class ImpSdrHdcMerk
187 ImpColorMerk* pFarbMerk;
188 ImpClipMerk* pClipMerk;
189 Color* pLineColorMerk;
190 USHORT nMode;
191 public:
192 ImpSdrHdcMerk(const OutputDevice& rOut, USHORT nNewMode=SDRHDC_SAVEALL, FASTBOOL bAutoMerk=TRUE);
193 ~ImpSdrHdcMerk();
194 void Save(const OutputDevice& rOut);
195 FASTBOOL IsSaved() const { return pFarbMerk!=NULL || pClipMerk!=NULL || pLineColorMerk!=NULL; }
196 void Restore(OutputDevice& rOut, USHORT nMask=SDRHDC_SAVEALL) const;
198 //#endif // __PRIVATE
200 ////////////////////////////////////////////////////////////////////////////////////////////////////
202 // Ein ItemSet auf Outliner- bzw. EditEngine-Items durchsuchen
203 // Liefert TRUE, wenn der Set solchen Items enthaelt.
204 BOOL SearchOutlinerItems(const SfxItemSet& rSet, BOOL bInklDefaults, BOOL* pbOnlyEE=NULL);
206 // zurueck erhaelt man einen neuen WhichTable den
207 // man dann irgendwann mit delete platthauen muss.
208 USHORT* RemoveWhichRange(const USHORT* pOldWhichTable, USHORT nRangeBeg, USHORT nRangeEnd);
210 ////////////////////////////////////////////////////////////////////////////////////////////////////
212 ////////////////////////////////////////////////////////////////////////////////////////////////////
214 class Link;
216 // Hilfsklasse zur kommunikation zwischen dem Dialog
217 // zum aufbrechen von Metafiles (sd/source/ui/dlg/brkdlg.cxx),
218 // SdrEditView::DoImportMarkedMtf() und
219 // ImpSdrGDIMetaFileImport::DoImport()
220 class SVX_DLLPUBLIC SvdProgressInfo
222 private:
223 ULONG nSumActionCount; // Summe aller Actions
224 ULONG nSumCurAction; // Summe aller bearbeiteten Actions
226 ULONG nActionCount; // Anzahl der Actions im akt. Obj.
227 ULONG nCurAction; // Anzahl bearbeiteter Act. im akt. Obj.
229 ULONG nInsertCount; // Anzahl einzufuegender Act. im akt. Obj.
230 ULONG nCurInsert; // Anzahl bereits eingefuegter Actions
232 ULONG nObjCount; // Anzahl der selektierten Objekte
233 ULONG nCurObj; // Aktuelles Objekt
235 Link *pLink;
237 public:
238 SvdProgressInfo( Link *_pLink );
240 void Init( ULONG _nSumActionCount, ULONG _nObjCount );
242 BOOL SetNextObject();
244 void SetActionCount( ULONG _nActionCount );
245 void SetInsertCount( ULONG _nInsertCount );
247 BOOL ReportActions( ULONG nAnzActions );
248 BOOL ReportInserts( ULONG nAnzInserts );
250 ULONG GetSumActionCount() const { return nSumActionCount; };
251 ULONG GetSumCurAction() const { return nSumCurAction; };
252 ULONG GetObjCount() const { return nObjCount; };
253 ULONG GetCurObj() const { return nCurObj; };
255 ULONG GetActionCount() const { return nActionCount; };
256 ULONG GetCurAction() const { return nCurAction; };
258 ULONG GetInsertCount() const { return nInsertCount; };
259 ULONG GetCurInsert() const { return nCurInsert; };
261 void ReportError();
262 BOOL ReportRescales( ULONG nAnzRescales );
267 class SdrLinkList
269 Container aList;
270 protected:
271 unsigned FindEntry(const Link& rLink) const;
272 public:
273 SdrLinkList(): aList(1024,4,4) {}
274 ~SdrLinkList() { Clear(); }
275 SVX_DLLPUBLIC void Clear();
276 unsigned GetLinkCount() const { return (unsigned)aList.Count(); }
277 Link& GetLink(unsigned nNum) { return *((Link*)(aList.GetObject(nNum))); }
278 const Link& GetLink(unsigned nNum) const { return *((Link*)(aList.GetObject(nNum))); }
279 void InsertLink(const Link& rLink, unsigned nPos=0xFFFF);
280 void RemoveLink(const Link& rLink);
281 FASTBOOL HasLink(const Link& rLink) const { return FindEntry(rLink)!=0xFFFF; }
284 // Fuer die Factory in SvdObj.CXX
285 SdrLinkList& ImpGetUserMakeObjHdl();
286 SdrLinkList& ImpGetUserMakeObjUserDataHdl();
288 class SdrOle2Obj;
289 class AutoTimer;
291 class OLEObjCache : public Container
293 ULONG nSize;
294 AutoTimer* pTimer;
296 void UnloadOnDemand();
297 BOOL UnloadObj( SdrOle2Obj* pObj );
298 DECL_LINK( UnloadCheckHdl, AutoTimer* );
300 public:
301 OLEObjCache();
302 SVX_DLLPUBLIC ~OLEObjCache();
304 void SetSize(ULONG nNewSize);
305 void InsertObj(SdrOle2Obj* pObj);
306 void RemoveObj(SdrOle2Obj* pObj);
310 class SVX_DLLPUBLIC SdrGlobalData
312 const SvtSysLocale* pSysLocale; // follows always locale settings
313 const CharClass* pCharClass; // follows always SysLocale
314 const LocaleDataWrapper* pLocaleData; // follows always SysLocale
315 public:
316 SdrLinkList aUserMakeObjHdl;
317 SdrLinkList aUserMakeObjUserDataHdl;
318 SdrOutliner* pOutliner;
319 SdrEngineDefaults* pDefaults;
320 ResMgr* pResMgr;
321 ULONG nExchangeFormat;
322 OLEObjCache aOLEObjCache;
325 const SvtSysLocale* GetSysLocale(); // follows always locale settings
326 const CharClass* GetCharClass(); // follows always SysLocale
327 const LocaleDataWrapper* GetLocaleData(); // follows always SysLocale
328 public:
329 SdrGlobalData();
330 ~SdrGlobalData();
332 OLEObjCache& GetOLEObjCache() { return aOLEObjCache; }
335 inline SdrGlobalData& GetSdrGlobalData()
337 void** ppAppData=GetAppData(SHL_SVD);
338 if (*ppAppData==NULL) {
339 *ppAppData=new SdrGlobalData;
341 return *((SdrGlobalData*)*ppAppData);
344 namespace sdr
347 SVX_DLLPUBLIC String GetResourceString(sal_uInt16 nResID);
351 /////////////////////////////////////////////////////////////////////
352 // #i101872# isolated GetTextEditBackgroundColor for tooling
353 class SdrObjEditView;
355 SVX_DLLPUBLIC Color GetTextEditBackgroundColor(const SdrObjEditView& rView);
357 /////////////////////////////////////////////////////////////////////
359 #endif //_SVDETC_HXX