Loading [MathJax]/extensions/tex2jax.js
Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
JORMContext.h
Go to the documentation of this file.
1#ifndef JORMCONTEXT_H
2#define JORMCONTEXT_H
3
4#include <dolphin.h>
7
8#define MCTX_MSG_RESET 0
9#define MCTX_MSG_GET_ROOT_OBJ 2
10#define MCTX_MSG_GEN_OBJ_INFO 4
11#define MCTX_MSG_INVALID_NODE 5
12#define MCTX_MSG_UPDATE_NODE 8
13#define MCTX_MSG_FIO 9
14#define MCTX_MSG_OPEN_MESSAGE_BOX 10
15#define MCTX_MSG_START_NODE 12
16#define MCTX_MSG_GET_HOST_INFO 14
17#define MCTX_MSG_SHELL_EXEC 15
18
19#define MCTX_COMMAND_START_NODE (u32)0
20#define MCTX_COMMAND_END_NODE (u32)1
21#define MCTX_COMMAND_GEN_CONTROL (u32)2
22#define MCTX_COMMAND_GEN_NODE (u32)3
23#define MCTX_COMMAND_START_SELECTOR (u32)4
24#define MCTX_COMMAND_END_SELECTOR (u32)5
25#define MCTX_COMMAND_SELECTOR_ITEM (u32)6
26#define MCTX_COMMAND_INVALID_NODE (u32)7
27#define MCTX_COMMAND_UPDATE_CONTROL (u32)8
28
29#define DEFINE_GEN_CHECKBOX(T, kind) \
30 void genCheckBox(const char* label, T* pSrc, T mask, u32 style, JOREventListener* pListener, \
31 u16 posX, u16 posY, u16 width, u16 height) { \
32 genCheckBoxSub(kind, label, (u32)pSrc, style, *pSrc, mask, pListener, posX, posY, width, \
33 height); \
34 }
35
36#define DEFINE_GEN_CHECKBOX_ID(T, kind) \
37 void genCheckBoxID(const char* label, u32 id, T mask, T initValue, u32 style, \
38 JOREventListener* pListener, u16 posX, u16 posY, u16 width, u16 height) { \
39 genCheckBoxSub(kind, label, id, style, initValue, mask, pListener, posX, posY, width, \
40 height); \
41 }
42
43#define DEFINE_GEN_SLIDER(T, kind) \
44 void genSlider(const char* label, T* pSrc, T rangeMin, T rangeMax, u32 style, \
45 JOREventListener* pListener, u16 posX, u16 posY, u16 width, u16 height) { \
46 genSliderSub(kind, label, (u32)pSrc, style, *pSrc, rangeMin, rangeMax, pListener, posX, \
47 posY, width, height); \
48 }
49
50#define DEFINE_GEN_SLIDER_ID(T, kind) \
51 void genSliderID(const char* label, u32 id, T data, T rangeMin, T rangeMax, u32 style, \
52 JOREventListener* pListener, u16 posX, u16 posY, u16 width, u16 height) { \
53 genSliderSub(kind, label, id, style, data, rangeMin, rangeMax, pListener, posX, posY, \
54 width, height); \
55 }
56
57#define DEFINE_START_COMBO_BOX(T, kind) \
58 void startComboBox(const char* label, T* pSrc, u32 style, \
59 JOREventListener* pListener, u16 posX, u16 posY, u16 width, u16 height) { \
60 startSelectorSub('CMBX', kind, label, (u32)pSrc, style, *pSrc, pListener, posX, \
61 posY, width, height); \
62 }
63
64#define DEFINE_START_COMBO_BOX_ID(T, kind) \
65 void startComboBoxID(const char* label, u32 id, T data, u32 style, \
66 JOREventListener* pListener, u16 posX, u16 posY, u16 width, u16 height) { \
67 startSelectorSub('CMBX', kind, label, id, style, data, pListener, posX, \
68 posY, width, height); \
69 }
70
71#define DEFINE_UPDATE_SLIDER(T) \
72 void updateSlider(u32 mode, T* pSrc, T rangeMin, T rangeMax, u32 param_5) { \
73 updateSliderSub(mode, (u32) pSrc, *pSrc, rangeMin, rangeMax, param_5); \
74 }
75
76#define DEFINE_UPDATE_SLIDER_ID(T) \
77 void updateSliderID(u32 mode, u32 id, T value, T rangeMin, T rangeMax, u32 param_5) { \
78 updateSliderSub(mode, id, value, rangeMin, rangeMax, param_5); \
79 }
80
81namespace jhostio {
82 enum EKind {
83 EKind_8B = 0x08,
84 EKind_16B = 0x10,
85 EKind_32B = 0x20,
86 };
87
88 inline u32 GetEKindSize(u32 param_0) { return param_0 & 0xFF; }
89}
90
91class JORReflexible;
92class JORFile;
94class JORHostInfo;
95
97public:
98 JORMContext() : mOutputStream(this, 0x10000) {}
99
101 void putMsgID(u32 msgID) { mOutputStream << msgID; }
103 u8* msgPtr() { return mBuffer; }
104
105 void openFile(JORFile* pFile, u32 flags, const char* path, const char* extMask, u32 maskSize,
106 const char* defaultExt, const char* param_6, const char* fileSuffix);
107 void closeFile(JORFile* pFile);
108 void readBegin(JORFile* pFile, s32 size);
109 void readData(JORFile* pFile);
110 void writeBegin(JORFile* pFile, u16 flags, u32 size);
111 void writeData(JORFile* pFile, const void* pBuffer, s32 size, u32 position);
112 void writeDone(JORFile* pFile, u32 size);
113 void sendShellExecuteRequest(void*, const char*, const char*, const char*, const char*, int);
114 void sendHostInfoRequest(u32 requestType, JORHostInfo* pHostInfo);
115 void endNode();
116
117 void genRootNode(const char* label, JORReflexible* obj, u32 param_2, u32 param_3) {
118 genNodeSub(label, obj, param_2, param_3);
119 }
120
121 void genNode(const char* label, JORReflexible* obj, u32 param_2, u32 param_3) {
122 mOutputStream << MCTX_COMMAND_GEN_NODE;
123 genNodeSub(label, obj, param_2, param_3);
124 }
125
126 void genNode(JORReflexible* parentObj, u32 param_1, const char* label, JORReflexible* obj,
127 u32 param_4, u32 param_5) {
128 ASSERTMSGLINE(97, parentObj != NULL,
129 "JORMContext: genNode must specify strict( not null node ) parent object\n");
130
131 mOutputStream << MCTX_COMMAND_GEN_NODE;
132 mOutputStream << param_1;
133 putNode(parentObj);
134 genNodeSub(label, obj, param_4, param_5);
135 }
136
137 void startNode(JORReflexible* parentObj, u32 param_1, const char* label, JORReflexible* obj,
138 u32 param_4, u32 param_5) {
139 ASSERTMSGLINE(
140 113, parentObj != NULL,
141 "JORMContext: startNode must specify strict( not null node ) parent object\n");
142
143 mOutputStream << MCTX_COMMAND_START_NODE;
144 mOutputStream << param_1;
145 putNode(parentObj);
146 genNodeSub(label, obj, param_4, param_5);
147 }
148
149 void startNode(const char* label, JORReflexible* obj, u32 param_2, u32 param_3) {
150 mOutputStream << MCTX_COMMAND_START_NODE;
151 genNodeSub(label, obj, param_2, param_3);
152 }
153
155 putNode(obj);
156 }
157
158 void genNodeSub(const char* label, JORReflexible* i_node, u32, u32);
160 void invalidNode(JORReflexible* i_node, u32);
161
162 void genControl(u32 type, u32 kind, const char* label, u32 style, u32 id,
163 JOREventListener* pListener, u32 initValue);
164
165 void genSliderSub(u32 kind, const char* label, u32 id, u32 style, s32 initValue, s32 rangeMin,
166 s32 rangeMax, JOREventListener* pListener, u16 posX, u16 posY, u16 width,
167 u16 height);
168
169 void genCheckBoxSub(u32 kind, const char* label, u32 id, u32 style, u16 initValue, u16 mask,
170 JOREventListener* pListener, u16 posX, u16 posY, u16 width, u16 height);
171
172 void startSelectorSub(u32 type, u32 kind, const char* label, u32 id, u32 style, s32 initValue,
173 JOREventListener* pListener, u16 posX, u16 posY, u16 width, u16 height);
174
175 void endSelectorSub();
176
177 void genSelectorItemSub(const char* label, s32 itemNo, u32 param_2, u16 posX, u16 posY,
178 u16 width, u16 height);
179
180 void genButton(const char* label, u32 id, u32 style, JOREventListener* pListener, u16 posX,
181 u16 posY, u16 width, u16 height);
182
183 void genLabel(const char* label, u32 id, u32 style, JOREventListener* pListener, u16 posX,
184 u16 posY, u16 width, u16 height);
185
186 void genGroupBox(const char* label, u32 id, u32 style, JOREventListener* pListener, u16 posX,
187 u16 posY, u16 width, u16 height);
188
189 void genEditBoxID(const char* label, u32 id, const char* string, u16 length, u32 style,
190 JOREventListener* pListener, u16 posX, u16 posY, u16 width, u16 height);
191
197
199
203 DEFINE_GEN_SLIDER(u8, 0x100 | jhostio::EKind_8B)
205 DEFINE_GEN_SLIDER(f32, JORPropertyEvent::EKind_FloatValue | jhostio::EKind_32B)
207
208 DEFINE_GEN_SLIDER_ID(f64, JORPropertyEvent::EKind_ValueID | JORPropertyEvent::EKind_FloatValue)
210
211 DEFINE_UPDATE_SLIDER(u8)
212 DEFINE_UPDATE_SLIDER(s16)
213 DEFINE_UPDATE_SLIDER(f32)
214 DEFINE_UPDATE_SLIDER(s32)
215
216 DEFINE_UPDATE_SLIDER_ID(f64)
217 DEFINE_UPDATE_SLIDER_ID(int)
218
222 DEFINE_START_COMBO_BOX(u8, 0x100 | jhostio::EKind_8B)
225
227
228 void endComboBox() {
230 }
231
232 void genComboBoxItem(const char* label, s32 itemNo) {
233 genSelectorItemSub(label, itemNo, 0, 0, 0, 0, 0);
234 }
235
236 void genRadioButtonItem(const char* label, s32 itemNo, u32 param_2, u16 posX, u16 posY,
237 u16 width, u16 height) {
238 genSelectorItemSub(label, itemNo, param_2, posX, posY, width, height);
239 }
240
241 void updateControl(u32 mode, u32 id, u32 param_2);
242 void updateControl(u32 mode, u32 id, const char* param_2);
243 void updateSliderSub(u32 mode, u32 id, s32 value, s32 rangeMin, s32 rangeMax,
244 u32 param_5);
245 void updateCheckBoxSub(u32 mode, u32 id, u16 value, u16 mask, u32 param_4);
246 void updateSelectorSub(u32 mode, u32 id, s32 value, u32 param_3);
247 void updateEditBoxID(u32 mode, u32 id, const char* string, u32 param_3, u16 length);
248
249 void updateCheckBox(u32 mode, u8* pSrc, u8 mask, u32 param_4) {
250 updateCheckBoxSub(mode, (u32) pSrc, *pSrc, mask, param_4);
251 }
252
253 void updateCheckBoxID(u32 mode, u32 id, u8 value, u8 mask, u32 param_4) {
254 updateCheckBoxSub(mode, id, value, mask, param_4);
255 }
256
257 void editComboBoxItem(u32 param_0, u32 param_1, const char* param_2, s32 param_3, u32 param_4);
258
259 void openMessageBox(void* param_0, u32 style, const char* message, const char* title);
260
261 /* 0x00000 */ u8 mBuffer[0x10000];
263};
264
267
268#endif /* JORMCONTEXT_H */
u32 mode
Definition GXTev.c:56
void releaseJORMContext(JORMContext *)
JORMContext * attachJORMContext(u32)
@ JSUStreamSeekFrom_SET
Definition JSUIosBase.h:7
unsigned int size
Definition __os.h:106
Definition JORReflexible.h:36
Definition JORFile.h:24
Definition JORHostInfo.h:10
Definition JORMContext.h:96
jhostio::EKind_16B jhostio::EKind_8B JORPropertyEvent::EKind_FloatValue jhostio::EKind_32B JORPropertyEvent::EKind_ValueID JORPropertyEvent::EKind_FloatValue jhostio::EKind_8B jhostio::EKind_32B DEFINE_START_COMBO_BOX_ID(int, JORPropertyEvent::EKind_ValueID) void endComboBox()
Definition JORMContext.h:226
void updateCheckBoxID(u32 mode, u32 id, u8 value, u8 mask, u32 param_4)
Definition JORMContext.h:253
void startUpdateNode(JORReflexible *obj)
Definition JORMContext.h:154
void genButton(const char *label, u32 id, u32 style, JOREventListener *pListener, u16 posX, u16 posY, u16 width, u16 height)
Definition JORServer.cpp:608
void updateCheckBoxSub(u32 mode, u32 id, u16 value, u16 mask, u32 param_4)
Definition JORServer.cpp:691
void sendHostInfoRequest(u32 requestType, JORHostInfo *pHostInfo)
Definition JORServer.cpp:812
DEFINE_GEN_CHECKBOX(u8, 0x100|jhostio::EKind_8B) DEFINE_GEN_CHECKBOX(u16
jhostio::EKind_16B jhostio::EKind_8B DEFINE_GEN_SLIDER(s16, jhostio::EKind_16B) DEFINE_GEN_SLIDER(f32
void genEditBoxID(const char *label, u32 id, const char *string, u16 length, u32 style, JOREventListener *pListener, u16 posX, u16 posY, u16 width, u16 height)
Definition JORServer.cpp:650
void genSelectorItemSub(const char *label, s32 itemNo, u32 param_2, u16 posX, u16 posY, u16 width, u16 height)
Definition JORServer.cpp:601
void genControl(u32 type, u32 kind, const char *label, u32 style, u32 id, JOREventListener *pListener, u32 initValue)
Definition JORServer.cpp:536
void putNode(JORReflexible *obj)
void updateCheckBox(u32 mode, u8 *pSrc, u8 mask, u32 param_4)
Definition JORMContext.h:249
u8 * msgPtr()
Definition JORMContext.h:103
void bufInit()
Definition JORMContext.h:100
jhostio::EKind_16B DEFINE_GEN_CHECKBOX_ID(u16, JORPropertyEvent::EKind_ValueID|0x100) DEFINE_GEN_SLIDER(u8
void updateEditBoxID(u32 mode, u32 id, const char *string, u32 param_3, u16 length)
Definition JORServer.cpp:711
s32 msgSize()
Definition JORMContext.h:102
void updateSliderSub(u32 mode, u32 id, s32 value, s32 rangeMin, s32 rangeMax, u32 param_5)
Definition JORServer.cpp:679
void genSliderSub(u32 kind, const char *label, u32 id, u32 style, s32 initValue, s32 rangeMin, s32 rangeMax, JOREventListener *pListener, u16 posX, u16 posY, u16 width, u16 height)
Definition JORServer.cpp:554
u8 mBuffer[0x10000]
Definition JORMContext.h:261
void genNodeSub(const char *label, JORReflexible *i_node, u32, u32)
Definition JORServer.cpp:514
void sendShellExecuteRequest(void *, const char *, const char *, const char *, const char *, int)
Definition JORServer.cpp:816
void invalidNode(JORReflexible *i_node, u32)
Definition JORServer.cpp:529
void openFile(JORFile *pFile, u32 flags, const char *path, const char *extMask, u32 maskSize, const char *defaultExt, const char *param_6, const char *fileSuffix)
Definition JORServer.cpp:729
void endNode()
Definition JORServer.cpp:525
void readData(JORFile *pFile)
Definition JORServer.cpp:773
void startSelectorSub(u32 type, u32 kind, const char *label, u32 id, u32 style, s32 initValue, JOREventListener *pListener, u16 posX, u16 posY, u16 width, u16 height)
Definition JORServer.cpp:583
void genComboBoxItem(const char *label, s32 itemNo)
Definition JORMContext.h:232
void genRadioButtonItem(const char *label, s32 itemNo, u32 param_2, u16 posX, u16 posY, u16 width, u16 height)
Definition JORMContext.h:236
void writeDone(JORFile *pFile, u32 size)
Definition JORServer.cpp:800
void genNode(const char *label, JORReflexible *obj, u32 param_2, u32 param_3)
Definition JORMContext.h:121
void genRootNode(const char *label, JORReflexible *obj, u32 param_2, u32 param_3)
Definition JORMContext.h:117
void editComboBoxItem(u32 param_0, u32 param_1, const char *param_2, s32 param_3, u32 param_4)
Definition JORServer.cpp:723
void endSelectorSub()
Definition JORServer.cpp:597
void openMessageBox(void *param_0, u32 style, const char *message, const char *title)
Definition JORServer.cpp:808
void readBegin(JORFile *pFile, s32 size)
Definition JORServer.cpp:765
void closeFile(JORFile *pFile)
Definition JORServer.cpp:761
void writeBegin(JORFile *pFile, u16 flags, u32 size)
Definition JORServer.cpp:780
void genNode(JORReflexible *parentObj, u32 param_1, const char *label, JORReflexible *obj, u32 param_4, u32 param_5)
Definition JORMContext.h:126
void genLabel(const char *label, u32 id, u32 style, JOREventListener *pListener, u16 posX, u16 posY, u16 width, u16 height)
Definition JORServer.cpp:622
JORMContext()
Definition JORMContext.h:98
void putMsgID(u32 msgID)
Definition JORMContext.h:101
jhostio::EKind_16B jhostio::EKind_8B JORPropertyEvent::EKind_FloatValue jhostio::EKind_32B JORPropertyEvent::EKind_ValueID JORPropertyEvent::EKind_FloatValue jhostio::EKind_8B DEFINE_START_COMBO_BOX(s16, jhostio::EKind_16B) DEFINE_START_COMBO_BOX(s32
JSUMemoryOutputStream mOutputStream
Definition JORMContext.h:262
void startNode(JORReflexible *parentObj, u32 param_1, const char *label, JORReflexible *obj, u32 param_4, u32 param_5)
Definition JORMContext.h:137
void genGroupBox(const char *label, u32 id, u32 style, JOREventListener *pListener, u16 posX, u16 posY, u16 width, u16 height)
Definition JORServer.cpp:636
void genCheckBoxSub(u32 kind, const char *label, u32 id, u32 style, u16 initValue, u16 mask, JOREventListener *pListener, u16 posX, u16 posY, u16 width, u16 height)
Definition JORServer.cpp:569
void writeData(JORFile *pFile, const void *pBuffer, s32 size, u32 position)
Definition JORServer.cpp:789
void updateControl(u32 mode, u32 id, u32 param_2)
Definition JORServer.cpp:665
void startNode(const char *label, JORReflexible *obj, u32 param_2, u32 param_3)
Definition JORMContext.h:149
jhostio::EKind_16B jhostio::EKind_8B JORPropertyEvent::EKind_FloatValue jhostio::EKind_32B JORPropertyEvent::EKind_ValueID JORPropertyEvent::EKind_FloatValue DEFINE_GEN_SLIDER_ID(int, JORPropertyEvent::EKind_ValueID) DEFINE_UPDATE_SLIDER(u8) DEFINE_UPDATE_SLIDER(s16) DEFINE_UPDATE_SLIDER(f32) DEFINE_UPDATE_SLIDER(s32) DEFINE_UPDATE_SLIDER_ID(f64) DEFINE_UPDATE_SLIDER_ID(int) DEFINE_START_COMBO_BOX(u8
void updateSelectorSub(u32 mode, u32 id, s32 value, u32 param_3)
Definition JORServer.cpp:703
Definition JORReflexible.h:43
Definition JSUMemoryStream.h:32
virtual s32 seek(s32, JSUStreamSeekFrom)
virtual s32 getPosition() const
static void message(do_class *i_this)
Definition d_a_do.cpp:2316
static SECTION_RODATA u32 const itemNo
Definition d_a_obj_poFire.cpp:380
Definition JORMContext.h:81
EKind
Definition JORMContext.h:82
@ EKind_32B
Definition JORMContext.h:85
@ EKind_16B
Definition JORMContext.h:84
@ EKind_8B
Definition JORMContext.h:83
u32 GetEKindSize(u32 param_0)
Definition JORMContext.h:88
Definition JORReflexible.h:10
unsigned long u32
Definition types.h:9
signed short int s16
Definition types.h:6
float f32
Definition types.h:22
double f64
Definition types.h:23
unsigned short int u16
Definition types.h:7
signed long s32
Definition types.h:8
unsigned char u8
Definition types.h:5