-
Notifications
You must be signed in to change notification settings - Fork 0
/
NifTo3dsDlg.cpp
336 lines (278 loc) · 11.1 KB
/
NifTo3dsDlg.cpp
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
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
/*===========================================================================
*
* File: NifTo3dsDlg.CPP
* Author: Dave Humphrey ([email protected])
* Created On: Saturday, 06 December, 2003
*
* Implementation of the CNifTo3dsDlg class.
*
*=========================================================================*/
/* Include Files */
#include "stdafx.h"
#include "NifTo3ds.h"
#include "NifTo3dsDlg.h"
/*===========================================================================
*
* Local Definitions
*
*=========================================================================*/
/* Debug definitions */
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/*===========================================================================
* End of Local Definitions
*=========================================================================*/
/*===========================================================================
*
* CNifTo3dsDlg Message Map
*
*=========================================================================*/
BEGIN_MESSAGE_MAP(CNifTo3dsDlg, CDialog)
//{{AFX_MSG_MAP(CNifTo3dsDlg)
ON_WM_SYSCOMMAND()
ON_WM_DESTROY()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_CONVERT_BUTTON, OnConvertButton)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/*===========================================================================
* End of CNifTo3dsDlg Message Map
*=========================================================================*/
/*===========================================================================
*
* Class CAboutDlg Definition
*
*=========================================================================*/
class CAboutDlg : public CDialog {
public:
/* Class constructor */
CAboutDlg();
/* Dialog Data */
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
/* ClassWizard generated virtual function overrides */
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);
//}}AFX_VIRTUAL
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/*===========================================================================
* End of Class CAboutDlg Definition
*=========================================================================*/
/*===========================================================================
*
* CAboutDlg Message Map
*
*=========================================================================*/
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/*===========================================================================
* End of CAboutDlg Message Map
*=========================================================================*/
/*===========================================================================
*
* Class CAboutDlg Constructor
*
*=========================================================================*/
CAboutDlg::CAboutDlg () : CDialog(CAboutDlg::IDD) {
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
/*===========================================================================
* End of Class CAboutDlg Constructor
*=========================================================================*/
/*===========================================================================
*
* Class CAboutDlg Method - void DoDataExchange (pDX);
*
*=========================================================================*/
void CAboutDlg::DoDataExchange (CDataExchange* pDX) {
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
/*===========================================================================
* End of Class Method CAboutDlg::DoDataExchange()
*=========================================================================*/
/*===========================================================================
*
* Class CNifTo3dsDlg Constructor
*
*=========================================================================*/
CNifTo3dsDlg::CNifTo3dsDlg(CWnd* pParent) :
CDialog(CNifTo3dsDlg::IDD, pParent) {
//{{AFX_DATA_INIT(CNifTo3dsDlg)
//}}AFX_DATA_INIT
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
/*===========================================================================
* End of Class CNifTo3dsDlg Constructor
*=========================================================================*/
/*===========================================================================
*
* Class CNifTo3dsDlg Method - void DoDataExchange (pDX);
*
*=========================================================================*/
void CNifTo3dsDlg::DoDataExchange(CDataExchange* pDX) {
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNifTo3dsDlg)
//}}AFX_DATA_MAP
}
/*===========================================================================
* End of Class Method CNifTo3dsDlg::DoDataExchange()
*=========================================================================*/
/*===========================================================================
*
* Class CNifTo3dsDlg Event - void OnConvertButton ();
*
*=========================================================================*/
void CNifTo3dsDlg::OnConvertButton() {
CFileDialog FileDlg3ds(FALSE, _T("3ds"), NULL, OFN_HIDEREADONLY, _T("3DS Files (*.3ds)|*.3ds|All Files (*.*)|*.*||"), this);
CFileDialog FileDlgNif(TRUE , _T("3ds"), NULL, OFN_HIDEREADONLY | OFN_PATHMUSTEXIST, _T("NIF Files (*.nif)|*.nif|All Files (*.*)|*.*||"), this);
CNifFile NifFile;
int Result;
bool fResult;
FileDlgNif.m_ofn.lpstrTitle = _T("Select Input NIF File");
FileDlg3ds.m_ofn.lpstrTitle = _T("Select Output 3DS File");
/* Get the input file */
Result = FileDlgNif.DoModal();
if (Result != IDOK) return;
/* Get the output file */
Result = FileDlg3ds.DoModal();
if (Result != IDOK) return;
/* Attempt to load the nif file */
fResult = NifFile.Read(FileDlgNif.GetPathName());
if (!fResult) {
ErrorHandler.Notify(_T("Nif Load Error!"));
return;
}
/* Attempt to convert the nif to a 3ds file */
ErrorHandler.ClearErrorCount();
fResult = ConvertNifTo3ds(NifFile, FileDlg3ds.GetPathName());
if (!fResult) {
ErrorHandler.Notify(_T("3ds Export Error!"));
}
else if (ErrorHandler.GetErrorCount() > 0) {
ErrorHandler.NotifyList(_T("Conversion was successful but the following errors or warnings occurred:"), _T("Conversion Success"));
}
else {
MessageBox(_T("Conversion Completed Successfully!"), _T("Success"), MB_OK | MB_ICONINFORMATION);
}
}
/*===========================================================================
* End of Class Event CNifTo3dsDlg::OnConvertButton()
*=========================================================================*/
/*===========================================================================
*
* Class CNifTo3dsDlg Event - void OnDestroy ();
*
*=========================================================================*/
void CNifTo3dsDlg::OnDestroy() {
WinHelp(0L, HELP_QUIT);
CDialog::OnDestroy();
}
/*===========================================================================
* End of Class Event CNifTo3dsDlg::OnDestroy()
*=========================================================================*/
/*===========================================================================
*
* Class CNifTo3dsDlg Event - BOOL OnInitDialog ();
*
*=========================================================================*/
BOOL CNifTo3dsDlg::OnInitDialog () {
CDialog::OnInitDialog();
/* Add "About..." menu item to system menu.
IDM_ABOUTBOX must be in the system command range. */
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL) {
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty()) {
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
/* Set the icon for this dialog. The framework does this automatically
* when the application's main window is not a dialog */
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
/* Return TRUE unless you set the focus to a control */
return (TRUE);
}
/*===========================================================================
* End of Class Event CNifTo3dsDlg::OnInitDialog()
*=========================================================================*/
/*===========================================================================
*
* Class CNifTo3dsDlg Event - void OnPaint ();
*
* If you add a minimize button to your dialog, you will need the code below
* to draw the icon. For MFC applications using the document/view model,
* this is automatically done for you by the framework.
*
*=========================================================================*/
void CNifTo3dsDlg::OnPaint() {
if (IsIconic()) {
CPaintDC dc(this); /* Device context for painting */
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
/* Center icon in client rectangle */
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
/* Draw the icon */
dc.DrawIcon(x, y, m_hIcon);
}
else {
CDialog::OnPaint();
}
}
/*===========================================================================
* End of Class Event CNifTo3dsDlg::OnPaint()
*=========================================================================*/
/*===========================================================================
*
* Class CNifTo3dsDlg Event - HCURSOR OnQueryDragIcon ();
*
* The system calls this to obtain the cursor to display while the user drags
* the icon.
*
*=========================================================================*/
HCURSOR CNifTo3dsDlg::OnQueryDragIcon() {
return (HCURSOR) m_hIcon;
}
/*===========================================================================
* End of Class Event CNifTo3dsDlg::OnQueryDragIcon()
*=========================================================================*/
/*===========================================================================
*
* Class CNifTo3dsDlg Event - void OnSysCommand (nID, lParam);
*
*=========================================================================*/
void CNifTo3dsDlg::OnSysCommand(UINT nID, LPARAM lParam) {
if ((nID & 0xFFF0) == IDM_ABOUTBOX) {
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else {
CDialog::OnSysCommand(nID, lParam);
}
}
/*===========================================================================
* End of Class Event CNifTo3dsDlg::OnSysCommand()
*=========================================================================*/