1 /*---------------------------------------------------------------------------* 2 Project: NintendoWare 3 File: lyt_ArcUtil.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_ARCUTIL_H_ 19 #define NW_LYT_ARCUTIL_H_ 20 21 #include <nw/lyt/lyt_Arc.h> 22 #include <nw/lyt/lyt_ResourceAccessor.h> 23 #include <nw/lyt/lyt_Resources.h> 24 #include <nw/lyt/lyt_Types.h> 25 26 namespace nw 27 { 28 namespace lyt 29 { 30 31 //--------------------------------------------------------------------------- 32 //! :category リソースアクセサ 33 //! 34 //! @brief アーカイブファイルへアクセスするユーティリティクラスです。 35 //! 36 //! @since 2011/02/28 初版。 37 //--------------------------------------------------------------------------- 38 class ArcUtil 39 { 40 public: 41 //! @brief テクスチャリソースのアーカイブディレクトリを開きます。 42 //! 43 //! @details 44 //! ディレクトリを開いた後は ReadTextureDir() でテクスチャリソースの 45 //! ディレクトリエントリ情報を取得します。 46 //! 47 //! 本関数は内部で ARCChangeDir(), ARCOpenDir() を呼び出します。 48 //! 使用後は ARCCloseDir() でディレクトリを閉じてください。 49 //! 50 //! @param[in,out] pArcHandle ARCHandle を指定します。 51 //! @param[in] pRootName リソース検索のルートとなるディレクトリ名です。 52 //! @param[out] pDir ディレクトリ情報が格納されます。 53 //! 54 //! @return 成功した場合には true を返します。 55 //! 56 //! @sa ReadTextureDir 57 //! @sa ARCChangeDir 58 //! @sa ARCOpenDir 59 //! @sa ARCCloseDir 60 //! 61 //! @since 2011/02/28 初版。 62 //! OpenTextureDir(ARCHandle * pArcHandle,const wchar_t * pRootName,ARCDir * pDir)63 static bool OpenTextureDir( 64 ARCHandle* pArcHandle, 65 const wchar_t* pRootName, 66 ARCDir* pDir) 67 { 68 return OpenResourceDir( 69 pArcHandle, 70 pRootName, 71 res::RESOURCETYPE_TEXTURE, 72 pDir); 73 } 74 75 //! @brief テクスチャリソースのディレクトリエントリ情報を取得します。 76 //! 77 //! @details 78 //! OpenTextureDir() で開いたディレクトリ内のテクスチャリソースの 79 //! ディレクトリエントリ情報を取得します。 80 //! 81 //! リソースファイルの拡張子がテクスチャリソースと一致しない場合には 82 //! 読み飛ばします。 83 //! 84 //! 本関数は内部で ARCReadDir() を呼び出します。 85 //! 86 //! @param[in,out] pDir ARCDir を指定します。 87 //! @param[out] pDirEnt ディレクトリエントリ情報が格納されます。 88 //! 89 //! @return 成功した場合には true を返します。 90 //! 91 //! @sa OpenTextureDir 92 //! 93 //! @since 2011/02/28 初版。 94 //! ReadTextureDir(ARCDir * pDir,ARCDirEntry * pDirEnt)95 static bool ReadTextureDir( 96 ARCDir* pDir, 97 ARCDirEntry* pDirEnt) 98 { 99 return ReadResourceDir(pDir, L".bclim", 6, pDirEnt); 100 } 101 102 //! @brief フォントリソースのアーカイブディレクトリを開きます。 103 //! 104 //! @details 105 //! ディレクトリを開いた後は ReadFontDir() でフォントリソースの 106 //! ディレクトリエントリ情報を取得します。 107 //! 108 //! 本関数は内部で ARCChangeDir(), ARCOpenDir() を呼び出します。 109 //! 使用後は ARCCloseDir() でディレクトリを閉じてください。 110 //! 111 //! @param[in,out] pArcHandle ARCHandle を指定します。 112 //! @param[in] pRootName リソース検索のルートとなるディレクトリ名です。 113 //! @param[out] pDir ディレクトリ情報が格納されます。 114 //! 115 //! @return 成功した場合には true を返します。 116 //! 117 //! @sa ReadFontDir 118 //! @sa ARCChangeDir 119 //! @sa ARCOpenDir 120 //! @sa ARCCloseDir 121 //! 122 //! @since 2011/02/28 初版。 123 //! OpenFontDir(ARCHandle * pArcHandle,const wchar_t * pRootName,ARCDir * pDir)124 static bool OpenFontDir( 125 ARCHandle* pArcHandle, 126 const wchar_t* pRootName, 127 ARCDir* pDir) 128 { 129 return OpenResourceDir( 130 pArcHandle, 131 pRootName, 132 res::RESOURCETYPE_FONT, 133 pDir); 134 } 135 136 //! @brief フォントリソースのディレクトリエントリ情報を取得します。 137 //! 138 //! @details 139 //! OpenFontDir() で開いたディレクトリ内のフォントリソースの 140 //! ディレクトリエントリ情報を取得します。 141 //! 142 //! リソースファイルの拡張子がフォントリソースと一致しない場合には 143 //! 読み飛ばします。 144 //! 145 //! 本関数は内部で ARCReadDir() を呼び出します。 146 //! 147 //! @param[in,out] pDir ARCDir を指定します。 148 //! @param[out] pDirEnt ディレクトリエントリ情報が格納されます。 149 //! 150 //! @return 成功した場合には true を返します。 151 //! 152 //! @sa OpenFontDir 153 //! 154 //! @since 2011/02/28 初版。 155 //! ReadFontDir(ARCDir * pDir,ARCDirEntry * pDirEnt)156 static bool ReadFontDir( 157 ARCDir* pDir, 158 ARCDirEntry* pDirEnt) 159 { 160 return ReadResourceDir(pDir, L".bcfnt", 6, pDirEnt); 161 } 162 163 //! @details :private 164 static bool OpenResourceDir( 165 ARCHandle* pArcHandle, 166 const wchar_t* pRootName, 167 ResType resType, 168 ARCDir* pDir); 169 170 //! @details :private 171 static bool ReadResourceDir( 172 ARCDir* pDir, 173 const wchar_t* pExtStr, 174 u32 extLen, 175 ARCDirEntry* pDirEnt); 176 }; 177 178 } // namespace nw::lyt 179 } // namespace nw 180 181 #endif // NW_LYT_ARCUTIL_H_ 182