/*---------------------------------------------------------------------------* Project: Horizon File: font_ArchiveFont.h Copyright (C)2009-2010 Nintendo Co., Ltd./HAL Laboratory, Inc. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Revision: 27535 $ *---------------------------------------------------------------------------*/ #ifndef NN_FONT_FONT_ARCHIVE_FONT_H_ #define NN_FONT_FONT_ARCHIVE_FONT_H_ #include #include namespace nn { namespace font { //--------------------------------------------------------------------------- //! @brief グリフグループが定義されているフォントリソースから、 //! 指定したグリフグループのみを抽出したフォントを構築します。 //--------------------------------------------------------------------------- class ArchiveFont : public ArchiveFontBase { public: /* ------------------------------------------------------------------------ 関数 ------------------------------------------------------------------------ */ //! @name コンストラクタ / デストラクタ //@{ //! コンストラクタです。 ArchiveFont(); //! デストラクタです。 virtual ~ArchiveFont(); //@} //! @name リソースの関連付け/解除 //@{ //! @brief フォントを構築するのに必要なバッファサイズを計算します。 //! //! @param[in] bfnt フォントリソースの先頭部分へのポインタ。 //! @param[in] glyphGroups ロードするグリフグループを指定する文字列。 //! //! @return Construct() 関数または InitStreamingConstruct() 関数で、 //! フォントを構築する場合に必要なバッファのサイズを返します。@n //! リソース @a bfnt が不正である等の理由で、 //! バッファサイズが計算できなかった場合は 0 を返します。 //! static u32 GetRequireBufferSize( const void* bfnt, const char* glyphGroups = LOAD_GLYPH_ALL ); //! @brief アーカイブフォントからグリフグループを抽出しフォントを構築します。 //! //! @param[out] pBuffer このインスタンスに関連付けるバッファへのポインタ。 //! 128byte アライメントされている必要があります。 //! @param[in] bufferSize @a pBuffer が指すバッファのサイズ。 //! @param[in] bfnt メモリ上にロード済みのバイナリリソース (bfnt) へのポインタ。 //! @param[in] glyphGroups ロードするグリフグループを指定する文字列。 //! //! @return フォントの構築が成功したなら true を、そうでなければ false を返します。@n //! アーカイブフォント @a bfnt が不正であったりバッファサイズが小さすぎると //! 失敗します。 //! bool Construct( void* pBuffer, u32 bufferSize, const void* bfnt, const char* glyphGroups = LOAD_GLYPH_ALL ); //! @brief アーカイブフォントから順次読み込みでグリフグループを抽出し、 //! フォントを構築するための初期化を行います。 //! @param[out] pContext 初期化するストリーミング構築コンテキストへのポインタ。 //! @param[out] pBuffer このインスタンスに関連付けるバッファへのポインタ。 //! 128byte アライメントされている必要があります。 //! @param[in] bufferSize @a pBuffer が指すバッファのサイズ。 //! @param[in] glyphGroups ロードするグリフグループを指定する文字列。 //! void InitStreamingConstruct( ConstructContext* pContext, void* pBuffer, u32 bufferSize, const char* glyphGroups = LOAD_GLYPH_ALL ); //! @brief アーカイブフォントから順次読み込みでフォントを構築します。 //! //! @param[out] pContext InitStreamingConstruct() 関数で初期化した //! ストリーミング構築コンテキストへのポインタ。 //! @param[in] stream アーカイブフォントの一部を格納したバッファへのポインタ。 //! @param[in] streamSize @a stream が指すバッファに格納されているデータのバイト数。 //! //! @return 構築処理の経過状態を返します。 //! ConstructResult StreamingConstruct( ConstructContext* pContext, const void* stream, u32 streamSize); //! @brief フォントを破棄します。 //! //! @return Construct() 関数または InitStreamingConstruct() 関数で、 //! このインスタンスに割り当てたメモリ領域へのポインタを返します。 //! void* Destroy(); //@} //! @name 文字情報の取得 //@{ //! @brief グリフデータを取得します。 //! //! @param[out] pGlyph グリフデータを受け取るバッファへのポインタ //! @param[in] c グリフデータを取得する文字の文字コード //! virtual void GetGlyph( Glyph* pGlyph, CharCode c ) const; //@} private: /* ------------------------------------------------------------------------ 関数 ------------------------------------------------------------------------ */ //---- グリフインデックス //! @brief グリフインデックスに対応するグリフデータを取得します。 //! //! @param[out] pGlyph グリフデータを格納するバッファへのポインタ。 //! @param[in] index 取得するグリフデータのグリフインデックス。 //! void GetGlyphFromIndex( Glyph* pGlyph, GlyphIndex index ) const; }; } // namespace font } // namespace nn #endif // NN_FONT_FONT_ARCHIVE_FONT_H_