X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fnetradiant.git;a=blobdiff_plain;f=radiant%2Fcamwindow.h;h=8e578c8598fb830eba65750c7d9773065370e4af;hp=0978e68382c4e33cd2ca3bc9882ce642bc29de91;hb=bbe9ab19c2012a84d1e0080e2e1bb8f8a402f13c;hpb=830125fad042fad35dc029b6eb57c8156ad7e176 diff --git a/radiant/camwindow.h b/radiant/camwindow.h index 0978e683..8e578c85 100644 --- a/radiant/camwindow.h +++ b/radiant/camwindow.h @@ -1,5 +1,5 @@ /* - Copyright (C) 1999-2007 id Software, Inc. and contributors. + 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. @@ -19,148 +19,68 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef _CAMWINDOW_H_ -#define _CAMWINDOW_H_ +#if !defined( INCLUDED_CAMWINDOW_H ) +#define INCLUDED_CAMWINDOW_H -class XYWnd; +#include "math/vector.h" +#include "signal/signalfwd.h" -#include "glwindow.h" +typedef struct _GtkWidget GtkWidget; +typedef struct _GtkWindow GtkWindow; -class rectangle_t +class CamWnd; +CamWnd* NewCamWnd(); +void DeleteCamWnd( CamWnd* camwnd ); + +void AddCameraMovedCallback( const SignalHandler& handler ); + +void CamWnd_Update( CamWnd& camwnd ); + +GtkWidget* CamWnd_getWidget( CamWnd& camwnd ); +void CamWnd_setParent( CamWnd& camwnd, GtkWindow* parent ); + +void GlobalCamera_setCamWnd( CamWnd& camwnd ); + +typedef struct _GtkMenu GtkMenu; +void fill_view_camera_menu( GtkMenu* menu ); +typedef struct _GtkToolbar GtkToolbar; +void CamWnd_constructToolbar( GtkToolbar* toolbar ); +void CamWnd_registerShortcuts(); + +void GlobalCamera_Benchmark(); + +const Vector3& Camera_getOrigin( CamWnd& camwnd ); +void Camera_setOrigin( CamWnd& camwnd, const Vector3& origin ); + +enum { -public: -rectangle_t() - : x( 0 ), y( 0 ), w( 0 ), h( 0 ) -{} -rectangle_t( float _x, float _y, float _w, float _h ) - : x( _x ), y( _y ), w( _w ), h( _h ) -{} -float x; -float y; -float w; -float h; + CAMERA_PITCH = 0, // up / down + CAMERA_YAW = 1, // left / right + CAMERA_ROLL = 2, // fall over }; -class XORRectangle +const Vector3& Camera_getAngles( CamWnd& camwnd ); +void Camera_setAngles( CamWnd& camwnd, const Vector3& angles ); + + +struct camwindow_globals_t { -public: -XORRectangle( GtkWidget* widget ) - : m_widget( widget ), m_gc( NULL ) -{} -~XORRectangle(){ - if ( initialised() ) { - gdk_gc_unref( m_gc ); - } -} -void set( rectangle_t rectangle ){ - lazy_init(); - draw(); - m_rectangle = rectangle; - draw(); -} -private: -bool initialised() const { - return m_gc != NULL; -} -void lazy_init(){ - if ( !initialised() ) { - m_gc = gdk_gc_new( m_widget->window ); - - GdkColor color = { 0, 0xffff, 0xffff, 0xffff, }; - GdkColormap* colormap = gdk_window_get_colormap( m_widget->window ); - gdk_colormap_alloc_color( colormap, &color, FALSE, TRUE ); - gdk_gc_copy( m_gc, m_widget->style->white_gc ); - gdk_gc_set_foreground( m_gc, &color ); - gdk_gc_set_background( m_gc, &color ); - - gdk_gc_set_function( m_gc, GDK_XOR ); + Vector3 color_cameraback; + Vector3 color_selbrushes3d; + + int m_nCubicScale; + + camwindow_globals_t() : + color_cameraback( 0.25f, 0.25f, 0.25f ), + color_selbrushes3d( 1.0f, 0.f, 0.f ), + m_nCubicScale( 13 ){ } -} -void draw() const { - const int x = (int)m_rectangle.x; - const int y = (int)m_rectangle.y; - const int w = (int)m_rectangle.w; - const int h = (int)m_rectangle.h; - gdk_draw_rectangle( m_widget->window, m_gc, TRUE, x, -( h ) - ( y - m_widget->allocation.height ), w, h ); -} - -rectangle_t m_rectangle; - -GtkWidget* m_widget; -GdkGC* m_gc; -}; -class CamWnd : public GLWindow -{ -public: -void MatchViewAxes( const vec3_t P, const vec3_t vec, int &axis, float &sgn ); -void ReInitGL(); -void BenchMark(); -CamWnd(); -virtual ~CamWnd(); -camera_t *Camera(){return &m_Camera; }; -void Cam_MouseControl( float dtime ); -void Cam_ChangeFloor( qboolean up ); -void ToggleFreeMove(); -bool m_bFreeMove; - -protected: -void Cam_Init(); -void Cam_BuildMatrix(); -void Cam_PositionDrag(); -void Cam_KeyControl( float dtime ); -void Cam_MouseDown( int x, int y, int buttons ); -void Cam_MouseUp( int x, int y, int buttons ); -void Cam_MouseMoved( int x, int y, int buttons ); -void InitCull(); -qboolean CullBrush( brush_t *b ); -void Cam_Draw(); -void Cam_DrawStuff(); -void Cam_DrawBrushes( int mode ); -void Cam_DrawBrush( brush_t *b, int mode ); - -brush_t* m_TransBrushes[MAX_MAP_BRUSHES]; -int m_nNumTransBrushes; -camera_t m_Camera; -int m_nCambuttonstate; -int m_ptButtonX; -int m_ptCursorX; -int m_ptLastCursorX; -int m_ptLastCamCursorX; -int m_ptButtonY; -int m_ptCursorY; -int m_ptLastCursorY; -int m_ptLastCamCursorY; -face_t* m_pSide_select; -vec3_t m_vCull1; -vec3_t m_vCull2; -int m_nCullv1[3]; -int m_nCullv2[3]; -bool m_bClipMode; -guint m_FocusOutHandler_id; - -void OnCreate(); -void OnExpose(); -void OnLButtonDown( guint32 flags, int x, int y ); -void OnRButtonDown( guint32 flags, int x, int y ); -void OnMButtonDown( guint32 flags, int x, int y ); -void OnLButtonUp( guint32 flags, int pointx, int pointy ); -void OnRButtonUp( guint32 flags, int pointx, int pointy ); -void OnMButtonUp( guint32 flags, int pointx, int pointy ); -void OnMouseMove( guint32 flags, int pointx, int pointy ); -void OnMouseWheel( bool bUp ); -void OnSize( int cx, int cy ); - -protected: -void OriginalMouseDown( guint32 nFlags, int pointX, int pointY ); -void OriginalMouseUp( guint32 nFlags, int pointX, int pointY ); - -private: -XORRectangle m_XORRectangle; - -// project a point in geometric space into camera space -void ProjectCamera( const vec3_t A, vec_t B[2] ); }; +extern camwindow_globals_t g_camwindow_globals; + +void CamWnd_Construct(); +void CamWnd_Destroy(); -#endif // _CAMWINDOW_H_ +#endif