update dev300-m58
[ooovba.git] / svtools / inc / ctrltool.hxx
blob2c04f8d5cef5c3bb50825bc2670ca69f7d8d47bd
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: ctrltool.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 ************************************************************************/
31 #ifndef _CTRLTOOL_HXX
32 #define _CTRLTOOL_HXX
34 #include "svtools/svtdllapi.h"
36 #ifndef _SAL_TYPES_H
37 #include <sal/types.h>
38 #endif
39 #include <tools/list.hxx>
40 #ifndef _METRIC_HXX
41 #include <vcl/metric.hxx>
42 #endif
44 class ImplFontListNameInfo;
45 class OutputDevice;
47 /*************************************************************************
49 Beschreibung
50 ============
52 class FontList
54 Diese Klasse verwaltet alle Fonts, die auf einem oder zwei Ausgabegeraeten
55 dargestellt werden koennen. Zusaetzlich bietet die Klasse Methoden an, um
56 aus Fett und Kursiv den StyleName zu generieren oder aus einem Stylename
57 die fehlenden Attribute. Zusaetzlich kann diese Klasse syntetisch nachgebildete
58 Fonts verarbeiten. Diese Klasse kann mit verschiedenen Standard-Controls und
59 Standard-Menus zusammenarbeiten.
61 Querverweise
63 class FontNameBox, class FontStyleBox, class FontSizeBox,
64 class FontNameMenu, class FontStyleMenu, class FontSizeMenu
66 --------------------------------------------------------------------------
68 FontList::FontList( OutputDevice* pDevice, OutputDevice* pDevice2 = NULL,
69 BOOL bAll = TRUE );
71 Konstruktor der Klasse FontList. Vom uebergebenen OutputDevice werden die
72 entsprechenden Fonts abgefragt. Das OutputDevice muss solange existieren,
73 wie auch die Klasse FontList existiert. Optional kann noch ein 2tes
74 Ausgabedevice uebergeben werden, damit man zum Beispiel die Fonts von
75 einem Drucker und dem Bildschirm zusammen in einer FontListe verwalten kann
76 und somit auch den FontListen und FontMenus die Fonts von beiden OutputDevices
77 zu uebergeben. Auch das pDevice2 muss solange existieren, wie die Klasse
78 FontList existiert.
80 Das OutputDevice, welches als erstes uebergeben wird, sollte das bevorzugte
81 sein. Dies sollte im normalfall der Drucker sein. Denn wenn 2 verschiede
82 Device-Schriften (eine fuer Drucker und eine fuer den Bildschirm) vorhanden
83 sind, wird die vom uebergebenen Device "pDevice" bevorzugt.
85 Mit dem dritten Parameter kann man angeben, ob nur skalierbare Schriften
86 abgefragt werden sollen oder alle. Wenn TRUE uebergeben wird, werden auch
87 Bitmap-Schriften mit abgefragt. Bei FALSE werden Vector-Schriften und
88 scalierbare Schriften abgefragt.
90 --------------------------------------------------------------------------
92 String FontList::GetStyleName( const FontInfo& rInfo ) const;
94 Diese Methode gibt den StyleName von einer FontInfo zurueck. Falls kein
95 StyleName gesetzt ist, wird aus den gesetzten Attributen ein entsprechender
96 Name generiert, der dem Anwender praesentiert werden kann.
98 --------------------------------------------------------------------------
100 XubString FontList::GetFontMapText( const FontInfo& rInfo ) const;
102 Diese Methode gibt einen Matchstring zurueck, der dem Anwender
103 anzeigen soll, welche Probleme es mit diesem Font geben kann.
105 --------------------------------------------------------------------------
107 FontInfo FontList::Get( const String& rName, const String& rStyleName ) const;
109 Diese Methode sucht aus dem uebergebenen Namen und dem uebergebenen StyleName
110 die entsprechende FontInfo-Struktur raus. Der Stylename kann in dieser
111 Methode auch ein syntetischer sein. In diesem Fall werden die entsprechenden
112 Werte in der FontInfo-Struktur entsprechend gesetzt. Wenn ein StyleName
113 uebergeben wird, kann jedoch eine FontInfo-Struktur ohne Stylename
114 zurueckgegeben werden. Um den StyleName dem Anwender zu repraesentieren,
115 muss GetStyleName() mit dieser FontInfo-Struktur aufgerufen werden.
117 Querverweise
119 FontList::GetStyleName()
121 --------------------------------------------------------------------------
123 FontInfo FontList::Get( const String& rName, FontWeight eWeight,
124 FontItalic eItalic ) const;
126 Diese Methode sucht aus dem uebergebenen Namen und den uebergebenen Styles
127 die entsprechende FontInfo-Struktur raus. Diese Methode kann auch eine
128 FontInfo-Struktur ohne Stylename zurueckgegeben. Um den StyleName dem
129 Anwender zu repraesentieren, muss GetStyleName() mit dieser FontInfo-Struktur
130 aufgerufen werden.
132 Querverweise
134 FontList::GetStyleName()
136 --------------------------------------------------------------------------
138 const long* FontList::GetSizeAry( const FontInfo& rInfo ) const;
140 Diese Methode liefert zum uebergebenen Font die vorhandenen Groessen.
141 Falls es sich dabei um einen skalierbaren Font handelt, werden Standard-
142 Groessen zurueckgegeben. Das Array enthaelt die Hoehen des Fonts in 10tel
143 Point. Der letzte Wert des Array ist 0. Das Array, was zurueckgegeben wird,
144 wird von der FontList wieder zerstoert. Nach dem Aufruf der naechsten Methode
145 von der FontList, sollte deshalb das Array nicht mehr referenziert werden.
147 *************************************************************************/
149 // ------------
150 // - FontList -
151 // ------------
153 #define FONTLIST_FONTINFO_NOTFOUND ((USHORT)0xFFFF)
155 #define FONTLIST_FONTNAMETYPE_PRINTER ((USHORT)0x0001)
156 #define FONTLIST_FONTNAMETYPE_SCREEN ((USHORT)0x0002)
157 #define FONTLIST_FONTNAMETYPE_SCALABLE ((USHORT)0x0004)
159 class SVT_DLLPUBLIC FontList : private List
161 private:
162 XubString maMapBoth;
163 XubString maMapPrinterOnly;
164 XubString maMapScreenOnly;
165 XubString maMapSizeNotAvailable;
166 XubString maMapStyleNotAvailable;
167 XubString maMapNotAvailable;
168 XubString maLight;
169 XubString maLightItalic;
170 XubString maNormal;
171 XubString maNormalItalic;
172 XubString maBold;
173 XubString maBoldItalic;
174 XubString maBlack;
175 XubString maBlackItalic;
176 long* mpSizeAry;
177 OutputDevice* mpDev;
178 OutputDevice* mpDev2;
180 #ifdef CTRLTOOL_CXX
181 SVT_DLLPRIVATE ImplFontListNameInfo* ImplFind( const XubString& rSearchName, ULONG* pIndex ) const;
182 SVT_DLLPRIVATE ImplFontListNameInfo* ImplFindByName( const XubString& rStr ) const;
183 SVT_DLLPRIVATE void ImplInsertFonts( OutputDevice* pDev, BOOL bAll,
184 BOOL bInsertData );
185 #endif
187 public:
188 FontList( OutputDevice* pDevice,
189 OutputDevice* pDevice2 = NULL,
190 BOOL bAll = TRUE );
191 ~FontList();
193 FontList* Clone() const;
195 OutputDevice* GetDevice() const { return mpDev; }
196 OutputDevice* GetDevice2() const { return mpDev2; }
197 XubString GetFontMapText( const FontInfo& rInfo ) const;
198 USHORT GetFontNameType( const XubString& rFontName ) const;
200 const XubString& GetNormalStr() const { return maNormal; }
201 const XubString& GetItalicStr() const { return maNormalItalic; }
202 const XubString& GetBoldStr() const { return maBold; }
203 const XubString& GetBoldItalicStr() const { return maBoldItalic; }
204 const XubString& GetStyleName( FontWeight eWeight, FontItalic eItalic ) const;
205 XubString GetStyleName( const FontInfo& rInfo ) const;
207 FontInfo Get( const XubString& rName,
208 const XubString& rStyleName ) const;
209 FontInfo Get( const XubString& rName,
210 FontWeight eWeight,
211 FontItalic eItalic ) const;
213 BOOL IsAvailable( const XubString& rName ) const;
214 USHORT GetFontNameCount() const
215 { return (USHORT)List::Count(); }
216 const FontInfo& GetFontName( USHORT nFont ) const;
217 USHORT GetFontNameType( USHORT nFont ) const;
218 sal_Handle GetFirstFontInfo( const XubString& rName ) const;
219 sal_Handle GetNextFontInfo( sal_Handle hFontInfo ) const;
220 const FontInfo& GetFontInfo( sal_Handle hFontInfo ) const;
222 const long* GetSizeAry( const FontInfo& rInfo ) const;
223 static const long* GetStdSizeAry();
225 private:
226 FontList( const FontList& );
227 FontList& operator =( const FontList& );
231 // -----------------
232 // - FontSizeNames -
233 // -----------------
235 class SVT_DLLPUBLIC FontSizeNames
237 private:
238 struct ImplFSNameItem* mpArray;
239 ULONG mnElem;
241 public:
242 FontSizeNames( LanguageType eLanguage /* = LANGUAGE_DONTKNOW */ );
244 ULONG Count() const { return mnElem; }
245 BOOL IsEmpty() const { return !mnElem; }
247 long Name2Size( const String& ) const;
248 String Size2Name( long ) const;
250 String GetIndexName( ULONG nIndex ) const;
251 long GetIndexSize( ULONG nIndex ) const;
254 #endif // _CTRLTOOL_HXX