/*
-Copyright (C) 1999-2007 id Software, Inc. and contributors.
-For a list of contributors, see the accompanying CONTRIBUTORS file.
+ Copyright (C) 1999-2006 Id Software, Inc. and contributors.
+ For a list of contributors, see the accompanying CONTRIBUTORS file.
-This file is part of GtkRadiant.
+ This file is part of GtkRadiant.
-GtkRadiant 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 2 of the License, or
-(at your option) any later version.
+ GtkRadiant 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 2 of the License, or
+ (at your option) any later version.
-GtkRadiant 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.
+ GtkRadiant 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 GtkRadiant; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-*/
+ You should have received a copy of the GNU General Public License
+ along with GtkRadiant; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
/*
-Camera plugin for GtkRadiant
-Copyright (C) 2002 Splash Damage Ltd.
-*/
+ Camera plugin for GtkRadiant
+ Copyright (C) 2002 Splash Damage Ltd.
+ */
#include "camera.h"
extern GtkWidget *g_pEditModeAddRadioButton;
-char* Q_realpath(const char *path, char *resolved_path, size_t size)
-{
-#if defined (__linux__) || defined (__APPLE__)
- return realpath(path, resolved_path);
+char* Q_realpath( const char *path, char *resolved_path, size_t size ){
+#if defined( POSIX )
+ return realpath( path, resolved_path );
+#elif defined( WIN32 )
+ return _fullpath( resolved_path, path, size );
#else
- return _fullpath(resolved_path, path, size);
+#error "unsupported platform"
#endif
}
-static void DoNewCamera( idCameraPosition::positionType type )
-{
+static void DoNewCamera( idCameraPosition::positionType type ){
CCamera *cam = AllocCam();
- if( cam ) {
+ if ( cam ) {
char buf[128];
sprintf( buf, "camera%i", cam->GetCamNum() );
RefreshCamListCombo();
// Go to editmode Add
- gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(g_pEditModeAddRadioButton), TRUE );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( g_pEditModeAddRadioButton ), TRUE );
// Show the camera inspector
DoCameraInspector();
// Start edit mode (if not initiated by DoCameraInspector)
- if( !g_bEditOn )
+ if ( !g_bEditOn ) {
DoStartEdit( GetCurrentCam() );
- } else {
- g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, "No free cameras available.", "Create Camera Error", MB_OK, NULL );
+ }
+ }
+ else {
+ g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, "No free cameras available.", "Create Camera Error", eMB_OK );
}
}
-void DoNewFixedCamera()
-{
+void DoNewFixedCamera(){
DoNewCamera( idCameraPosition::FIXED );
}
-void DoNewInterpolatedCamera()
-{
+void DoNewInterpolatedCamera(){
DoNewCamera( idCameraPosition::INTERPOLATED );
}
-void DoNewSplineCamera()
-{
+void DoNewSplineCamera(){
DoNewCamera( idCameraPosition::SPLINE );
}
-void DoCameraInspector()
-{
- gtk_widget_show( g_pCameraInspectorWnd );
+void DoCameraInspector(){
+ gtk_widget_show( g_pCameraInspectorWnd );
}
-void DoPreviewCamera()
-{
- if( GetCurrentCam() ) {
+void DoPreviewCamera(){
+ if ( GetCurrentCam() ) {
g_iPreviewRunning = 1;
g_FuncTable.m_pfnSysUpdateWindows( W_XY_OVERLAY | W_CAMERA );
}
}
-void DoLoadCamera()
-{
- char basepath[PATH_MAX];
-
- if( firstCam && firstCam->HasBeenSaved() )
- CAMERA_ExtractFilePath( firstCam->GetFileName(), basepath );
- else
- strcpy( basepath, g_FuncTable.m_pfnGetGamePath() );
-
- const gchar *filename = g_FuncTable.m_pfnFileDialog( (GtkWidget *)g_pRadiantWnd, TRUE, "Open Camera File", basepath, "camera");
-
- if( filename )
- {
- CCamera *cam = AllocCam();
- char fullpathtofile[PATH_MAX];
-
- if( cam ) {
- Q_realpath(filename, fullpathtofile, PATH_MAX);
-
- // see if this camera file was already loaded
- CCamera *checkCam = firstCam->GetNext(); // not the first one as we just allocated it
- while( checkCam ) {
- if( !strcmp( fullpathtofile, checkCam->GetFileName() ) ) {
- char error[PATH_MAX+64];
- FreeCam( cam );
- sprintf( error, "Camera file \'%s\' is already loaded", fullpathtofile );
- g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, error, "Load error", MB_OK, NULL );
- //g_free( filename );
- return;
- }
- checkCam = checkCam->GetNext();
- }
-
- if( loadCamera( cam->GetCamNum(), fullpathtofile ) ) {
+void DoLoadCamera(){
+ char basepath[PATH_MAX];
+
+ if ( firstCam && firstCam->HasBeenSaved() ) {
+ ExtractFilePath( firstCam->GetFileName(), basepath );
+ }
+ else{
+ strcpy( basepath, g_FuncTable.m_pfnGetGamePath() );
+ }
+
+ const gchar *filename = g_FuncTable.m_pfnFileDialog( (GtkWidget *)g_pRadiantWnd, TRUE, "Open Camera File", basepath, "camera" );
+
+ if ( filename ) {
+ CCamera *cam = AllocCam();
+ char fullpathtofile[PATH_MAX];
+
+ if ( cam ) {
+ Q_realpath( filename, fullpathtofile, PATH_MAX );
+
+ // see if this camera file was already loaded
+ CCamera *checkCam = firstCam->GetNext(); // not the first one as we just allocated it
+ while ( checkCam ) {
+ if ( !strcmp( fullpathtofile, checkCam->GetFileName() ) ) {
+ char error[PATH_MAX + 64];
+ FreeCam( cam );
+ sprintf( error, "Camera file \'%s\' is already loaded", fullpathtofile );
+ g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, error, "Load error", eMB_OK );
+ //g_free( filename );
+ return;
+ }
+ checkCam = checkCam->GetNext();
+ }
+
+ if ( loadCamera( cam->GetCamNum(), fullpathtofile ) ) {
cam->GetCam()->buildCamera();
- cam->SetFileName( filename, true );
- SetCurrentCam( cam );
- RefreshCamListCombo();
- g_FuncTable.m_pfnSysUpdateWindows( W_XY_OVERLAY | W_CAMERA );
- } else {
- char error[PATH_MAX+64];
- FreeCam( cam );
- sprintf( error, "An error occured during the loading of \'%s\'", fullpathtofile );
- g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, error, "Load error", MB_OK, NULL );
- }
-
- //g_free( filename );
- } else {
- g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, "No free camera slots available", "Load error", MB_OK, NULL );
- }
+ cam->SetFileName( filename, true );
+ SetCurrentCam( cam );
+ RefreshCamListCombo();
+ g_FuncTable.m_pfnSysUpdateWindows( W_XY_OVERLAY | W_CAMERA );
+ }
+ else {
+ char error[PATH_MAX + 64];
+ FreeCam( cam );
+ sprintf( error, "An error occured during the loading of \'%s\'", fullpathtofile );
+ g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, error, "Load error", eMB_OK );
+ }
+
+ //g_free( filename );
+ }
+ else {
+ g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, "No free camera slots available", "Load error", eMB_OK );
+ }
}
}
void DoSaveCamera() {
- char basepath[PATH_MAX];
+ char basepath[PATH_MAX];
- if( !GetCurrentCam() )
- return;
+ if ( !GetCurrentCam() ) {
+ return;
+ }
- if( GetCurrentCam()->GetFileName()[0] )
- CAMERA_ExtractFilePath( GetCurrentCam()->GetFileName(), basepath );
- else
- strcpy( basepath, g_FuncTable.m_pfnGetGamePath() );
+ if ( GetCurrentCam()->GetFileName()[0] ) {
+ ExtractFilePath( GetCurrentCam()->GetFileName(), basepath );
+ }
+ else{
+ strcpy( basepath, g_FuncTable.m_pfnGetGamePath() );
+ }
- const gchar *filename = g_FuncTable.m_pfnFileDialog( (void *)g_pRadiantWnd, FALSE, "Save Camera File", basepath, "camera");
+ const gchar *filename = g_FuncTable.m_pfnFileDialog( g_pRadiantWnd, FALSE, "Save Camera File", basepath, "camera" );
- if( filename ) {
- char fullpathtofile[PATH_MAX + 8];
+ if ( filename ) {
+ char fullpathtofile[PATH_MAX + 8];
- Q_realpath(filename, fullpathtofile, PATH_MAX);
+ Q_realpath( filename, fullpathtofile, PATH_MAX );
// File dialog from windows (and maybe the gtk one from radiant) doesn't handle default extensions properly.
// Add extension and check again if file exists
- if( strcmp( fullpathtofile + (strlen(fullpathtofile) - 7), ".camera" ) ) {
+ if ( strcmp( fullpathtofile + ( strlen( fullpathtofile ) - 7 ), ".camera" ) ) {
strcat( fullpathtofile, ".camera" );
- if( FileExists( fullpathtofile ) ) {
- if ( g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, "File already exists.\nOverwrite?", "Save Camera File", MB_YESNO, NULL ) == IDNO ) {
+ if ( FileExists( fullpathtofile ) ) {
+ if ( g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, "File already exists.\nOverwrite?", "Save Camera File", eMB_YESNO ) == eIDNO ) {
return;
}
}
}
- // see if this camera file was already loaded
- CCamera *checkCam = firstCam;
- while( checkCam ) {
- if( checkCam == GetCurrentCam() ) {
- checkCam = checkCam->GetNext();
- if( !checkCam ) // we only have one camera file opened so no need to check further
+ // see if this camera file was already loaded
+ CCamera *checkCam = firstCam;
+ while ( checkCam ) {
+ if ( checkCam == GetCurrentCam() ) {
+ checkCam = checkCam->GetNext();
+ if ( !checkCam ) { // we only have one camera file opened so no need to check further
break;
- } else if( !strcmp( fullpathtofile, checkCam->GetFileName() ) ) {
- char error[PATH_MAX+64];
- sprintf( error, "Camera file \'%s\' is currently loaded by GtkRadiant.\nPlease select a different filename.", fullpathtofile );
- g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, error, "Save error", MB_OK, NULL );
- return;
- }
- checkCam = checkCam->GetNext();
- }
-
- // FIXME: check for existing directory
-
- GetCurrentCam()->GetCam()->save( fullpathtofile );
+ }
+ }
+ else if ( !strcmp( fullpathtofile, checkCam->GetFileName() ) ) {
+ char error[PATH_MAX + 64];
+ sprintf( error, "Camera file \'%s\' is currently loaded by NetRadiant.\nPlease select a different filename.", fullpathtofile );
+ g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, error, "Save error", eMB_OK );
+ return;
+ }
+ checkCam = checkCam->GetNext();
+ }
+
+ // FIXME: check for existing directory
+
+ GetCurrentCam()->GetCam()->save( fullpathtofile );
GetCurrentCam()->SetFileName( fullpathtofile, true );
RefreshCamListCombo();
- }
+ }
}
void DoUnloadCamera() {
- if( !GetCurrentCam() )
- return;
+ if ( !GetCurrentCam() ) {
+ return;
+ }
- if( !GetCurrentCam()->HasBeenSaved() ) {
- char buf[PATH_MAX+64];
+ if ( !GetCurrentCam()->HasBeenSaved() ) {
+ char buf[PATH_MAX + 64];
sprintf( buf, "Do you want to save the changes for camera '%s'?", GetCurrentCam()->GetCam()->getName() );
- if ( g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, buf, "Warning", MB_YESNO, NULL ) == IDYES ) {
+ if ( g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, buf, "Warning", eMB_YESNO ) == eIDYES ) {
DoSaveCamera();
}
- } else if( GetCurrentCam()->HasBeenSaved() == 2 ) {
- char buf[PATH_MAX+64];
+ }
+ else if ( GetCurrentCam()->HasBeenSaved() == 2 ) {
+ char buf[PATH_MAX + 64];
sprintf( buf, "Do you want to save the changes made to camera file '%s'?", GetCurrentCam()->GetFileName() );
- if( g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, buf, "Warning", MB_YESNO, NULL ) == IDYES ) {
+ if ( g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, buf, "Warning", eMB_YESNO ) == eIDYES ) {
DoSaveCamera();
}
}
- if( g_pCurrentEditCam ) {
- DoStopEdit();
- g_pCurrentEditCam = NULL;
- }
+ if ( g_pCurrentEditCam ) {
+ DoStopEdit();
+ g_pCurrentEditCam = NULL;
+ }
FreeCam( GetCurrentCam() );
SetCurrentCam( NULL );
CCamera *g_pCurrentEditCam = NULL;
void DoStartEdit( CCamera *cam ) {
- if( g_pCurrentEditCam ) {
- DoStopEdit();
- g_pCurrentEditCam = NULL;
- }
+ if ( g_pCurrentEditCam ) {
+ DoStopEdit();
+ g_pCurrentEditCam = NULL;
+ }
- if( cam ) {
- g_bEditOn = true;
+ if ( cam ) {
+ g_bEditOn = true;
- if( !Listener )
- Listener = new CListener;
+ if ( !Listener ) {
+ Listener = new CListener;
+ }
- cam->GetCam()->startEdit( g_iActiveTarget < 0 ? true : false );
+ cam->GetCam()->startEdit( g_iActiveTarget < 0 ? true : false );
- g_pCurrentEditCam = cam;
+ g_pCurrentEditCam = cam;
- g_FuncTable.m_pfnSysUpdateWindows( W_XY_OVERLAY | W_CAMERA );
- }
+ g_FuncTable.m_pfnSysUpdateWindows( W_XY_OVERLAY | W_CAMERA );
+ }
}
void DoStopEdit( void ) {
- g_bEditOn = false;
+ g_bEditOn = false;
- if( Listener ) {
- delete Listener;
- Listener = NULL;
- }
+ if ( Listener ) {
+ delete Listener;
+ Listener = NULL;
+ }
- if( g_pCurrentEditCam ) {
- // stop editing on the current cam
- g_pCurrentEditCam->GetCam()->stopEdit();
- g_pCurrentEditCam = NULL;
+ if ( g_pCurrentEditCam ) {
+ // stop editing on the current cam
+ g_pCurrentEditCam->GetCam()->stopEdit();
+ g_pCurrentEditCam = NULL;
- g_FuncTable.m_pfnSysUpdateWindows( W_XY_OVERLAY | W_CAMERA );
- }
+ g_FuncTable.m_pfnSysUpdateWindows( W_XY_OVERLAY | W_CAMERA );
+ }
}