1/*
2 * Copyright 2001-2009, 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 APP_FONT_MANAGER_H
10#define APP_FONT_MANAGER_H
11
12
13#include "FontManager.h"
14
15#include <Locker.h>
16
17
18#include <ft2build.h>
19#include FT_FREETYPE_H
20
21struct node_ref;
22
23
24// font areas should be less than 20MB
25#define MAX_FONT_DATA_SIZE_BYTES	20 * 1024 * 1024
26#define MAX_USER_FONTS				128
27
28/*!
29	\class AppFontManager AppFontManager.h
30	\brief Manager for application-added fonts in the font subsystem
31*/
32class AppFontManager : public FontManager, BLocker {
33public:
34								AppFontManager();
35
36			bool				Lock() { return BLocker::Lock(); }
37			void				Unlock() { BLocker::Unlock(); }
38			bool				IsLocked() const { return BLocker::IsLocked(); }
39
40			status_t			AddUserFontFromFile(const char* path, uint16 index, uint16 instance,
41									uint16& familyID, uint16& styleID);
42			status_t			AddUserFontFromMemory(const FT_Byte* fontAddress, size_t size,
43									uint16 index, uint16 instance,
44									uint16& familyID, uint16& styleID);
45			status_t			RemoveUserFont(uint16 familyID, uint16 styleID);
46
47private:
48			uint16				_NextID();
49
50private:
51			uint16				fNextID;
52};
53
54
55#endif	/* APP_FONT_MANAGER_H */
56