Ion
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ion::text::FontManager Class Reference

The FontManager provides the main interface for fonts used to create text strings to render. More...

#include "fontmanager.h"

Inheritance diagram for ion::text::FontManager:
Collaboration diagram for ion::text::FontManager:

Public Member Functions

 FontManager ()
 FontManager functions. More...
 
void AddFont (const FontPtr &font)
 Adds a Font to the manager. More...
 
const FontPtr AddFont (const std::string &name, size_t size_in_pixels, size_t sdf_padding, const void *data, size_t data_size)
 Constructs and adds a font to the manager. More...
 
const FontPtr AddFontFromZipasset (const std::string &font_name, const std::string &zipasset_name, size_t size_in_pixels, size_t sdf_padding)
 Constructs and adds a font with name font_name from the zipasset with name zipasset_name. More...
 
const FontPtr FindFont (const std::string &name, size_t size_in_pixels, size_t sdf_padding) const
 Returns the Font associated with the given name and size. More...
 
void CacheFontImage (const std::string &key, const FontImagePtr &font_image)
 This can be used to cache FontImage instances in the manager. More...
 
void CacheFontImage (const FontPtr &font, const FontImagePtr &font_image)
 This can be used to cache FontImage instances in the manager. More...
 
const FontImagePtr GetCachedFontImage (const std::string &key) const
 Returns the FontImage associated with the given key. It may be NULL. More...
 
const FontImagePtr GetCachedFontImage (const FontPtr &font) const
 Returns the FontImage associated with the given Font. It may be NULL. More...
 
const AllocatorPtr & GetAllocator () const
 Returns the Allocator that was used for the instance. More...
 
const AllocatorPtr & GetNonNullAllocator () const
 Return our allocator, or the default allocator if the instance was declared on the stack. More...
 
const AllocatorPtr & GetAllocatorForLifetime (AllocationLifetime lifetime) const
 Convenience function that returns the Allocator to use to allocate an object with a specific lifetime. More...
 
void * operator new (size_t size)
 The standard no-parameter new operator uses the default Allocator. More...
 
void * operator new (size_t size, AllocationLifetime lifetime)
 This overloaded version of the new operator uses the AllocationManager's default Allocator for the specified lifetime. More...
 
void * operator new (size_t size, const AllocatorPtr &allocator)
 This overloaded version of the new operator takes the Allocator to use directly as a parameter. More...
 
void * operator new (size_t size, const AllocatorPtr &allocator, void *ptr)
 Special operator new for using placement new with Allocatables. More...
 
void * operator new (size_t size, void *ptr)
 The placement new operator is defined conventionally. More...
 
void operator delete (void *ptr)
 Define the delete operator to use specialized functions dealing with an Allocator. More...
 
void operator delete (void *ptr, AllocationLifetime lifetime)
 Windows requires these (or it issues C4291 warnings). More...
 
void operator delete (void *ptr, const AllocatorPtr &allocator)
 
void operator delete (void *ptr, void *ptr2)
 The placement delete operator does nothing, as usual. More...
 
int GetRefCount () const
 GetRefCount() is part of the interface necessary for SharedPtr. More...
 

Protected Member Functions

 ~FontManager () override
 The destructor is protected because all base::Referent classes must have protected or private destructors. More...
 

Detailed Description

The FontManager provides the main interface for fonts used to create text strings to render.

It also provides a way to cache FontImage instances for reuse.

Definition at line 36 of file fontmanager.h.

Constructor & Destructor Documentation

ion::text::FontManager::FontManager ( )

FontManager functions.

Definition at line 40 of file fontmanager.cc.

ion::text::FontManager::~FontManager ( )
overrideprotected

The destructor is protected because all base::Referent classes must have protected or private destructors.

Definition at line 44 of file fontmanager.cc.

Member Function Documentation

void ion::text::FontManager::AddFont ( const FontPtr font)

Adds a Font to the manager.

It will then be accessible via FindFont(). This does nothing if the Font is NULL.

Definition at line 46 of file fontmanager.cc.

References ion::base::SharedPtr< T >::Get().

Referenced by AddFont(), and AddFontFromZipasset().

const FontPtr ion::text::FontManager::AddFont ( const std::string &  name,
size_t  size_in_pixels,
size_t  sdf_padding,
const void *  data,
size_t  data_size 
)

Constructs and adds a font to the manager.

If a font with the given specs already exists, just returns the already existing font. This will choose the correct Font subclass for the current platform. If data is non-NULL and data_size non-zero, data will be read as TrueType data of length data_size to build the font. Otherwise, behavior depends on specific font implementations, see CoreTextFont and FreeTypeFont.

Definition at line 51 of file fontmanager.cc.

References AddFont(), FindFont(), ion::base::SharedPtr< T >::Get(), and ion::base::SharedPtr< T >::Reset().

