1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     tpl_ReadTexturePackage.h
4 
5   Copyright (C)2010 Nintendo Co., Ltd.  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   $Rev: 28630 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_TPL_CTR_TPL_READTEXTUREPACKAGE_H_
17 #define NN_TPL_CTR_TPL_READTEXTUREPACKAGE_H_
18 
19 #include <nn/tpl/CTR/tpl_PackagerType.h>
20 
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 
27 namespace nn { namespace tpl { namespace CTR {
28 
29     /*!
30         @brief テクスチャパッケージファイルに含まれるテクスチャ数を取得します。
31 
32         @param[in]  pTexPackage  テクスチャパッケージファイルを読み込んだ先頭ポインタ。
33         @return  テクスチャパッケージファイルに含まれるテクスチャ数を返します。
34     */
35     u16 GetTextureNum(const void* pTexPackage);
36 
37     /*!
38         @brief テクスチャインデックスを取得します。
39 
40         @param[in]  pTexPackage  テクスチャパッケージファイルを読み込んだ先頭ポインタ。
41         @param[in]  texPath  検索するテクスチャのパス。
42         @return  テクスチャのインデックス。見つからなかった場合は -1 を返します。
43 
44         テクスチャ名のパスから、パッケージ内の該当テクスチャのインデックスを取得します。
45     */
46     s16 GetTextureIndex(const void* pTexPackage, const char* texPath);
47 
48     /*!
49         @brief テクスチャを取得します。
50 
51         @param[out]  mipLevel  ミップマップの枚数。
52         @param[out]  mipmapSize  各ミップマップのデータサイズ(バイト)(配列を指定してください)。
53         @param[in]  pTexPackage  テクスチャパッケージファイルを読み込んだ先頭ポインタ。
54         @param[in]  texIndex  テクスチャのインデックス。
55         @return  テクスチャの先頭ポインタ。見つからなかった場合は 0 を返します。
56 
57         パッケージ内の該当テクスチャのポインタを返します。
58         本体もミップマップの最大の大きさの物として考える為、
59         該当テクスチャがある場合、必ず miplevel は 1 以上になります。
60     */
61     void* GetTexture(s32* mipLevel, u32* mipmapSize, const void* pTexPackage, const s16 texIndex);
62 
63     /*!
64         @brief テクスチャ情報を取得します。
65 
66         @param[out]  pTexInfo  該当テクスチャの情報を保持した構造体のポインタ。
67         @param[in]  pTexPackage  テクスチャパッケージファイルを読み込んだ先頭ポインタ。
68         @param[in]  texIndex  テクスチャのインデックス。
69         @return  テクスチャ情報を取得出来た場合は true、何らかのエラーが起きた場合は false を返します。
70 
71         該当テクスチャの情報を取得します。
72     */
73     bool GetTextureInfo(CtrTextureInfo* pTexInfo, const void* pTexPackage, const s16 texIndex);
74 
75     /*!
76         @brief テクスチャパッケージのチェックを行います。
77 
78         @param[in]  pTexPackage  テクスチャパッケージファイルを読み込んだ先頭ポインタ
79         @return  使用出来るテクスチャパッケージファイルの場合は true、使用出来ない場合や何らかのエラーが起きた場合は false を返します。
80 
81         読み込んだテクスチャパッケージファイルのヘッダ部分を見て、
82         使用出来るものかどうかを判定します。
83     */
84     bool CheckTexturePackageHeader(const void* pTexPackage);
85 
86 
87 }}} // namespace
88 
89 
90 #ifdef __cplusplus
91 }
92 #endif
93 
94 #endif // NN_TPL_CTR_TPL_READTEXTUREPACKAGE_H_
95