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