X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fcamwindow.h;h=d0722a79cef512d3878e06b4b7714b80a9ca8f16;hb=83113718a4fb6a8e2318841f16f8a0b0eb85675c;hp=b8d1be75ca0e5bf5860d100bb3196e289d176b17;hpb=ab3a99dbbe84a0d130fea4d0ceb7b79d7ed07eb7;p=xonotic%2Fnetradiant.git diff --git a/radiant/camwindow.h b/radiant/camwindow.h index b8d1be75..d0722a79 100644 --- a/radiant/camwindow.h +++ b/radiant/camwindow.h @@ -1,171 +1,82 @@ /* -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 + */ -#ifndef _CAMWINDOW_H_ -#define _CAMWINDOW_H_ +#if !defined( INCLUDED_CAMWINDOW_H ) +#define INCLUDED_CAMWINDOW_H -class XYWnd; +#include +#include "math/vector.h" +#include "signal/signalfwd.h" -#include "glwindow.h" +class CamWnd; +CamWnd* NewCamWnd(); +void DeleteCamWnd( CamWnd* camwnd ); -class rectangle_t -{ -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; -}; +void AddCameraMovedCallback( const SignalHandler& handler ); + +void CamWnd_Update( CamWnd& camwnd ); + +ui::GLArea CamWnd_getWidget( CamWnd& camwnd ); +void CamWnd_setParent( CamWnd& camwnd, ui::Window parent ); + +void GlobalCamera_setCamWnd( CamWnd& camwnd ); + +void fill_view_camera_menu( ui::Menu menu ); +void CamWnd_constructToolbar( ui::Toolbar toolbar ); +void CamWnd_registerShortcuts(); + +void GlobalCamera_Benchmark(); -class XORRectangle +const Vector3& Camera_getOrigin( CamWnd& camwnd ); +void Camera_setOrigin( CamWnd& camwnd, const Vector3& origin ); + +enum { -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); - } - } - 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; - - GdkGC* m_gc; - GtkWidget* m_widget; + CAMERA_PITCH = 0, // up / down + CAMERA_YAW = 1, // left / right + CAMERA_ROLL = 2, // fall over }; -class CamWnd : public GLWindow +const Vector3& Camera_getAngles( CamWnd& camwnd ); +void Camera_setAngles( CamWnd& camwnd, const Vector3& angles ); + + +struct camwindow_globals_t { -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]); + 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 ){ + } + }; +extern camwindow_globals_t g_camwindow_globals; + +void CamWnd_Construct(); +void CamWnd_Destroy(); -#endif // _CAMWINDOW_H_ +#endif