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