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