xref: /haiku/src/servers/app/font/FontFamily.h (revision ed24eb5ff12640d052171c6a7feba37fab8a75d1)
1 /*
2  * Copyright 2001-2008, Haiku.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		DarkWyrm <bpmagic@columbus.rr.com>
7  *		Axel Dörfler, axeld@pinc-software.de
8  */
9 #ifndef FONT_FAMILY_H_
10 #define FONT_FAMILY_H_
11 
12 
13 #include <ObjectList.h>
14 #include <String.h>
15 
16 #include "FontStyle.h"
17 
18 
19 /*!
20 	\class FontFamily FontFamily.h
21 	\brief Class representing a collection of similar styles
22 
23 	FontFamily objects bring together many styles of the same face, such as
24 	Arial Roman, Arial Italic, Arial Bold, etc.
25 */
26 class FontFamily {
27 public:
28 						FontFamily(const char* name, uint16 id);
29 	virtual				~FontFamily();
30 
31 			const char*	Name() const;
32 
33 			bool		AddStyle(FontStyle* style);
34 			bool		RemoveStyle(FontStyle* style);
35 
36 			FontStyle*	GetStyle(const char* style) const;
37 			FontStyle*	GetStyleMatchingFace(uint16 face) const;
38 			FontStyle*	GetStyleByID(uint16 face) const;
39 
40 			uint16		ID() const
41 							{ return fID; }
42 			uint32		Flags();
43 
44 			bool		HasStyle(const char* style) const;
45 			int32		CountStyles() const;
46 			FontStyle*	StyleAt(int32 index) const;
47 
48 private:
49 			FontStyle*	_FindStyle(const char* name) const;
50 
51 			BString		fName;
52 			BObjectList<FontStyle> fStyles;
53 			uint16		fID;
54 			uint16		fNextID;
55 			uint32		fFlags;
56 };
57 
58 #endif	// FONT_FAMILY_H_
59