1 /*---------------------------------------------------------------------------*
2   Project:  NintendoWare
3   File:     font_ResFont.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: 22758 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NW_FONT_RESFONT_H_
17 #define NW_FONT_RESFONT_H_
18 
19 #include <nn/types.h>
20 #include <nw/font/font_ResFontBase.h>
21 
22 namespace nw {
23 namespace font {
24 
25 //---------------------------------------------------------------------------
26 //! @brief        フォントリソースに対する操作を実装するクラスです。
27 //---------------------------------------------------------------------------
28 class ResFont : public ResFontBase
29 {
30 public:
31     /* ------------------------------------------------------------------------
32             関数
33        ------------------------------------------------------------------------ */
34 
35     //! @name コンストラクタ / デストラクタ
36     //@{
37 
38     //! コンストラクタです。
39                             ResFont();
40 
41     //! デストラクタです。
42     virtual                 ~ResFont();
43 
44     //@}
45 
46     //! @name リソースの関連付け / 解除
47     //@{
48 
49     //! @brief          フォントリソースを関連付けてフォントを使用可能にします。
50     //!
51     //! @param[in,out]  bfnt   ResFont に関連付ける bfnt へのポインタ。
52     //!                        128byte アライメントされている必要があります。
53     //!
54     //! @return         リソースの関連付けが成功したなら true を、
55     //!                 そうでなければ false を返します。@n
56     //!                 リソース bfnt が不正であると失敗します。
57     //!
58     bool                    SetResource(void* bfnt);
59 
60     //! @brief      フォントリソースの割り当てを解除します。
61     //!
62     //! @return     リソースが関連付けされている場合は、関連付けされているリソースへの
63     //!             ポインタを返します。
64     //!             関連付けされていない場合は NULL を返します。
65     //!
66     void*                   RemoveResource();
67 
68     using ResFontBase::IsManaging;
69 
70     //! @brief      描画に必要なバッファのサイズを計算します。
71     //!
72     //! @param[in]  bfnt  フォントリソースの先頭部分へのポインタ。
73     //!
74     //! @return     描画に必要なバッファのサイズを返します。
75     //!
76     static u32              GetDrawBufferSize(const void* bfnt);
77 
78     //! @brief      描画に必要なバッファへのポインタを取得します。
79     //!
80     //! @return     描画に必要なバッファへのポインタを返しします。
81     //!
GetDrawBuffer()82     void*                   GetDrawBuffer()
83     {
84         return GetTextureObjectsBufferPtr();
85     }
86 
87     //! @brief      描画に必要なバッファをセットします。
88     //!             セットするバッファのサイズは、GetDrawBufferSize()で取得します。
89     //!
90     //!             NULLを指定すると、描画バッファを使用しない状態に戻ります。
91     //!
92     //! @param[in]  buffer  バッファへのポインタ。
93     //!                     4byte アライメントされている必要があります。
94     //!
95     //! @return     以前に設定されていた内容(初期値はNULL)を返します。
96     //!
97     void*                   SetDrawBuffer(void* buffer);
98 
99     //@}
100 
101 
102 private:
103     /* ------------------------------------------------------------------------
104             関数
105        ------------------------------------------------------------------------ */
106 
107     //! @brief      メモリ上にロードされたbrfntファイルを再構築して
108     //!             使用できるようにします。
109     //!
110     //! @param[in,out]  fileHeader  メモリ上にロードしたbrfntファイルの
111     //!                             ファイルヘッダへのポインタ
112     //!
113     //! @return     再構築に成功した場合はFINFブロック本体へのポインタを返します。
114     //!             再構築に失敗した場合はNULLを返します。
115     //!
116     static FontInformation* Rebuild(ut::BinaryFileHeader* fileHeader);
117 };
118 
119 }   // namespace font
120 }   // namespace nw
121 
122 #endif //  NW_FONT_RESFONT_H_
123