const FontPtr ion::text::FontManager::AddFontFromZipasset ( const std::string &  font_name,
const std::string &  zipasset_name,
size_t  size_in_pixels,
size_t  sdf_padding 
)

Constructs and adds a font with name font_name from the zipasset with name zipasset_name.

If a font with the given specs already exists, just returns the already existing font.

Definition at line 69 of file fontmanager.cc.

References AddFont(), ion::port::ERROR, FindFont(), ion::base::SharedPtr< T >::Get(), ion::base::ZipAssetManager::GetFileData(), ion::base::IsInvalidReference(), and LOG.

void ion::text::FontManager::CacheFontImage ( const std::string &  key,
const FontImagePtr font_image 
)
inline

This can be used to cache FontImage instances in the manager.

It associates a FontImage with a client-defined string key. Passing a NULL FontImage pointer removes the entry for that key.

Definition at line 69 of file fontmanager.h.

References ion::base::SharedPtr< T >::Get().

void ion::text::FontManager::CacheFontImage ( const FontPtr font,
const FontImagePtr font_image 
)
inline

This can be used to cache FontImage instances in the manager.

It associates a FontImage with a string key that Ion derives based on the provided font. Passing a NULL FontImage pointer removes the entry for that key.

Definition at line 80 of file fontmanager.h.

const FontPtr ion::text::FontManager::FindFont ( const std::string &  name,
size_t  size_in_pixels,
size_t  sdf_padding 
) const

Returns the Font associated with the given name and size.

This will return a NULL pointer unless the font was previously added with AddFont().

Definition at line 88 of file fontmanager.cc.

Referenced by AddFont(), and AddFontFromZipasset().

const AllocatorPtr& ion::base::Allocatable::GetAllocator ( ) const
inlineinherited

Returns the Allocator that was used for the instance.

This will be NULL if the instance was declared on the stack or created with normal placement new.

Definition at line 68 of file allocatable.h.

References allocator_.

Referenced by ion::base::DataContainer::CreateAndCopy(), ion::text::DynamicFontImage::FindContainingImageDataIndex(), and ion::text::DynamicFontImage::FindImageDataIndex().

const AllocatorPtr& ion::base::Allocatable::GetAllocatorForLifetime ( AllocationLifetime  lifetime) const
inlineinherited
const FontImagePtr ion::text::FontManager::GetCachedFontImage ( const std::string &  key) const
inline

Returns the FontImage associated with the given key. It may be NULL.

Definition at line 85 of file fontmanager.h.

const FontImagePtr ion::text::FontManager::GetCachedFontImage ( const FontPtr font) const
inline

Returns the FontImage associated with the given Font. It may be NULL.

Definition at line 91 of file fontmanager.h.

const AllocatorPtr& ion::base::Allocatable::GetNonNullAllocator ( ) const
inlineinherited

Return our allocator, or the default allocator if the instance was declared on the stack.

Definition at line 72 of file allocatable.h.

References allocator_, and ion::base::AllocationManager::GetNonNullAllocator().

int ion::base::Shareable::GetRefCount ( ) const
inlineinherited

GetRefCount() is part of the interface necessary for SharedPtr.

Definition at line 34 of file shareable.h.

Referenced by ion::base::Notifier::RemoveReceiver().

void ion::base::Allocatable::operator delete ( void *  ptr)
inlineinherited

Define the delete operator to use specialized functions dealing with an Allocator.

Definition at line 109 of file allocatable.h.

void ion::base::Allocatable::operator delete ( void *  ptr,
AllocationLifetime  lifetime 
)
inlineinherited

Windows requires these (or it issues C4291 warnings).

Definition at line 112 of file allocatable.h.

void ion::base::Allocatable::operator delete ( void *  ptr,
const AllocatorPtr allocator 
)
inlineinherited

Definition at line 113 of file allocatable.h.

void ion::base::Allocatable::operator delete ( void *  ptr,
void *  ptr2 
)
inlineinherited

The placement delete operator does nothing, as usual.

Definition at line 118 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size)
inlineinherited

The standard no-parameter new operator uses the default Allocator.

Definition at line 84 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
AllocationLifetime  lifetime 
)
inlineinherited

This overloaded version of the new operator uses the AllocationManager's default Allocator for the specified lifetime.

Definition at line 88 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
const AllocatorPtr allocator 
)
inlineinherited

This overloaded version of the new operator takes the Allocator to use directly as a parameter.

If the Allocator pointer is NULL, this uses the default Allocator.

Definition at line 95 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
const AllocatorPtr allocator,
void *  ptr 
)
inlineinherited

Special operator new for using placement new with Allocatables.

Definition at line 100 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
void *  ptr 
)
inlineinherited

The placement new operator is defined conventionally.

Definition at line 105 of file allocatable.h.


The documentation for this class was generated from the following files: