1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: font_ArchiveFont.h 4 5 Copyright (C)2009-2010 Nintendo Co., Ltd./HAL Laboratory, Inc. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Revision: 27535 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_FONT_FONT_ARCHIVE_FONT_H_ 17 #define NN_FONT_FONT_ARCHIVE_FONT_H_ 18 19 #include <nn/types.h> 20 #include <nn/font/font_ArchiveFontBase.h> 21 22 23 namespace nn { 24 namespace font { 25 26 //--------------------------------------------------------------------------- 27 //! @brief グリフグループが定義されているフォントリソースから、 28 //! 指定したグリフグループのみを抽出したフォントを構築します。 29 //--------------------------------------------------------------------------- 30 class ArchiveFont : public ArchiveFontBase 31 { 32 public: 33 /* ------------------------------------------------------------------------ 34 関数 35 ------------------------------------------------------------------------ */ 36 37 //! @name コンストラクタ / デストラクタ 38 //@{ 39 40 //! コンストラクタです。 41 ArchiveFont(); 42 43 //! デストラクタです。 44 virtual ~ArchiveFont(); 45 46 //@} 47 48 49 //! @name リソースの関連付け/解除 50 //@{ 51 52 //! @brief フォントを構築するのに必要なバッファサイズを計算します。 53 //! 54 //! @param[in] bfnt フォントリソースの先頭部分へのポインタ。 55 //! @param[in] glyphGroups ロードするグリフグループを指定する文字列。 56 //! 57 //! @return Construct() 関数または InitStreamingConstruct() 関数で、 58 //! フォントを構築する場合に必要なバッファのサイズを返します。@n 59 //! リソース @a bfnt が不正である等の理由で、 60 //! バッファサイズが計算できなかった場合は 0 を返します。 61 //! 62 static u32 GetRequireBufferSize( 63 const void* bfnt, 64 const char* glyphGroups = LOAD_GLYPH_ALL 65 ); 66 67 //! @brief アーカイブフォントからグリフグループを抽出しフォントを構築します。 68 //! 69 //! @param[out] pBuffer このインスタンスに関連付けるバッファへのポインタ。 70 //! 128byte アライメントされている必要があります。 71 //! @param[in] bufferSize @a pBuffer が指すバッファのサイズ。 72 //! @param[in] bfnt メモリ上にロード済みのバイナリリソース (bfnt) へのポインタ。 73 //! @param[in] glyphGroups ロードするグリフグループを指定する文字列。 74 //! 75 //! @return フォントの構築が成功したなら true を、そうでなければ false を返します。@n 76 //! アーカイブフォント @a bfnt が不正であったりバッファサイズが小さすぎると 77 //! 失敗します。 78 //! 79 bool Construct( 80 void* pBuffer, 81 u32 bufferSize, 82 const void* bfnt, 83 const char* glyphGroups = LOAD_GLYPH_ALL 84 ); 85 86 //! @brief アーカイブフォントから順次読み込みでグリフグループを抽出し、 87 //! フォントを構築するための初期化を行います。 88 //! @param[out] pContext 初期化するストリーミング構築コンテキストへのポインタ。 89 //! @param[out] pBuffer このインスタンスに関連付けるバッファへのポインタ。 90 //! 128byte アライメントされている必要があります。 91 //! @param[in] bufferSize @a pBuffer が指すバッファのサイズ。 92 //! @param[in] glyphGroups ロードするグリフグループを指定する文字列。 93 //! 94 void InitStreamingConstruct( 95 ConstructContext* pContext, 96 void* pBuffer, 97 u32 bufferSize, 98 const char* glyphGroups = LOAD_GLYPH_ALL 99 ); 100 101 //! @brief アーカイブフォントから順次読み込みでフォントを構築します。 102 //! 103 //! @param[out] pContext InitStreamingConstruct() 関数で初期化した 104 //! ストリーミング構築コンテキストへのポインタ。 105 //! @param[in] stream アーカイブフォントの一部を格納したバッファへのポインタ。 106 //! @param[in] streamSize @a stream が指すバッファに格納されているデータのバイト数。 107 //! 108 //! @return 構築処理の経過状態を返します。 109 //! 110 ConstructResult StreamingConstruct( 111 ConstructContext* pContext, 112 const void* stream, 113 u32 streamSize); 114 115 //! @brief フォントを破棄します。 116 //! 117 //! @return Construct() 関数または InitStreamingConstruct() 関数で、 118 //! このインスタンスに割り当てたメモリ領域へのポインタを返します。 119 //! 120 void* Destroy(); 121 122 //@} 123 124 //! @name 文字情報の取得 125 //@{ 126 127 //! @brief グリフデータを取得します。 128 //! 129 //! @param[out] pGlyph グリフデータを受け取るバッファへのポインタ 130 //! @param[in] c グリフデータを取得する文字の文字コード 131 //! 132 virtual void GetGlyph( 133 Glyph* pGlyph, 134 CharCode c 135 ) const; 136 137 //@} 138 139 private: 140 /* ------------------------------------------------------------------------ 141 関数 142 ------------------------------------------------------------------------ */ 143 //---- グリフインデックス 144 145 //! @brief グリフインデックスに対応するグリフデータを取得します。 146 //! 147 //! @param[out] pGlyph グリフデータを格納するバッファへのポインタ。 148 //! @param[in] index 取得するグリフデータのグリフインデックス。 149 //! 150 void GetGlyphFromIndex( 151 Glyph* pGlyph, 152 GlyphIndex index 153 ) const; 154 }; 155 156 } // namespace font 157 } // namespace nn 158 159 #endif // NN_FONT_FONT_ARCHIVE_FONT_H_ 160