2 Copyright (C) 1999-2006 Id Software, Inc. and contributors.
3 For a list of contributors, see the accompanying CONTRIBUTORS file.
5 This file is part of GtkRadiant.
7 GtkRadiant is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 GtkRadiant is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GtkRadiant; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 #if !defined(INCLUDED_XYWINDOW_H)
23 #define INCLUDED_XYWINDOW_H
25 #include "math/matrix.h"
27 #include "gtkutil/cursor.h"
28 #include "gtkutil/window.h"
29 #include "gtkutil/xorrectangle.h"
34 class SelectionSystemWindowObserver;
39 typedef struct _GtkWindow GtkWindow;
40 typedef struct _GtkMenu GtkMenu;
46 void OnClipMode(bool enabled);
56 inline const char* ViewType_getTitle(VIEWTYPE viewtype)
75 GtkWidget* m_gl_widget;
77 guint m_exposeHandler;
79 DeferredDraw m_deferredDraw;
80 DeferredMotion m_deferred_motion;
88 m_deferredDraw.draw();
90 GtkWidget* GetWidget()
96 SelectionSystemWindowObserver* m_window_observer;
97 XORRectangle m_XORRectangle;
98 WindowPositionTracker m_positionTracker;
100 static void captureStates();
101 static void releaseStates();
103 void PositionView(const Vector3& position);
104 const Vector3& GetOrigin();
105 void SetOrigin(const Vector3& origin);
106 void Scroll(int x, int y);
109 void DrawCameraIcon(const Vector3& origin, const Vector3& angles);
110 void XY_DrawBlockGrid();
113 void XY_MouseUp(int x, int y, unsigned int buttons);
114 void XY_MouseDown(int x, int y, unsigned int buttons);
115 void XY_MouseMoved(int x, int y, unsigned int buttons);
117 void NewBrushDrag_Begin(int x, int y);
118 void NewBrushDrag(int x, int y);
119 void NewBrushDrag_End(int x, int y);
121 void XY_ToPoint(int x, int y, Vector3& point);
122 void XY_SnapToGrid(Vector3& point);
127 guint m_move_focusOut;
132 guint m_zoom_focusOut;
134 void SetActive(bool b)
143 void Clipper_OnLButtonDown(int x, int y);
144 void Clipper_OnLButtonUp(int x, int y);
145 void Clipper_OnMouseMoved(int x, int y);
146 void Clipper_Crosshair_OnMouseMoved(int x, int y);
147 void DropClipPoint(int pointx, int pointy);
149 void SetViewType(VIEWTYPE n);
152 static GtkMenu* m_mnuDrop;
154 int m_chasemouse_current_x, m_chasemouse_current_y;
155 int m_chasemouse_delta_x, m_chasemouse_delta_y;
158 guint m_chasemouse_handler;
160 bool chaseMouseMotion(int pointx, int pointy);
162 void updateModelview();
163 void updateProjection();
164 Matrix4 m_projection;
175 static Shader* m_state_selected;
177 int m_ptCursorX, m_ptCursorY;
179 unsigned int m_buttonstate;
180 void ButtonState_onMouseDown(unsigned int buttons)
182 m_buttonstate |= buttons;
184 void ButtonState_onMouseUp(unsigned int buttons)
186 m_buttonstate &= ~buttons;
188 unsigned int getButtonState() const
190 return m_buttonstate;
193 int m_nNewBrushPressx;
194 int m_nNewBrushPressy;
195 scene::Node* m_NewBrushDrag;
196 bool m_bNewBrushDrag;
198 Vector3 m_mousePosition;
202 void OriginalButtonUp(guint32 nFlags, int point, int pointy);
203 void OriginalButtonDown(guint32 nFlags, int point, int pointy);
205 void OnContextMenu();
206 void PaintSizeInfo(int nDim1, int nDim2, Vector3& vMinBounds, Vector3& vMaxBounds);
208 int m_entityCreate_x, m_entityCreate_y;
212 void EntityCreate_MouseDown(int x, int y);
213 void EntityCreate_MouseMove(int x, int y);
214 void EntityCreate_MouseUp(int x, int y);
216 void OnEntityCreate(const char* item);
217 VIEWTYPE GetViewType()
221 void SetScale(float f);
236 inline void XYWnd_Update(XYWnd& xywnd)
242 struct xywindow_globals_t
244 Vector3 color_gridback;
245 Vector3 color_gridminor;
246 Vector3 color_gridmajor;
247 Vector3 color_gridblock;
248 Vector3 color_gridtext;
249 Vector3 color_brushes;
250 Vector3 color_selbrushes;
251 Vector3 color_clipper;
252 Vector3 color_viewname;
253 Vector3 color_gridminor_alt;
254 Vector3 color_gridmajor_alt;
262 xywindow_globals_t() :
263 color_gridback(1.f, 1.f, 1.f),
264 color_gridminor(0.75f, 0.75f, 0.75f),
265 color_gridmajor(0.5f, 0.5f, 0.5f),
266 color_gridblock(0.f, 0.f, 1.f),
267 color_gridtext(0.f, 0.f, 0.f),
268 color_brushes(0.f, 0.f, 0.f),
269 color_selbrushes(1.f, 0.f, 0.f),
270 color_clipper(0.f, 0.f, 1.f),
271 color_viewname(0.5f, 0.f, 0.75f),
272 color_gridminor_alt(0.f, 0.f, 0.f),
273 color_gridmajor_alt(0.f, 0.f, 0.f),
275 AxisColorX(1.f, 0.f, 0.f),
276 AxisColorY(0.f, 1.f, 0.f),
277 AxisColorZ(0.f, 0.f, 1.f),
285 extern xywindow_globals_t g_xywindow_globals;
288 VIEWTYPE GlobalXYWnd_getCurrentViewType();
290 typedef struct _GtkWindow GtkWindow;
291 void XY_Top_Shown_Construct(GtkWindow* parent);
292 void YZ_Side_Shown_Construct(GtkWindow* parent);
293 void XZ_Front_Shown_Construct(GtkWindow* parent);
295 void XYWindow_Construct();
296 void XYWindow_Destroy();
298 void XYShow_registerCommands();
299 void XYWnd_registerShortcuts();