1 /*---------------------------------------------------------------------------* 2 Project: NintendoWare 3 File: lyt_FontContainer.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: 27716 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NW_LYT_FONTCONTAINER_H_ 17 #define NW_LYT_FONTCONTAINER_H_ 18 19 #include <nw/types.h> 20 21 #include <nw/ut/ut_LinkList.h> 22 #include <nw/lyt/lyt_ResourceAccessor.h> 23 #include <cstddef> 24 25 namespace nw 26 { 27 namespace lyt 28 { 29 30 //--------------------------------------------------------------------------- 31 //! :private 32 //! 33 //! @brief フォントオブジェクトを保持するクラスです。 34 //! 35 //! @sa FontContainer 36 //! 37 //! @since 2009/09/18 初版。 38 //--------------------------------------------------------------------------- 39 class FontRefLink 40 { 41 public: 42 //! フォントリソース名の最大です。 43 static const int FONTNAMEBUF_MAX = 128; 44 45 //---------------------------------------- 46 //! @name コンストラクタ/デストラクタ 47 //@{ 48 49 //! @brief コンストラクタです。 50 //! 51 //! @since 2009/09/18 初版。 52 //! 53 FontRefLink(); 54 55 //! @brief デストラクタです。 56 //! 57 //! @details 58 //! 所有の指定されたフォントオブジェクトを破棄します。 59 //! 60 //! @since 2009/09/18 初版。 61 //! @date 2010/01/26 所有の指定されたフォントオブジェクトは破棄する仕様に変更しました。 62 //! 63 ~FontRefLink(); 64 65 //@} 66 67 //---------------------------------------- 68 //! @name 設定/取得 69 //@{ 70 71 //! @brief 情報を設定します。 72 //! 73 //! @param name フォントリソースの名前です。 74 //! @param pFont フォントオブジェクトへのポインタです。 75 //! @param own コンテナがフォントオブジェクトを所有するか指定します。 76 //! true を指定した場合にはコンテナがフォントオブジェクトを破棄します。 77 //! 78 //! @since 2009/09/18 初版。 79 //! @date 2010/01/26 own 引数を追加しました。 80 //! 81 void Set( 82 const char* name, 83 font::Font* pFont, 84 bool own 85 ); 86 87 //! @brief 関連付けられているフォント名を取得します。 88 //! 89 //! @return 関連付けられているフォント名を返します。 90 //! 91 //! @since 2009/09/18 初版。 92 //! GetFontName()93 const char* GetFontName() const 94 { 95 return m_FontName; 96 } 97 98 //! @brief 設定されているフォントオブジェクトを取得します。 99 //! 100 //! @return フォントオブジェクトへのポインタを返します。 101 //! 102 //! @since 2009/09/18 初版。 103 //! GetFont()104 font::Font* GetFont() const 105 { 106 return m_pFont; 107 } 108 109 //@} 110 111 //! :private 112 //! リストのリンク情報です。 113 ut::LinkListNode m_Link; 114 115 protected: 116 //! @details :private 117 char m_FontName[FONTNAMEBUF_MAX]; 118 119 //! @details :private 120 font::Font* m_pFont; 121 122 //! @details :private 123 bool m_Own; 124 }; 125 126 //--------------------------------------------------------------------------- 127 //! :category リソースアクセサ 128 //! 129 //! @brief フォントを保持するクラスです。 130 //! 131 //! @details 132 //! ResourceAccessor の実装でフォントを保持するのに利用されます。 133 //! 134 //! @sa ResourceAccessor 135 //! 136 //! @since 2010/01/26 初版。 137 //--------------------------------------------------------------------------- 138 class FontContainer : public ut::LinkList<FontRefLink, offsetof(FontRefLink, m_Link)> 139 { 140 public: 141 //---------------------------------------- 142 //! @name コンストラクタ/デストラクタ 143 //@{ 144 145 //! @brief デストラクタです。 146 //! 147 //! @details 148 //! 所有しているフォントオブジェクトも破棄します。 149 //! 150 //! @since 2010/01/26 初版。 151 //! 152 ~FontContainer(); 153 154 // @} 155 156 //---------------------------------------- 157 //! @name 登録/破棄 158 //@{ 159 160 //! @brief 登録を抹消します。 161 //! 162 //! @details 163 //! 所有しているフォントオブジェクトを破棄します。 164 //! 165 //! @since 2010/01/26 初版。 166 //! 167 void Finalize(); 168 169 //! @brief フォントを登録します。 170 //! 171 //! @param name フォントリソースの名前です。 172 //! @param pFont フォントオブジェクトです。 173 //! @param own フォントオブジェクトを所有するか指定します。 174 //! true を指定した場合にはコンテナがフォントオブジェクトを破棄します。 175 //! 176 //! @return 登録キーを返します。キーは登録の抹消に使用します。 177 //! 178 //! @since 2010/01/26 初版。 179 //! 180 FontKey RegistFont(const char* name, font::Font* pFont, bool own); 181 182 //! @brief フォントの登録を抹消します。 183 //! 184 //! @param key 登録時に取得した登録キーを指定します。 185 //! 186 //! @since 2010/01/26 初版。 187 //! 188 void UnregistFont(FontKey key); 189 190 //@} 191 192 //---------------------------------------- 193 //! @name 検索 194 //@{ 195 196 //! @brief フォントを検索します。 197 //! 198 //! @param name 検索するフォントの名前です。 199 //! 200 //! @return 見つかったフォント、または NULL を返します。 201 //! 202 //! @since 2010/01/26 初版。 203 //! 204 nw::font::Font* FindFontByName( 205 const char* name 206 ); 207 208 //! @brief フォントを検索します。 209 //! 210 //! @param key 検索するフォントの登録キーです。 211 //! 212 //! @return 見つかったフォント、または NULL を返します。 213 //! 214 //! @since 2010/11/30 初版。 215 //! 216 nw::font::Font* FindFontByKey( 217 FontKey key 218 ); 219 220 //@} 221 }; 222 223 } // namespace lyt 224 } // namespace nw 225 226 /* NW_LYT_FONTCONTAINER_H_ */ 227 #endif 228