bump product version to 4.2.0.1
[LibreOffice.git] / include / svtools / ctrltool.hxx
blob65b19e30dcd1babef2df5311264730b5684cb5d7
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef _CTRLTOOL_HXX
21 #define _CTRLTOOL_HXX
23 #include <boost/ptr_container/ptr_vector.hpp>
25 #include <svtools/svtdllapi.h>
26 #include <rtl/ustring.hxx>
27 #include <sal/types.h>
28 #include <vcl/metric.hxx>
30 class ImplFontListNameInfo;
31 class OutputDevice;
33 /*************************************************************************
35 Beschreibung
36 ============
38 class FontList
40 Diese Klasse verwaltet alle Fonts, die auf einem oder zwei Ausgabegeraeten
41 dargestellt werden koennen. Zusaetzlich bietet die Klasse Methoden an, um
42 aus Fett und Kursiv den StyleName zu generieren oder aus einem Stylename
43 die fehlenden Attribute. Zusaetzlich kann diese Klasse syntetisch nachgebildete
44 Fonts verarbeiten. Diese Klasse kann mit verschiedenen Standard-Controls und
45 Standard-Menus zusammenarbeiten.
47 Querverweise
49 class FontNameBox, class FontStyleBox, class FontSizeBox,
50 class FontNameMenu, class FontSizeMenu
52 --------------------------------------------------------------------------
54 FontList::FontList( OutputDevice* pDevice, OutputDevice* pDevice2 = NULL,
55 sal_Bool bAll = sal_True );
57 Konstruktor der Klasse FontList. Vom uebergebenen OutputDevice werden die
58 entsprechenden Fonts abgefragt. Das OutputDevice muss solange existieren,
59 wie auch die Klasse FontList existiert. Optional kann noch ein 2tes
60 Ausgabedevice uebergeben werden, damit man zum Beispiel die Fonts von
61 einem Drucker und dem Bildschirm zusammen in einer FontListe verwalten kann
62 und somit auch den FontListen und FontMenus die Fonts von beiden OutputDevices
63 zu uebergeben. Auch das pDevice2 muss solange existieren, wie die Klasse
64 FontList existiert.
66 Das OutputDevice, welches als erstes uebergeben wird, sollte das bevorzugte
67 sein. Dies sollte im normalfall der Drucker sein. Denn wenn 2 verschiede
68 Device-Schriften (eine fuer Drucker und eine fuer den Bildschirm) vorhanden
69 sind, wird die vom uebergebenen Device "pDevice" bevorzugt.
71 Mit dem dritten Parameter kann man angeben, ob nur skalierbare Schriften
72 abgefragt werden sollen oder alle. Wenn sal_True uebergeben wird, werden auch
73 Bitmap-Schriften mit abgefragt. Bei sal_False werden Vector-Schriften und
74 scalierbare Schriften abgefragt.
76 --------------------------------------------------------------------------
78 String FontList::GetStyleName( const FontInfo& rInfo ) const;
80 Diese Methode gibt den StyleName von einer FontInfo zurueck. Falls kein
81 StyleName gesetzt ist, wird aus den gesetzten Attributen ein entsprechender
82 Name generiert, der dem Anwender praesentiert werden kann.
84 --------------------------------------------------------------------------
86 OUString FontList::GetFontMapText( const FontInfo& rInfo ) const;
88 Diese Methode gibt einen Matchstring zurueck, der dem Anwender
89 anzeigen soll, welche Probleme es mit diesem Font geben kann.
91 --------------------------------------------------------------------------
93 FontInfo FontList::Get( const String& rName, const String& rStyleName ) const;
95 Diese Methode sucht aus dem uebergebenen Namen und dem uebergebenen StyleName
96 die entsprechende FontInfo-Struktur raus. Der Stylename kann in dieser
97 Methode auch ein syntetischer sein. In diesem Fall werden die entsprechenden
98 Werte in der FontInfo-Struktur entsprechend gesetzt. Wenn ein StyleName
99 uebergeben wird, kann jedoch eine FontInfo-Struktur ohne Stylename
100 zurueckgegeben werden. Um den StyleName dem Anwender zu repraesentieren,
101 muss GetStyleName() mit dieser FontInfo-Struktur aufgerufen werden.
103 Querverweise
105 FontList::GetStyleName()
107 --------------------------------------------------------------------------
109 FontInfo FontList::Get( const String& rName, FontWeight eWeight,
110 FontItalic eItalic ) const;
112 Diese Methode sucht aus dem uebergebenen Namen und den uebergebenen Styles
113 die entsprechende FontInfo-Struktur raus. Diese Methode kann auch eine
114 FontInfo-Struktur ohne Stylename zurueckgegeben. Um den StyleName dem
115 Anwender zu repraesentieren, muss GetStyleName() mit dieser FontInfo-Struktur
116 aufgerufen werden.
118 Querverweise
120 FontList::GetStyleName()
122 --------------------------------------------------------------------------
124 const sal_IntPtr* FontList::GetSizeAry( const FontInfo& rInfo ) const;
126 Diese Methode liefert zum uebergebenen Font die vorhandenen Groessen.
127 Falls es sich dabei um einen skalierbaren Font handelt, werden Standard-
128 Groessen zurueckgegeben. Das Array enthaelt die Hoehen des Fonts in 10tel
129 Point. Der letzte Wert des Array ist 0. Das Array, was zurueckgegeben wird,
130 wird von der FontList wieder zerstoert. Nach dem Aufruf der naechsten Methode
131 von der FontList, sollte deshalb das Array nicht mehr referenziert werden.
133 *************************************************************************/
135 // ------------
136 // - FontList -
137 // ------------
139 #define FONTLIST_FONTINFO_NOTFOUND ((sal_uInt16)0xFFFF)
141 #define FONTLIST_FONTNAMETYPE_PRINTER ((sal_uInt16)0x0001)
142 #define FONTLIST_FONTNAMETYPE_SCREEN ((sal_uInt16)0x0002)
144 class SVT_DLLPUBLIC FontList
146 private:
147 OUString maMapBoth;
148 OUString maMapPrinterOnly;
149 OUString maMapScreenOnly;
150 OUString maMapSizeNotAvailable;
151 OUString maMapStyleNotAvailable;
152 mutable OUString maMapNotAvailable;
153 OUString maLight;
154 OUString maLightItalic;
155 OUString maNormal;
156 OUString maNormalItalic;
157 OUString maBold;
158 OUString maBoldItalic;
159 OUString maBlack;
160 OUString maBlackItalic;
161 sal_IntPtr* mpSizeAry;
162 OutputDevice* mpDev;
163 OutputDevice* mpDev2;
164 boost::ptr_vector<ImplFontListNameInfo> maEntries;
166 SVT_DLLPRIVATE ImplFontListNameInfo* ImplFind( const OUString& rSearchName, sal_uLong* pIndex ) const;
167 SVT_DLLPRIVATE ImplFontListNameInfo* ImplFindByName( const OUString& rStr ) const;
168 SVT_DLLPRIVATE void ImplInsertFonts( OutputDevice* pDev, sal_Bool bAll,
169 sal_Bool bInsertData );
171 public:
172 FontList( OutputDevice* pDevice,
173 OutputDevice* pDevice2 = NULL,
174 sal_Bool bAll = sal_True );
175 ~FontList();
177 FontList* Clone() const;
179 OutputDevice* GetDevice() const { return mpDev; }
180 OutputDevice* GetDevice2() const { return mpDev2; }
181 OUString GetFontMapText( const FontInfo& rInfo ) const;
183 const OUString& GetNormalStr() const { return maNormal; }
184 const OUString& GetItalicStr() const { return maNormalItalic; }
185 const OUString& GetBoldStr() const { return maBold; }
186 const OUString& GetBoldItalicStr() const { return maBoldItalic; }
187 const OUString& GetStyleName( FontWeight eWeight, FontItalic eItalic ) const;
188 OUString GetStyleName( const FontInfo& rInfo ) const;
190 FontInfo Get( const OUString& rName,
191 const OUString& rStyleName ) const;
192 FontInfo Get( const OUString& rName,
193 FontWeight eWeight,
194 FontItalic eItalic ) const;
196 sal_Bool IsAvailable( const OUString& rName ) const;
197 sal_uInt16 GetFontNameCount() const
199 return (sal_uInt16)maEntries.size();
201 const FontInfo& GetFontName( sal_uInt16 nFont ) const;
202 sal_Handle GetFirstFontInfo( const OUString& rName ) const;
203 sal_Handle GetNextFontInfo( sal_Handle hFontInfo ) const;
204 const FontInfo& GetFontInfo( sal_Handle hFontInfo ) const;
206 const sal_IntPtr* GetSizeAry( const FontInfo& rInfo ) const;
207 static const sal_IntPtr* GetStdSizeAry();
209 private:
210 FontList( const FontList& );
211 FontList& operator =( const FontList& );
215 // -----------------
216 // - FontSizeNames -
217 // -----------------
219 class SVT_DLLPUBLIC FontSizeNames
221 private:
222 const struct ImplFSNameItem* mpArray;
223 sal_uLong mnElem;
225 public:
226 FontSizeNames( LanguageType eLanguage /* = LANGUAGE_DONTKNOW */ );
228 sal_uLong Count() const { return mnElem; }
229 sal_Bool IsEmpty() const { return !mnElem; }
231 long Name2Size( const OUString& ) const;
232 OUString Size2Name( long ) const;
234 OUString GetIndexName( sal_uLong nIndex ) const;
235 long GetIndexSize( sal_uLong nIndex ) const;
238 #endif // _CTRLTOOL_HXX
240 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */