mirror of
https://github.com/electronicarts/CnC_Renegade.git
synced 2025-12-16 23:51:41 -05:00
Initial commit of Command & Conquer Renegade source code.
This commit is contained in:
388
Code/Tools/max2w3d/logdlg.cpp
Normal file
388
Code/Tools/max2w3d/logdlg.cpp
Normal file
@@ -0,0 +1,388 @@
|
||||
/*
|
||||
** Command & Conquer Renegade(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* $Header: /Commando/Code/Tools/max2w3d/logdlg.cpp 5 11/07/00 5:40p Greg_h $ */
|
||||
/***********************************************************************************************
|
||||
*** Confidential - Westwood Studios ***
|
||||
***********************************************************************************************
|
||||
* *
|
||||
* Project Name : Commando Tools - W3D export *
|
||||
* *
|
||||
* $Archive:: /Commando/Code/Tools/max2w3d/logdlg.cpp $*
|
||||
* *
|
||||
* $Author:: Greg_h $*
|
||||
* *
|
||||
* $Modtime:: 11/07/00 4:24p $*
|
||||
* *
|
||||
* $Revision:: 5 $*
|
||||
* *
|
||||
*---------------------------------------------------------------------------------------------*
|
||||
* Functions: *
|
||||
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||||
|
||||
#include "logdlg.h"
|
||||
#include "resource.h"
|
||||
#include "dllmain.h"
|
||||
#include "w3dexp.h"
|
||||
#include "util.h"
|
||||
#include "rawfile.h"
|
||||
#include "units.h"
|
||||
|
||||
|
||||
/*
|
||||
** Static functions
|
||||
*/
|
||||
static BOOL CALLBACK _logdata_dialog_proc(HWND Hwnd,UINT message,WPARAM wParam,LPARAM lParam);
|
||||
static DWORD WINAPI _logdata_thread_function(LPVOID log_obj_ptr);
|
||||
|
||||
|
||||
/***********************************************************************************************
|
||||
* LogDataDialogClass::LogDataDialogClass -- constructor for the options dialog object *
|
||||
* *
|
||||
* INPUT: *
|
||||
* *
|
||||
* OUTPUT: *
|
||||
* *
|
||||
* WARNINGS: *
|
||||
* *
|
||||
* HISTORY: *
|
||||
* 02/09/2000 JGA : Created. *
|
||||
*=============================================================================================*/
|
||||
LogDataDialogClass::LogDataDialogClass(HWND parent):
|
||||
Hwnd(NULL),
|
||||
ParentHwnd(parent),
|
||||
buffer_index(0),
|
||||
last_buffer_index(0),
|
||||
status(0)
|
||||
{
|
||||
ThreadHandle = CreateThread(NULL, 0, _logdata_thread_function, (LPVOID)this, 0, &ThreadID);
|
||||
|
||||
if (ThreadHandle) {
|
||||
while (status == 0) {
|
||||
// sync, wait for init
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LogDataDialogClass::~LogDataDialogClass(void)
|
||||
{
|
||||
status = 3;
|
||||
if (::IsWindow(Hwnd)) {
|
||||
SendMessage( Hwnd, WM_CLOSE, 0, 0 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************************************
|
||||
* LogDataDialogClass::printf -- handles doing printfs into the current log window *
|
||||
* *
|
||||
* INPUT: *
|
||||
* *
|
||||
* OUTPUT: *
|
||||
* *
|
||||
* WARNINGS: *
|
||||
* *
|
||||
* HISTORY: *
|
||||
* 02/11/2000 JGA : Created. *
|
||||
*=============================================================================================*/
|
||||
void LogDataDialogClass::printf(char *text, ...)
|
||||
{
|
||||
va_list arguments;
|
||||
va_start(arguments, text);
|
||||
} // printf
|
||||
|
||||
void LogDataDialogClass::printf(char * text, const va_list & args)
|
||||
{
|
||||
static char string_buffer[256];
|
||||
|
||||
vsprintf(string_buffer, text, args);
|
||||
|
||||
HWND ctrlHwnd = GetDlgItem(Hwnd, IDC_ANIM_LOG_RICHEDIT);
|
||||
|
||||
SendMessage(ctrlHwnd, EM_SETSEL, -1, -1 );
|
||||
SendMessage(ctrlHwnd, EM_REPLACESEL, FALSE, (long)string_buffer);
|
||||
|
||||
last_buffer_index = buffer_index;
|
||||
buffer_index+=strlen(string_buffer);
|
||||
|
||||
//int min,max,pos;
|
||||
//GetScrollRange(ctrlHwnd, SB_VERT, &min, &max);
|
||||
//pos = GetScrollPos(ctrlHwnd, SB_VERT);
|
||||
|
||||
//if (pos == max) {
|
||||
SendMessage(GetDlgItem(Hwnd,IDC_ANIM_LOG_RICHEDIT), EM_SCROLLCARET, 0, 0);
|
||||
//}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/***********************************************************************************************
|
||||
* LogDataDialogClass::rprintf -- replace last printf, with this new printf *
|
||||
* *
|
||||
* INPUT: *
|
||||
* *
|
||||
* OUTPUT: *
|
||||
* *
|
||||
* WARNINGS: *
|
||||
* *
|
||||
* HISTORY: *
|
||||
* 02/14/2000 JGA : Created. *
|
||||
*=============================================================================================*/
|
||||
void LogDataDialogClass::rprintf(char *text, ...)
|
||||
{
|
||||
va_list arguments;
|
||||
va_start(arguments, text);
|
||||
|
||||
rprintf(text,arguments);
|
||||
}
|
||||
|
||||
void LogDataDialogClass::rprintf(char *text, const va_list & args)
|
||||
{
|
||||
static char string_buffer[256];
|
||||
vsprintf(string_buffer, text, args);
|
||||
|
||||
HWND ctrlHwnd = GetDlgItem(Hwnd, IDC_ANIM_LOG_RICHEDIT);
|
||||
|
||||
SendMessage(ctrlHwnd, EM_SETSEL, last_buffer_index, buffer_index );
|
||||
SendMessage(ctrlHwnd, EM_REPLACESEL, FALSE, (long)string_buffer);
|
||||
|
||||
buffer_index = strlen(string_buffer) + last_buffer_index;
|
||||
|
||||
//int min,max,pos;
|
||||
//GetScrollRange(ctrlHwnd, SB_VERT, &min, &max);
|
||||
//pos = GetScrollPos(ctrlHwnd, SB_VERT);
|
||||
|
||||
//SendMessage(GetDlgItem(Hwnd,IDC_ANIM_LOG_RICHEDIT), EM_SCROLLCARET, 0, 0);
|
||||
|
||||
} // rprintf
|
||||
|
||||
|
||||
/***********************************************************************************************
|
||||
* LogDataDialogClass::updatebar - send message to progress meter *
|
||||
* *
|
||||
* INPUT: *
|
||||
* *
|
||||
* OUTPUT: *
|
||||
* *
|
||||
* WARNINGS: *
|
||||
* *
|
||||
* HISTORY: *
|
||||
* 02/14/2000 JGA : Created. *
|
||||
*=============================================================================================*/
|
||||
void LogDataDialogClass::updatebar(float position, float total)
|
||||
{
|
||||
int pos;
|
||||
|
||||
pos = ((position / total) * 100.0f);
|
||||
|
||||
HWND ctrlHwnd = GetDlgItem(Hwnd, IDC_ANIM_COMPRESS_PROGRESS);
|
||||
|
||||
SendMessage(ctrlHwnd, PBM_SETPOS, pos, 0 );
|
||||
|
||||
} // updatebar
|
||||
|
||||
|
||||
/***********************************************************************************************
|
||||
* LogDataDialogClass::Wait_OK - Give user a chance to review log, then hit ok *
|
||||
* *
|
||||
* INPUT: *
|
||||
* *
|
||||
* OUTPUT: *
|
||||
* *
|
||||
* WARNINGS: *
|
||||
* *
|
||||
* HISTORY: *
|
||||
* 02/14/2000 JGA : Created. *
|
||||
*=============================================================================================*/
|
||||
void LogDataDialogClass::Wait_OK()
|
||||
{
|
||||
::EnableWindow(GetDlgItem(Hwnd,IDOK),TRUE);
|
||||
::SetForegroundWindow(Hwnd);
|
||||
|
||||
while (status < 2) {
|
||||
// wait for the OK
|
||||
}
|
||||
|
||||
} // Wait_OK
|
||||
|
||||
|
||||
|
||||
/***********************************************************************************************
|
||||
* LogDataDialogClass::Dialog_Proc -- Handles the windows message for the options dialog *
|
||||
* *
|
||||
* INPUT: *
|
||||
* *
|
||||
* OUTPUT: *
|
||||
* *
|
||||
* WARNINGS: *
|
||||
* *
|
||||
* HISTORY: *
|
||||
* 07/24/1997 GH : Created. *
|
||||
*=============================================================================================*/
|
||||
bool LogDataDialogClass::Dialog_Proc
|
||||
(
|
||||
HWND hwnd,
|
||||
UINT message,
|
||||
WPARAM wParam,
|
||||
LPARAM
|
||||
)
|
||||
{
|
||||
int code = HIWORD(wParam);
|
||||
|
||||
switch (message ) {
|
||||
|
||||
/*******************************************************************
|
||||
* WM_INITDIALOG
|
||||
*
|
||||
* Initialize all of the custom controls for the dialog box
|
||||
*
|
||||
*******************************************************************/
|
||||
case WM_INITDIALOG:
|
||||
|
||||
Dialog_Init();
|
||||
return TRUE;
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
* WM_COMMAND
|
||||
*
|
||||
*
|
||||
*******************************************************************/
|
||||
case WM_COMMAND:
|
||||
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDOK:
|
||||
|
||||
status = 2;
|
||||
|
||||
EndDialog(Hwnd, 1);
|
||||
Hwnd = NULL;
|
||||
return TRUE;
|
||||
break;
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
//case WM_VSCROLL:
|
||||
// return TRUE;
|
||||
// break;
|
||||
|
||||
case WM_CLOSE:
|
||||
|
||||
if (status >= 2) {
|
||||
EndDialog(Hwnd, 1);
|
||||
Hwnd = NULL;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
break;
|
||||
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
} // Dialog_Proc
|
||||
|
||||
void LogDataDialogClass::Dialog_Init()
|
||||
{
|
||||
|
||||
SetCursor(LoadCursor (NULL, IDC_ARROW));
|
||||
|
||||
RECT desktop;
|
||||
RECT ourwin;
|
||||
|
||||
GetWindowRect(GetDesktopWindow(), &desktop);
|
||||
GetWindowRect(Hwnd, &ourwin);
|
||||
|
||||
int sx,sy,cx,cy;
|
||||
|
||||
sx = ourwin.right - ourwin.left;
|
||||
sy = ourwin.bottom - ourwin.top;
|
||||
|
||||
cx = (((desktop.right - desktop.left) - sx)/2) + desktop.left;
|
||||
cy = (((desktop.bottom - desktop.top) - sy)/2) + desktop.top;
|
||||
|
||||
//SetWindowPos(Hwnd, HWND_TOPMOST, cx, cy, 0, 0, SWP_NOSIZE);
|
||||
SetWindowPos(Hwnd, HWND_TOP, cx, cy, 0, 0, SWP_NOSIZE);
|
||||
|
||||
EnableWindow(GetDlgItem(Hwnd,IDOK),FALSE);
|
||||
|
||||
status = 1; // signal init
|
||||
|
||||
|
||||
} // Dialog_Init
|
||||
|
||||
|
||||
|
||||
/***********************************************************************************************
|
||||
* _logdata_dialog_proc -- thunks into the logdata dialog class's windows message handler *
|
||||
* *
|
||||
* INPUT: *
|
||||
* *
|
||||
* OUTPUT: *
|
||||
* *
|
||||
* WARNINGS: *
|
||||
* *
|
||||
* HISTORY: *
|
||||
* 02/09/2000 JGA : Created. *
|
||||
*=============================================================================================*/
|
||||
BOOL CALLBACK _logdata_dialog_proc
|
||||
(
|
||||
HWND hwnd,
|
||||
UINT message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam
|
||||
)
|
||||
{
|
||||
if (message == WM_INITDIALOG) {
|
||||
LogDataDialogClass * log = (LogDataDialogClass *)lParam;
|
||||
log->Hwnd = hwnd;
|
||||
::SetProp(hwnd,"LogDataDialogClass",(HANDLE)log);
|
||||
}
|
||||
|
||||
LogDataDialogClass * log = (LogDataDialogClass *)::GetProp(hwnd,"LogDataDialogClass");
|
||||
|
||||
if (message == WM_DESTROY) {
|
||||
::RemoveProp(hwnd,"LogDataDialogClass");
|
||||
}
|
||||
|
||||
if (log) {
|
||||
return log->Dialog_Proc(hwnd,message,wParam,lParam);
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
} // _logdata_dialog_proc
|
||||
|
||||
|
||||
DWORD WINAPI _logdata_thread_function(LPVOID log_obj_ptr)
|
||||
{
|
||||
// put logdata dialog box (lpParameter is the "this" pointer of the object)
|
||||
DialogBoxParam( AppInstance,
|
||||
MAKEINTRESOURCE(IDD_W3D_LOG),
|
||||
((LogDataDialogClass*)log_obj_ptr)->ParentHwnd,
|
||||
(DLGPROC) _logdata_dialog_proc,
|
||||
(LPARAM) log_obj_ptr);
|
||||
|
||||
|
||||
// When this exits it should terminate the thread
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
// EOF - logdlg.cpp
|
||||
Reference in New Issue
Block a user