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