1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
|
#ifndef D_PICTURE_BOX_H
#define D_PICTURE_BOX_H
#include "dolphin/types.h"
#include "f_op/f_op_msg.h"
#include "f_op/f_op_msg_mng.h"
#include "d/d_drawlist.h"
#include "JSystem/J2DGraph/J2DScreen.h"
#include "JSystem/J2DGraph/J2DTextBox.h"
#include "d/d_lib.h"
#include "m_Do/m_Do_MemCardRWmng.h"
class J3DModel;
class JKRExpHeap;
class J2DScreen;
class J2DTextBox;
class mDoDvdThd_toMainRam_c;
struct fopMsgM_pane_class;
struct fopMsgM_pane_alpha_class;
enum dJlePbExecState {
PB_EXEC_CAMERA_OPEN_e = 0x0,
PB_EXEC_CAMERA_MOVE_e = 0x1,
PB_EXEC_BROWSE_OPEN_e = 0x2,
PB_EXEC_BROWSE_MOVE_e = 0x3,
PB_EXEC_GET_OPEN_e = 0x4,
PB_EXEC_GET_MOVE_e = 0x5,
PB_EXEC_CLOSE_e = 0x6,
PB_EXEC_CLOSED_e = 0x7,
};
enum dJlePbModeSubState {
PB_SUB_IDLE_e = 0x0,
PB_SUB_CONFIRM_e = 0x1,
PB_SUB_SHIFT_1_TO_0_e = 0x2,
PB_SUB_SHIFT_0_TO_2_e = 0x3,
PB_SUB_SHIFT_0_TO_1_e = 0x4,
PB_SUB_SHIFT_2_TO_0_e = 0x5,
};
enum dJlePbViewMode {
PB_VIEW_CAMERA_e = 0x0,
PB_VIEW_BROWSE_e = 0x1,
PB_VIEW_GET_e = 0x2,
};
void dPb_erasePicture();
class dJle_Pb_c : public dDlst_base_c {
public:
u8 getStatus() { return mExecState; }
// was this supposed to be called setMemory? typo?
void getMemory(void* buffer, int idx) {
mPhotoBuffer[idx] = (card_pictdata*)buffer;
}
void setTextArea(char* buffer, int idx) {
mMsgTextBuffer[idx] = buffer;
}
void alphaChange(fopMsgM_pane_alpha_class*, f32) {}
void alphaChange(fopMsgM_pane_class*, f32) {}
void screenSet();
void screenSet2();
void cameraAlphaInc(f32);
void browseAlphaInc(f32);
void getAlphaInc(f32);
void alphaDec(f32);
void zoomScale();
void changeScale(int);
void up_downIconMove();
void left_rightIconMove();
void clickShutterMode();
void selectMode();
void cameraMode();
void pictureDraw(u8, int);
void pictureEraseWait();
void pictureDecide();
void pictureErase();
void pictureTransX(f32, f32, f32, f32, f32);
void changePicture();
void shutterChange();
void moveCamera();
void moveBrowse();
void selectBrowse();
void getBrowse();
void changeBrowseToCamera();
void changeCameraToBrowse();
void setColorInit(u8);
void setColorAnime(u8);
void changeData();
bool label_sort();
u8 getPicLabelData(u8);
void shutterLineRotateCenter(f32, int);
void shutterLineRotateInitPos(f32, int);
void shutterLineMove();
void shutterLineDraw(u8);
void messageSet(u32);
void remainMessageSet(u8);
void existMessageSet(u8);
void shutterShow();
void shutterHide();
void _create(JKRExpHeap*);
void _copen();
void _bopen();
void _gopen();
void _close();
void _cmove();
void _bmove();
void _gmove();
void draw();
void _delete(JKRExpHeap*);
private:
/* 0x004 */ J2DScreen* scrn;
/* 0x008 */ J2DScreen* scrn1;
/* 0x00C */ J2DScreen* scrn2;
/* 0x010 */ fopMsgM_pane_class pane_st[12];
/* 0x2B0 */ fopMsgM_pane_class pane_sb[12];
/* 0x550 */ fopMsgM_pane_class pane_ylig;
/* 0x588 */ fopMsgM_pane_class pane_ylef;
/* 0x5C0 */ fopMsgM_pane_class pane_icn[3];
/* 0x668 */ fopMsgM_pane_class pane_emp[3];
/* 0x710 */ fopMsgM_pane_class pane_ct1;
/* 0x748 */ fopMsgM_pane_class pane_ct2;
/* 0x780 */ fopMsgM_pane_class pane_sp[8];
/* 0x940 */ fopMsgM_pane_class pane_no[3];
/* 0x9E8 */ fopMsgM_pane_class pane_nob[3];
/* 0xA90 */ fopMsgM_pane_class pane_nok[3];
/* 0xB38 */ fopMsgM_pane_class pane_b1;
/* 0xB70 */ fopMsgM_pane_class pane_b2;
/* 0xBA8 */ fopMsgM_pane_class pane_wnum;
/* 0xBE0 */ fopMsgM_pane_class pane_wnuk;
/* 0xC18 */ fopMsgM_pane_class pane_wpba;
/* 0xC50 */ fopMsgM_pane_class pane_wbap;
/* 0xC88 */ fopMsgM_pane_class pane_wpsc;
/* 0xCC0 */ fopMsgM_pane_class pane_yrtn;
/* 0xCF8 */ fopMsgM_pane_class pane_yzom;
/* 0xD30 */ fopMsgM_pane_class pane_crtn;
/* 0xD68 */ fopMsgM_pane_class pane_czom;
/* 0xDA0 */ fopMsgM_pane_class pane_lrtn;
/* 0xDD8 */ fopMsgM_pane_class pane_rzom;
/* 0xE10 */ fopMsgM_pane_class pane_shut;
/* 0xE48 */ fopMsgM_pane_class pane_fd00;
/* 0xE80 */ fopMsgM_pane_class pane_wp04;
/* 0xEB8 */ fopMsgM_pane_class pane_wp01;
/* 0xEF0 */ fopMsgM_pane_class pane_wp02;
/* 0xF28 */ fopMsgM_pane_class pane_wp03;
/* 0xF60 */ fopMsgM_pane_alpha_class pane_tx[4];
/* 0xF80 */ mDoDvdThd_toMainRam_c* mImportedPhotoLoadReq; // Async request for imported gallery photo data.
/* 0xF84 */ J2DPicture* mMsgIconFontMainPic; // Message icon sheet used by fopMsgM_outFontDraw.
/* 0xF88 */ J2DPicture* mMsgIconFontSubPic; // Secondary icon sheet used by fopMsgM_outFontDraw.
/* 0xF8C */ J2DPicture* mMsgSelectArrowPic; // Select-arrow sprite for two-choice message prompts.
/* 0xF90 */ JUTFont* font0;
/* 0xF94 */ JUTFont* font1;
/* 0xF98 */ STControl* stick;
/* 0xF9C */ u8 mF9C[0xFA0 - 0xF9C];
/* 0xFA0 */ mesg_header* head_p;
/* 0xFA4 */ JMSMesgEntry_c mMsgEntry; // Current parsed message entry metadata.
/* 0xFBC */ fopMsgM_msgDataProc_c mMsgDataProc; // Message parser/layout state and choice helper.
/* 0x125C */ JUtility::TColor icn_white;
/* 0x1260 */ JUtility::TColor icn_black;
/* 0x1264 */ JUtility::TColor emp_white;
/* 0x1268 */ JUtility::TColor emp_black;
/* 0x126C */ card_pictdata* mPhotoBuffer[4]; // Three saved slots + one import/get temporary slot.
/* 0x127C */ f32 mZoomScale;
/* 0x1280 */ f32 mShutterLineX1[12];
/* 0x12B0 */ f32 mShutterLineY1[12];
/* 0x12E0 */ f32 mShutterLineX2[12];
/* 0x1310 */ f32 mShutterLineY2[12];
/* 0x1340 */ int mChoiceCursorX0; // X anchor for first message choice marker.
/* 0x1344 */ int mChoiceCursorX1; // X anchor for second message choice marker.
/* 0x1348 */ int mChoiceCursorY; // Y anchor for message choice marker.
/* 0x134C */ int mChoiceCursorYAlt; // Alternate Y anchor parsed from second choice token.
/* 0x1350 */ char* mMsgTextBuffer[4]; // Output text buffers for the four message panes.
/* 0x1360 */ s16 mFadeTimer; // Open/close fade timer.
/* 0x1362 */ s16 mShutterCounter;
/* 0x1364 */ s16 mMsgLineCount; // Cached message line count for vertical alignment.
/* 0x1366 */ s16 mMsgIconDrawState; // Scratch state used by icon font setup/draw helpers.
/* 0x1368 */ u8 mPictureSlotSortMap[3]; // Mapping from sorted slot order to source slot index.
/* 0x136B */ u8 mExecState; // Top-level state machine used by execute dispatch (open/move/close/etc.).
/* 0x136C */ u8 mModeSubState; // Per-mode substate (camera capture/select, browse erase/slide animation states).
/* 0x136D */ u8 mViewMode; // Selects camera vs browse vs get-photo mode paths.
/* 0x136E */ u8 mSelectedPhotoSlot; // Active browse slot index.
/* 0x136F */ u8 mSelectedChoiceIndex; // Active index in two-choice message prompts.
/* 0x1370 */ u8 mModeSwapActive; // Non-zero while shutter transition between camera/browse is running.
/* 0x1371 */ u8 mPhotoSlotOccupied[3]; // Per-slot occupancy flags for saved photos.
/* 0x1374 */ u8 mPhotoDeletedFlag; // Set when a photo was deleted during this session.
/* 0x1375 */ u8 mChoiceArrowIconIdx; // Icon token index currently used for select-arrow placement.
/* 0x1376 */ u8 mCaptureFormat;
};
class sub_pb_class : public msg_class {
public:
/* 0x00FC */ JKRExpHeap* heap;
/* 0x0100 */ dJle_Pb_c* dPb_c;
/* 0x0104 */ card_pictdata* buffer[4];
};
#endif /* D_PICTURE_BOX_H */
|