1 /*---------------------------------------------------------------------------* 2 Project: NintendoWare 3 File: lyt_ResourceAccessor.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: 23662 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NW_LYT_RESOURCEACCESSOR_H_ 17 #define NW_LYT_RESOURCEACCESSOR_H_ 18 19 #include <nw/lyt/lyt_Types.h> 20 21 namespace nw 22 { 23 namespace font 24 { 25 26 class Font; 27 28 } 29 30 namespace lyt 31 { 32 33 //! @name リソースアクセサ 34 //@{ 35 36 //--------------------------------------------------------------------------- 37 //! @brief リソースのタイプを表します。 38 //! 39 //! @sa res::RESOURCETYPE_LAYOUT 40 //! @sa res::RESOURCETYPE_ANIMATION 41 //! @sa res::RESOURCETYPE_TEXTURE 42 //! @sa res::RESOURCETYPE_FONT 43 //! @sa res::RESOURCETYPE_ARCHIVEFONT 44 //! 45 //! @since 2009/09/18 初版。 46 //--------------------------------------------------------------------------- 47 typedef u32 ResType; 48 49 //@} 50 51 //--------------------------------------------------------------------------- 52 //! :category リソースアクセサ 53 //! 54 //! @brief リソースにアクセスするための基底クラスです。 55 //! 56 //! @since 2009/09/18 初版。 57 //--------------------------------------------------------------------------- 58 class ResourceAccessor 59 { 60 //---------------------------------------- 61 //! @name コンストラクタ/デストラクタ 62 //@{ 63 64 protected: 65 //! @brief コンストラクタです。 66 //! 67 //! @since 2009/09/18 初版。 68 //! 69 ResourceAccessor(); 70 71 public: 72 //! @brief デストラクタです。 73 //! 74 //! @details 75 //! 導出クラスでは管理下のフォントとテクスチャの破棄を 76 //! 行わなければなりません。 77 //! 78 //! @date 2010/01/26 フォントとテクスチャの破棄について加筆しました。 79 //! @since 2009/09/18 初版。 80 //! 81 virtual ~ResourceAccessor(); 82 83 //@} 84 85 //---------------------------------------- 86 //! @name 取得 87 //@{ 88 89 //! @brief リソースを取得します。 90 //! 91 //! @param resType リソースの種類です。 92 //! @param name リソースの名前です。 93 //! @param pSize リソースのサイズを受け取る変数へのポインタです。 94 //! サイズを受け取る必要がない場合は NULL を渡してください。 95 //! 96 //! @return 97 //! リソースの先頭アドレスへのポインタを返します。 98 //! リソースが見つからなかった場合は NULL を返します。 99 //! 100 //! @since 2009/09/18 初版。 101 //! 102 virtual void* GetResource( 103 ResType resType, 104 const char* name, 105 u32* pSize = 0 106 ) = 0; 107 108 //! @brief フォントを取得します。 109 //! 110 //! @details 111 //! name で指定したフォントリソース名と関連付けられた 112 //! フォントオブジェクトを取得します。 113 //! 114 //! フォントを所有していない場合にはロードを試みます。 115 //! 116 //! 実装には LoadFont() を利用することができます。 117 //! 118 //! @param name フォントリソースの名前です。 119 //! 120 //! @return フォントへのポインタを返します。 121 //! フォントを取得できなかった場合には NULL を返します。 122 //! 123 //! @sa LoadFont 124 //! 125 //! @since 2010/01/26 初版。 126 //! @date 2010/07/16 純粋仮想関数に変更しました。 127 //! 128 virtual font::Font* GetFont(const char* name) = 0; 129 130 //! @brief テクスチャ情報を取得します。 131 //! 132 //! @details 133 //! name で指定したテクスチャリソース名と関連付けられた 134 //! テクスチャ情報を取得します。 135 //! 136 //! テクスチャを所有していない場合にはロードを試みます。 137 //! 138 //! 実装には LoadTexture() を利用することができます。 139 //! 140 //! @param name テクスチャリソースの名前です。 141 //! 142 //! @return テクスチャ情報を返します。 143 //! テクスチャを所有していない場合にはロードを試みます。 144 //! ロードできなかった場合にはテクスチャオブジェクトには無効な値 145 //! (TextureInfo::INVALID) が設定されます。 146 //! 147 //! @sa LoadTexture 148 //! 149 //! @since 2009/09/18 初版。 150 //! @date 2010/01/26 非バーチャル関数に変更しました。 151 //! @date 2010/06/18 純粋仮想関数に変更しました。 152 //! 153 virtual const TextureInfo GetTexture(const char* name) = 0; 154 155 //@} 156 157 protected: 158 //! @brief テクスチャをロードします。 159 //! 160 //! @details 161 //! テクスチャが初めて参照されたときに GetTexture() から呼び出されます。 162 //! 163 //! GetResource() でテクスチャリソースを取得し、 164 //! lyt::LoadTexture() で GL にロードします。 165 //! 166 //! @param name テクスチャリソースの名前です。 167 //! 168 //! @return テクスチャの情報を返します。 169 //! 170 //! @sa GetTexture 171 //! @sa lyt::LoadTexture 172 //! 173 //! @since 2010/06/18 初版。 174 //! 175 virtual const TextureInfo LoadTexture(const char* name); 176 177 //! @brief リソースフォントを生成します。 178 //! 179 //! @details 180 //! フォントが初めて参照されたときに GetFont() から呼び出されます。 181 //! 182 //! font::ResFont を生成し GetResource() で取得した 183 //! フォントリソースを設定します。 184 //! 185 //! @param name フォントリソースの名前です。 186 //! 187 //! @return font::ResFont へのポインタを返します。 188 //! 189 //! @sa GetFont 190 //! 191 //! @since 2010/07/16 初版。 192 //! 193 virtual font::Font* LoadFont(const char* name); 194 }; 195 196 } // namespace nw::lyt 197 } // namespace nw 198 199 #endif // NW_LYT_RESOURCEACCESSOR_H_ 200