xref: /haiku/src/servers/app/font/FontCache.h (revision a127b88ecbfab58f64944c98aa47722a18e363b2)
1 /*
2  * Copyright 2007, Haiku. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Stephan Aßmus <superstippi@gmx.de>
7  */
8 
9 #ifndef FONT_CACHE_H
10 #define FONT_CACHE_H
11 
12 #include "FontCacheEntry.h"
13 #include "HashMap.h"
14 #include "HashString.h"
15 #include "MultiLocker.h"
16 #include "ServerFont.h"
17 
18 
19 class FontCache : public MultiLocker {
20  public:
21 								FontCache();
22 	virtual						~FontCache();
23 
24 	// global instance
25 	static	FontCache*			Default();
26 
27 			FontCacheEntry*		FontCacheEntryFor(const ServerFont& font,
28 									bool forceVector);
29 			void				Recycle(FontCacheEntry* entry);
30 
31  private:
32 			void				_ConstrainEntryCount();
33 
34 	static	FontCache			sDefaultInstance;
35 
36 	typedef HashMap<HashString, BReference<FontCacheEntry> > FontMap;
37 
38 			FontMap				fFontCacheEntries;
39 };
40 
41 #endif // FONT_CACHE_H
42