/*---------------------------------------------------------------------------* Project: NintendoWare File: lyt_ArcUtil.h Copyright (C)2009-2011 Nintendo/HAL Laboratory, Inc. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo and/or its licensed developers and are protected by national and international copyright laws. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. The content herein is highly confidential and should be handled accordingly. $Revision: 31311 $ *---------------------------------------------------------------------------*/ #ifndef NW_LYT_ARCUTIL_H_ #define NW_LYT_ARCUTIL_H_ #include #include #include #include namespace nw { namespace lyt { //--------------------------------------------------------------------------- //! :category リソースアクセサ //! //! @brief アーカイブファイルへアクセスするユーティリティクラスです。 //! //! @since 2011/02/28 初版。 //--------------------------------------------------------------------------- class ArcUtil { public: //! @brief テクスチャリソースのアーカイブディレクトリを開きます。 //! //! @details //! ディレクトリを開いた後は ReadTextureDir() でテクスチャリソースの //! ディレクトリエントリ情報を取得します。 //! //! 本関数は内部で ARCChangeDir(), ARCOpenDir() を呼び出します。 //! 使用後は ARCCloseDir() でディレクトリを閉じてください。 //! //! @param[in,out] pArcHandle ARCHandle を指定します。 //! @param[in] pRootName リソース検索のルートとなるディレクトリ名です。 //! @param[out] pDir ディレクトリ情報が格納されます。 //! //! @return 成功した場合には true を返します。 //! //! @sa ReadTextureDir //! @sa ARCChangeDir //! @sa ARCOpenDir //! @sa ARCCloseDir //! //! @since 2011/02/28 初版。 //! static bool OpenTextureDir( ARCHandle* pArcHandle, const wchar_t* pRootName, ARCDir* pDir) { return OpenResourceDir( pArcHandle, pRootName, res::RESOURCETYPE_TEXTURE, pDir); } //! @brief テクスチャリソースのディレクトリエントリ情報を取得します。 //! //! @details //! OpenTextureDir() で開いたディレクトリ内のテクスチャリソースの //! ディレクトリエントリ情報を取得します。 //! //! リソースファイルの拡張子がテクスチャリソースと一致しない場合には //! 読み飛ばします。 //! //! 本関数は内部で ARCReadDir() を呼び出します。 //! //! @param[in,out] pDir ARCDir を指定します。 //! @param[out] pDirEnt ディレクトリエントリ情報が格納されます。 //! //! @return 成功した場合には true を返します。 //! //! @sa OpenTextureDir //! //! @since 2011/02/28 初版。 //! static bool ReadTextureDir( ARCDir* pDir, ARCDirEntry* pDirEnt) { return ReadResourceDir(pDir, L".bclim", 6, pDirEnt); } //! @brief フォントリソースのアーカイブディレクトリを開きます。 //! //! @details //! ディレクトリを開いた後は ReadFontDir() でフォントリソースの //! ディレクトリエントリ情報を取得します。 //! //! 本関数は内部で ARCChangeDir(), ARCOpenDir() を呼び出します。 //! 使用後は ARCCloseDir() でディレクトリを閉じてください。 //! //! @param[in,out] pArcHandle ARCHandle を指定します。 //! @param[in] pRootName リソース検索のルートとなるディレクトリ名です。 //! @param[out] pDir ディレクトリ情報が格納されます。 //! //! @return 成功した場合には true を返します。 //! //! @sa ReadFontDir //! @sa ARCChangeDir //! @sa ARCOpenDir //! @sa ARCCloseDir //! //! @since 2011/02/28 初版。 //! static bool OpenFontDir( ARCHandle* pArcHandle, const wchar_t* pRootName, ARCDir* pDir) { return OpenResourceDir( pArcHandle, pRootName, res::RESOURCETYPE_FONT, pDir); } //! @brief フォントリソースのディレクトリエントリ情報を取得します。 //! //! @details //! OpenFontDir() で開いたディレクトリ内のフォントリソースの //! ディレクトリエントリ情報を取得します。 //! //! リソースファイルの拡張子がフォントリソースと一致しない場合には //! 読み飛ばします。 //! //! 本関数は内部で ARCReadDir() を呼び出します。 //! //! @param[in,out] pDir ARCDir を指定します。 //! @param[out] pDirEnt ディレクトリエントリ情報が格納されます。 //! //! @return 成功した場合には true を返します。 //! //! @sa OpenFontDir //! //! @since 2011/02/28 初版。 //! static bool ReadFontDir( ARCDir* pDir, ARCDirEntry* pDirEnt) { return ReadResourceDir(pDir, L".bcfnt", 6, pDirEnt); } //! @details :private static bool OpenResourceDir( ARCHandle* pArcHandle, const wchar_t* pRootName, ResType resType, ARCDir* pDir); //! @details :private static bool ReadResourceDir( ARCDir* pDir, const wchar_t* pExtStr, u32 extLen, ARCDirEntry* pDirEnt); }; } // namespace nw::lyt } // namespace nw #endif // NW_LYT_ARCUTIL_H_