* Copyright 2001-2016, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
* DarkWyrm <bpmagic@columbus.rr.com>
* Axel DΓΆrfler, axeld@pinc-software.de
*/
#include "AppFontManager.h"
#include <new>
#include <stdint.h>
#include <Debug.h>
#include <Entry.h>
#include "FontFamily.h"
#ifdef TRACE_FONT_MANAGER
# define FTRACE(x) debug_printf x
#else
# define FTRACE(x) ;
#endif
extern FT_Library gFreeTypeLibrary;
The result of a collision would be that the global font is selected
rather than the application font.
*/
AppFontManager::AppFontManager()
: BLocker("AppFontManager")
{
fNextID = UINT16_MAX;
}
*/
status_t
AppFontManager::AddUserFontFromFile(const char* path, uint16 index, uint16 instance,
uint16& familyID, uint16& styleID)
{
ASSERT(IsLocked());
BEntry entry;
status_t status = entry.SetTo(path);
if (status != B_OK)
return status;
node_ref nodeRef;
status = entry.GetNodeRef(&nodeRef);
if (status < B_OK)
return status;
FT_Face face;
FT_Error error = FT_New_Face(gFreeTypeLibrary, path, index | (instance << 16), &face);
if (error != 0)
return B_ERROR;
status = _AddFont(face, nodeRef, path, familyID, styleID);
return status;
}
*/
status_t
AppFontManager::AddUserFontFromMemory(const FT_Byte* fontAddress, size_t size, uint16 index,
uint16 instance, uint16& familyID, uint16& styleID)
{
ASSERT(IsLocked());
node_ref nodeRef;
status_t status;
FT_Face face;
FT_Error error = FT_New_Memory_Face(gFreeTypeLibrary, fontAddress, size,
index | (instance << 16), &face);
if (error != 0)
return B_ERROR;
status = _AddFont(face, nodeRef, "", familyID, styleID);
return status;
}
*/
status_t
AppFontManager::RemoveUserFont(uint16 familyID, uint16 styleID)
{
return _RemoveFont(familyID, styleID) != NULL ? B_OK : B_BAD_VALUE;
}
uint16
AppFontManager::_NextID()
{
return fNextID--;
}