mirror of
https://github.com/TTimo/GtkRadiant.git
synced 2024-11-09 23:01:55 +00:00
* merged background images back into 1.5 branch
* fixed warnings and bugs (nDim) git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/1.5@315 8a3a26a2-13c4-0310-b231-cf6edde360e5
This commit is contained in:
parent
58f2e361fc
commit
2abefddf8a
3 changed files with 341 additions and 217 deletions
|
@ -188,7 +188,7 @@ void HomePaths_Realise()
|
|||
{
|
||||
#if defined(POSIX)
|
||||
const char* prefix = g_pGameDescription->getKeyValue("prefix");
|
||||
if(!string_empty(prefix))
|
||||
if(!string_empty(prefix))
|
||||
{
|
||||
StringOutputStream path(256);
|
||||
path << DirectoryCleaned(g_get_home_dir()) << prefix << "/";
|
||||
|
@ -515,7 +515,7 @@ public:
|
|||
ASSERT_MESSAGE(strlen(m_path) + strlen(name) < 1024, "");
|
||||
strcpy(fullname, m_path);
|
||||
strcat(fullname, name);
|
||||
globalOutputStream() << "Found '" << fullname << "'\n";
|
||||
globalOutputStream() << "Found '" << fullname << "'\n";
|
||||
GlobalModuleServer_loadModule(fullname);
|
||||
}
|
||||
};
|
||||
|
@ -548,7 +548,7 @@ void Radiant_loadModulesFromRoot(const char* directory)
|
|||
StringOutputStream path(256);
|
||||
path << directory << g_modulesDir;
|
||||
Radiant_loadModules(path.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//! Make COLOR_BRUSHES override worldspawn eclass colour.
|
||||
|
@ -601,7 +601,7 @@ void Radiant_detachGameToolsPathObserver(ModuleObserver& observer)
|
|||
void Radiant_Initialise()
|
||||
{
|
||||
GlobalModuleServer_Initialise();
|
||||
|
||||
|
||||
Radiant_loadModulesFromRoot(AppPath_get());
|
||||
|
||||
Preferences_Load();
|
||||
|
@ -696,7 +696,7 @@ void Paste()
|
|||
if(SelectedFaces_empty())
|
||||
{
|
||||
UndoableCommand undo("paste");
|
||||
|
||||
|
||||
GlobalSelectionSystem().setSelectedAll(false);
|
||||
Selection_Paste();
|
||||
}
|
||||
|
@ -710,16 +710,16 @@ void PasteToCamera()
|
|||
{
|
||||
CamWnd& camwnd = *g_pParentWnd->GetCamWnd();
|
||||
GlobalSelectionSystem().setSelectedAll(false);
|
||||
|
||||
|
||||
UndoableCommand undo("pasteToCamera");
|
||||
|
||||
|
||||
Selection_Paste();
|
||||
|
||||
|
||||
// Work out the delta
|
||||
Vector3 mid;
|
||||
Select_GetMid(mid);
|
||||
Vector3 delta = vector3_subtracted(vector3_snapped(Camera_getOrigin(camwnd), GetGridSize()), mid);
|
||||
|
||||
|
||||
// Move to camera
|
||||
GlobalSelectionSystem().translateSelected(delta);
|
||||
}
|
||||
|
@ -943,7 +943,7 @@ GtkMenuItem* create_colours_menu()
|
|||
create_menu_item_with_mnemonic(menu_in_menu, "Grid Text...", "ChooseGridTextColor");
|
||||
create_menu_item_with_mnemonic(menu_in_menu, "Grid Block...", "ChooseGridBlockColor");
|
||||
create_menu_item_with_mnemonic(menu_in_menu, "Default Brush...", "ChooseBrushColor");
|
||||
create_menu_item_with_mnemonic(menu_in_menu, "Camera Background...", "ChooseCameraBackgroundColor");
|
||||
create_menu_item_with_mnemonic(menu_in_menu, "Camera Background...", "ChooseCameraBackgroundColor");
|
||||
create_menu_item_with_mnemonic(menu_in_menu, "Selected Brush...", "ChooseSelectedBrushColor");
|
||||
create_menu_item_with_mnemonic(menu_in_menu, "Selected Brush (Camera)...", "ChooseCameraSelectedBrushColor");
|
||||
create_menu_item_with_mnemonic(menu_in_menu, "Clipper...", "ChooseClipperColor");
|
||||
|
@ -1012,7 +1012,7 @@ void Console_ToggleShow()
|
|||
GtkWidget* g_page_entity;
|
||||
|
||||
void EntityInspector_ToggleShow()
|
||||
{
|
||||
{
|
||||
GroupDialog_showPage(g_page_entity);
|
||||
}
|
||||
|
||||
|
@ -1191,7 +1191,7 @@ public:
|
|||
{
|
||||
if(path.size() == 1)
|
||||
return true;
|
||||
|
||||
|
||||
if(!path.top().get().isRoot())
|
||||
{
|
||||
Selectable* selectable = Instance_getSelectable(instance);
|
||||
|
@ -2242,7 +2242,7 @@ GtkMenuItem* create_misc_menu()
|
|||
create_menu_item_with_mnemonic(menu, "Map Info...", "MapInfo");
|
||||
// http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=394
|
||||
// create_menu_item_with_mnemonic(menu, "_Print XY View", FreeCaller<WXY_Print>());
|
||||
|
||||
create_menu_item_with_mnemonic(menu, "_Background select", FreeCaller<WXY_BackgroundSelect>());
|
||||
return misc_menu_item;
|
||||
}
|
||||
|
||||
|
@ -2641,7 +2641,7 @@ class MainWindowActive
|
|||
{
|
||||
gtk_widget_show(GTK_WIDGET(g_wait.m_window));
|
||||
}
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
public:
|
||||
|
@ -2719,7 +2719,7 @@ MainFrame::~MainFrame()
|
|||
for(std::vector<GtkWidget*>::iterator i = g_floating_windows.begin(); i != g_floating_windows.end(); ++i)
|
||||
{
|
||||
gtk_widget_destroy(*i);
|
||||
}
|
||||
}
|
||||
|
||||
gtk_widget_destroy(GTK_WIDGET(m_window));
|
||||
}
|
||||
|
@ -3069,7 +3069,7 @@ void MainFrame::Create()
|
|||
m_pXYWnd = new XYWnd();
|
||||
m_pXYWnd->m_parent = window;
|
||||
m_pXYWnd->SetViewType(XY);
|
||||
|
||||
|
||||
|
||||
{
|
||||
GtkFrame* frame = create_framed_widget(m_pXYWnd->GetWidget());
|
||||
|
@ -3151,7 +3151,7 @@ void MainFrame::Create()
|
|||
GtkHPaned* split = create_split_views(camera, yz, xy, xz);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(split), TRUE, TRUE, 0);
|
||||
|
||||
{
|
||||
{
|
||||
GtkFrame* frame = create_framed_widget(TextureBrowser_constructWindow(window));
|
||||
g_page_textures = GroupDialog_addPage("Textures", GTK_WIDGET(frame), TextureBrowserExportTitleCaller());
|
||||
}
|
||||
|
@ -3173,7 +3173,7 @@ void MainFrame::Create()
|
|||
SetStatusText(m_command_status, c_TranslateMode_status);
|
||||
|
||||
EverySecondTimer_enable();
|
||||
|
||||
|
||||
//GlobalShortcuts_reportUnregistered();
|
||||
}
|
||||
|
||||
|
@ -3196,7 +3196,7 @@ void MainFrame::SaveWindowInfo()
|
|||
}
|
||||
|
||||
g_layout_globals.m_position = m_position_tracker.getPosition();
|
||||
|
||||
|
||||
g_layout_globals.nState = gdk_window_get_state(GTK_WIDGET(m_window)->window);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,6 +33,11 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#include "igl.h"
|
||||
#include "ibrush.h"
|
||||
#include "iundo.h"
|
||||
#include "iimage.h"
|
||||
#include "ifilesystem.h"
|
||||
#include "os/path.h"
|
||||
#include "image.h"
|
||||
#include "gtkutil/messagebox.h"
|
||||
|
||||
#include <gtk/gtklabel.h>
|
||||
#include <gtk/gtkmenuitem.h>
|
||||
|
@ -50,6 +55,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#include "gtkutil/container.h"
|
||||
#include "gtkutil/widget.h"
|
||||
#include "gtkutil/glwidget.h"
|
||||
#include "gtkutil/filechooser.h"
|
||||
#include "gtkmisc.h"
|
||||
#include "select.h"
|
||||
#include "csg.h"
|
||||
|
@ -65,6 +71,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#include "grid.h"
|
||||
#include "windowobservers.h"
|
||||
|
||||
void LoadTextureRGBA(qtexture_t* q, unsigned char* pPixels, int nWidth, int nHeight);
|
||||
|
||||
// d1223m
|
||||
extern bool g_brush_always_caulk;
|
||||
|
@ -97,7 +104,7 @@ public:
|
|||
{
|
||||
return m_ptClip;
|
||||
};
|
||||
|
||||
|
||||
/*! Draw clip/path point with rasterized number label */
|
||||
void Draw(int num, float scale);
|
||||
/*! Draw clip/path point with rasterized string label */
|
||||
|
@ -209,7 +216,7 @@ void PlanePointsFromClipPoints(Vector3 planepts[3], const AABB& bounds, int view
|
|||
int n = (viewtype == XY) ? 2 : (viewtype == YZ) ? 0 : 1;
|
||||
int x = (n == 0) ? 1 : 0;
|
||||
int y = (n == 2) ? 1 : 2;
|
||||
|
||||
|
||||
if (n == 1) // on viewtype XZ, flip clip points
|
||||
{
|
||||
planepts[0][n] = maxs[n];
|
||||
|
@ -333,7 +340,7 @@ void NewClipPoint(const Vector3& point)
|
|||
g_Clip3.m_ptClip = point;
|
||||
g_Clip3.Set(true);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
g_Clip1.Reset();
|
||||
g_Clip2.Reset();
|
||||
|
@ -575,7 +582,7 @@ void WXY_Print()
|
|||
img = (unsigned char*)malloc (width*height*3);
|
||||
glReadPixels (0,0,width,height,GL_RGB,GL_UNSIGNED_BYTE,img);
|
||||
|
||||
FILE *fp;
|
||||
FILE *fp;
|
||||
fp = fopen(filename, "wb");
|
||||
if (fp)
|
||||
{
|
||||
|
@ -626,7 +633,7 @@ void WXY_Print()
|
|||
putc(buf[col+1], fp);
|
||||
putc(buf[col], fp);
|
||||
}
|
||||
byteswritten += row_size;
|
||||
byteswritten += row_size;
|
||||
|
||||
unsigned long count;
|
||||
for (count = row_size; count < widthDW; count++)
|
||||
|
@ -850,6 +857,13 @@ XYWnd::XYWnd() :
|
|||
m_fScale = 1;
|
||||
m_viewType = XY;
|
||||
|
||||
m_backgroundActivated = false;
|
||||
m_alpha = 1.0f;
|
||||
m_xmin = 0.0f;
|
||||
m_ymin = 0.0f;
|
||||
m_xmax = 0.0f;
|
||||
m_ymax = 0.0f;
|
||||
|
||||
m_entityCreate = false;
|
||||
|
||||
m_mnuDrop = 0;
|
||||
|
@ -950,7 +964,7 @@ void XYWnd::DropClipPoint(int pointx, int pointy)
|
|||
Vector3 mid;
|
||||
Select_GetMid(mid);
|
||||
g_clip_viewtype = static_cast<VIEWTYPE>(GetViewType());
|
||||
int nDim = (g_clip_viewtype == YZ ) ? nDim = 0 : ( (g_clip_viewtype == XZ) ? nDim = 1 : nDim = 2 );
|
||||
const int nDim = (g_clip_viewtype == YZ ) ? 0 : ( (g_clip_viewtype == XZ) ? 1 : 2 );
|
||||
point[nDim] = mid[nDim];
|
||||
vector3_snap(point, GetGridSize());
|
||||
NewClipPoint(point);
|
||||
|
@ -1112,8 +1126,8 @@ void XYWnd::NewBrushDrag(int x, int y)
|
|||
|
||||
// d1223m
|
||||
//Scene_BrushResize_Selected(GlobalSceneGraph(), aabb_for_minmax(mins, maxs), TextureBrowser_GetSelectedShader(GlobalTextureBrowser()));
|
||||
Scene_BrushResize_Selected(GlobalSceneGraph(), aabb_for_minmax(mins, maxs),
|
||||
g_brush_always_caulk ?
|
||||
Scene_BrushResize_Selected(GlobalSceneGraph(), aabb_for_minmax(mins, maxs),
|
||||
g_brush_always_caulk ?
|
||||
"textures/common/caulk" : TextureBrowser_GetSelectedShader(GlobalTextureBrowser()));
|
||||
}
|
||||
|
||||
|
@ -1344,7 +1358,7 @@ void XYWnd::PositionView(const Vector3& position)
|
|||
|
||||
void XYWnd::SetViewType(VIEWTYPE viewType)
|
||||
{
|
||||
m_viewType = viewType;
|
||||
m_viewType = viewType;
|
||||
updateModelview();
|
||||
|
||||
if(m_parent != 0)
|
||||
|
@ -1389,7 +1403,7 @@ void XYWnd::XY_MouseDown (int x, int y, unsigned int buttons)
|
|||
}
|
||||
// mbutton = angle camera
|
||||
else if(buttons == OrientCamera_buttons())
|
||||
{
|
||||
{
|
||||
XYWnd_OrientCamera(this, x, y, *g_pParentWnd->GetCamWnd());
|
||||
}
|
||||
else
|
||||
|
@ -1453,7 +1467,7 @@ void XYWnd::XY_MouseMoved (int x, int y, unsigned int buttons)
|
|||
|
||||
// mbutton = angle camera
|
||||
else if (getButtonState() == OrientCamera_buttons())
|
||||
{
|
||||
{
|
||||
XYWnd_OrientCamera(this, x, y, *g_pParentWnd->GetCamWnd());
|
||||
}
|
||||
|
||||
|
@ -1556,6 +1570,75 @@ void XYWnd::XY_SnapToGrid(Vector3& point)
|
|||
}
|
||||
}
|
||||
|
||||
void XYWnd::XY_LoadBackgroundImage(const char *name)
|
||||
{
|
||||
const char* relative = path_make_relative(name, GlobalFileSystem().findRoot(name));
|
||||
if (relative == name)
|
||||
globalOutputStream() << "WARNING: could not extract the relative path, using full path instead\n";
|
||||
|
||||
char fileNameWithoutExt[512];
|
||||
strncpy(fileNameWithoutExt, relative, sizeof(fileNameWithoutExt) - 1);
|
||||
fileNameWithoutExt[512 - 1] = '\0';
|
||||
fileNameWithoutExt[strlen(fileNameWithoutExt) - 4] = '\0';
|
||||
|
||||
Image *image = QERApp_LoadImage(0, fileNameWithoutExt);
|
||||
if (!image) {
|
||||
globalOutputStream() << "Could not load texture " << fileNameWithoutExt << "\n";
|
||||
return;
|
||||
}
|
||||
g_pParentWnd->ActiveXY()->m_tex = (qtexture_t*)malloc(sizeof(qtexture_t));
|
||||
LoadTextureRGBA(g_pParentWnd->ActiveXY()->XYWnd::m_tex, image->getRGBAPixels(), image->getWidth(), image->getHeight());
|
||||
globalOutputStream() << "Loaded background texture " << relative << "\n";
|
||||
g_pParentWnd->ActiveXY()->m_backgroundActivated = true;
|
||||
|
||||
int m_ix, m_iy;
|
||||
switch(g_pParentWnd->ActiveXY()->m_viewType)
|
||||
{
|
||||
case XY:
|
||||
m_ix = 0;
|
||||
m_iy = 1;
|
||||
break;
|
||||
case XZ:
|
||||
m_ix = 0;
|
||||
m_iy = 2;
|
||||
break;
|
||||
case YZ:
|
||||
m_ix = 1;
|
||||
m_iy = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
Vector3 min, max;
|
||||
Select_GetBounds(min, max);
|
||||
g_pParentWnd->ActiveXY()->m_xmin = min[m_ix];
|
||||
g_pParentWnd->ActiveXY()->m_ymin = min[m_iy];
|
||||
g_pParentWnd->ActiveXY()->m_xmax = max[m_ix];
|
||||
g_pParentWnd->ActiveXY()->m_ymax = max[m_iy];
|
||||
}
|
||||
|
||||
void XYWnd::XY_DisableBackground (void)
|
||||
{
|
||||
g_pParentWnd->ActiveXY()->m_backgroundActivated = false;
|
||||
if (g_pParentWnd->ActiveXY()->m_tex)
|
||||
free(g_pParentWnd->ActiveXY()->m_tex);
|
||||
g_pParentWnd->ActiveXY()->m_tex = NULL;
|
||||
}
|
||||
|
||||
void WXY_BackgroundSelect(void)
|
||||
{
|
||||
bool brushesSelected = Scene_countSelectedBrushes(GlobalSceneGraph()) != 0;
|
||||
if (!brushesSelected) {
|
||||
gtk_MessageBox(0, "You have to select some brushes to get the bounding box for.\n",
|
||||
"No selection", eMB_OK, eMB_ICONERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
const char *filename = file_dialog(GTK_WIDGET(MainFrame_getWindow()), TRUE, "Background Image", NULL, NULL);
|
||||
g_pParentWnd->ActiveXY()->XY_DisableBackground();
|
||||
if (filename)
|
||||
g_pParentWnd->ActiveXY()->XY_LoadBackgroundImage(filename);
|
||||
}
|
||||
|
||||
/*
|
||||
============================================================================
|
||||
|
||||
|
@ -1575,205 +1658,230 @@ double two_to_the_power(int power)
|
|||
return pow(2.0f, power);
|
||||
}
|
||||
|
||||
void XYWnd::XY_DrawGrid()
|
||||
void XYWnd::XY_DrawAxis(void)
|
||||
{
|
||||
float x, y, xb, xe, yb, ye;
|
||||
float w, h;
|
||||
char text[32];
|
||||
float step, minor_step, stepx, stepy;
|
||||
step = minor_step = stepx = stepy = GetGridSize();
|
||||
|
||||
int minor_power = Grid_getPower();
|
||||
int mask;
|
||||
if ( g_xywindow_globals_private.show_axis) {
|
||||
const char g_AxisName[3] = { 'X', 'Y', 'Z' };
|
||||
const int nDim1 = (m_viewType == YZ) ? 1 : 0;
|
||||
const int nDim2 = (m_viewType == XY) ? 1 : 2;
|
||||
const int w = (m_nWidth / 2 / m_fScale);
|
||||
const int h = (m_nHeight / 2 / m_fScale);
|
||||
|
||||
while((minor_step * m_fScale) <= 4.0f) // make sure minor grid spacing is at least 4 pixels on the screen
|
||||
{
|
||||
++minor_power;
|
||||
minor_step *= 2;
|
||||
}
|
||||
int power = minor_power;
|
||||
while((power % 3) != 0 || (step * m_fScale) <= 32.0f) // make sure major grid spacing is at least 32 pixels on the screen
|
||||
{
|
||||
++power;
|
||||
step = float(two_to_the_power(power));
|
||||
}
|
||||
mask = (1 << (power - minor_power)) - 1;
|
||||
while ((stepx * m_fScale) <= 32.0f) // text step x must be at least 32
|
||||
stepx *= 2;
|
||||
while ((stepy * m_fScale) <= 32.0f) // text step y must be at least 32
|
||||
stepy *= 2;
|
||||
|
||||
const Vector3& colourX = (m_viewType == YZ) ? g_xywindow_globals.AxisColorY : g_xywindow_globals.AxisColorX;
|
||||
const Vector3& colourY = (m_viewType == XY) ? g_xywindow_globals.AxisColorY : g_xywindow_globals.AxisColorZ;
|
||||
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
glDisable(GL_TEXTURE_1D);
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
glDisable(GL_BLEND);
|
||||
glLineWidth(1);
|
||||
// draw two lines with corresponding axis colors to highlight current view
|
||||
// horizontal line: nDim1 color
|
||||
glLineWidth(2);
|
||||
glBegin( GL_LINES );
|
||||
glColor3fv (vector3_to_array(colourX));
|
||||
glVertex2f( m_vOrigin[nDim1] - w + 40 / m_fScale, m_vOrigin[nDim2] + h - 45 / m_fScale );
|
||||
glVertex2f( m_vOrigin[nDim1] - w + 65 / m_fScale, m_vOrigin[nDim2] + h - 45 / m_fScale );
|
||||
glVertex2f( 0, 0 );
|
||||
glVertex2f( 32 / m_fScale, 0 );
|
||||
glColor3fv (vector3_to_array(colourY));
|
||||
glVertex2f( m_vOrigin[nDim1] - w + 40 / m_fScale, m_vOrigin[nDim2] + h - 45 / m_fScale );
|
||||
glVertex2f( m_vOrigin[nDim1] - w + 40 / m_fScale, m_vOrigin[nDim2] + h - 20 / m_fScale );
|
||||
glVertex2f( 0, 0 );
|
||||
glVertex2f( 0, 32 / m_fScale );
|
||||
glEnd();
|
||||
glLineWidth(1);
|
||||
// now print axis symbols
|
||||
glColor3fv (vector3_to_array(colourX));
|
||||
glRasterPos2f ( m_vOrigin[nDim1] - w + 55 / m_fScale, m_vOrigin[nDim2] + h - 55 / m_fScale );
|
||||
GlobalOpenGL().drawChar(g_AxisName[nDim1]);
|
||||
glRasterPos2f (28 / m_fScale, -10 / m_fScale );
|
||||
GlobalOpenGL().drawChar(g_AxisName[nDim1]);
|
||||
glColor3fv (vector3_to_array(colourY));
|
||||
glRasterPos2f ( m_vOrigin[nDim1] - w + 25 / m_fScale, m_vOrigin[nDim2] + h - 30 / m_fScale );
|
||||
GlobalOpenGL().drawChar(g_AxisName[nDim2]);
|
||||
glRasterPos2f ( -10 / m_fScale, 28 / m_fScale );
|
||||
GlobalOpenGL().drawChar(g_AxisName[nDim2]);
|
||||
}
|
||||
}
|
||||
|
||||
w = (m_nWidth / 2 / m_fScale);
|
||||
h = (m_nHeight / 2 / m_fScale);
|
||||
void XYWnd::XY_DrawBackground(void)
|
||||
{
|
||||
glPushAttrib(GL_ALL_ATTRIB_BITS);
|
||||
|
||||
int nDim1 = (m_viewType == YZ) ? 1 : 0;
|
||||
int nDim2 = (m_viewType == XY) ? 1 : 2;
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
|
||||
|
||||
xb = m_vOrigin[nDim1] - w;
|
||||
if (xb < region_mins[nDim1])
|
||||
xb = region_mins[nDim1];
|
||||
xb = step * floor (xb/step);
|
||||
glPolygonMode(GL_FRONT, GL_FILL);
|
||||
|
||||
xe = m_vOrigin[nDim1] + w;
|
||||
if (xe > region_maxs[nDim1])
|
||||
xe = region_maxs[nDim1];
|
||||
xe = step * ceil (xe/step);
|
||||
glBindTexture(GL_TEXTURE_2D, m_tex->texture_number);
|
||||
glBegin(GL_QUADS);
|
||||
|
||||
yb = m_vOrigin[nDim2] - h;
|
||||
if (yb < region_mins[nDim2])
|
||||
yb = region_mins[nDim2];
|
||||
yb = step * floor (yb/step);
|
||||
glColor4f(1.0, 1.0, 1.0, m_alpha);
|
||||
glTexCoord2f(0.0, 1.0);
|
||||
glVertex2f(m_xmin, m_ymin);
|
||||
|
||||
ye = m_vOrigin[nDim2] + h;
|
||||
if (ye > region_maxs[nDim2])
|
||||
ye = region_maxs[nDim2];
|
||||
ye = step * ceil (ye/step);
|
||||
glTexCoord2f(1.0, 1.0);
|
||||
glVertex2f(m_xmax, m_ymin);
|
||||
|
||||
glTexCoord2f(1.0, 0.0);
|
||||
glVertex2f(m_xmax, m_ymax);
|
||||
|
||||
glTexCoord2f(0.0, 0.0);
|
||||
glVertex2f(m_xmin, m_ymax);
|
||||
|
||||
glEnd();
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
|
||||
glPopAttrib();
|
||||
}
|
||||
|
||||
void XYWnd::XY_DrawGrid(void) {
|
||||
float x, y, xb, xe, yb, ye;
|
||||
float w, h;
|
||||
char text[32];
|
||||
float step, minor_step, stepx, stepy;
|
||||
step = minor_step = stepx = stepy = GetGridSize();
|
||||
|
||||
int minor_power = Grid_getPower();
|
||||
int mask;
|
||||
|
||||
while ((minor_step * m_fScale) <= 4.0f) { // make sure minor grid spacing is at least 4 pixels on the screen
|
||||
++minor_power;
|
||||
minor_step *= 2;
|
||||
}
|
||||
int power = minor_power;
|
||||
while ((power % 3) != 0 || (step * m_fScale) <= 32.0f) { // make sure major grid spacing is at least 32 pixels on the screen
|
||||
++power;
|
||||
step = float(two_to_the_power(power));
|
||||
}
|
||||
mask = (1 << (power - minor_power)) - 1;
|
||||
while ((stepx * m_fScale) <= 32.0f) // text step x must be at least 32
|
||||
stepx *= 2;
|
||||
while ((stepy * m_fScale) <= 32.0f) // text step y must be at least 32
|
||||
stepy *= 2;
|
||||
|
||||
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
glDisable(GL_TEXTURE_1D);
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
glDisable(GL_BLEND);
|
||||
glLineWidth(1);
|
||||
|
||||
w = (m_nWidth / 2 / m_fScale);
|
||||
h = (m_nHeight / 2 / m_fScale);
|
||||
|
||||
const int nDim1 = (m_viewType == YZ) ? 1 : 0;
|
||||
const int nDim2 = (m_viewType == XY) ? 1 : 2;
|
||||
|
||||
xb = m_vOrigin[nDim1] - w;
|
||||
if (xb < region_mins[nDim1])
|
||||
xb = region_mins[nDim1];
|
||||
xb = step * floor (xb / step);
|
||||
|
||||
xe = m_vOrigin[nDim1] + w;
|
||||
if (xe > region_maxs[nDim1])
|
||||
xe = region_maxs[nDim1];
|
||||
xe = step * ceil (xe / step);
|
||||
|
||||
yb = m_vOrigin[nDim2] - h;
|
||||
if (yb < region_mins[nDim2])
|
||||
yb = region_mins[nDim2];
|
||||
yb = step * floor (yb / step);
|
||||
|
||||
ye = m_vOrigin[nDim2] + h;
|
||||
if (ye > region_maxs[nDim2])
|
||||
ye = region_maxs[nDim2];
|
||||
ye = step * ceil (ye / step);
|
||||
|
||||
#define COLORS_DIFFER(a,b) \
|
||||
((a)[0] != (b)[0] || \
|
||||
(a)[1] != (b)[1] || \
|
||||
(a)[2] != (b)[2])
|
||||
|
||||
// djbob
|
||||
// draw minor blocks
|
||||
if (g_xywindow_globals_private.d_showgrid)
|
||||
{
|
||||
if (COLORS_DIFFER(g_xywindow_globals.color_gridminor, g_xywindow_globals.color_gridback))
|
||||
{
|
||||
glColor3fv(vector3_to_array(g_xywindow_globals.color_gridminor));
|
||||
// djbob
|
||||
// draw minor blocks
|
||||
if (g_xywindow_globals_private.d_showgrid) {
|
||||
if (COLORS_DIFFER(g_xywindow_globals.color_gridminor, g_xywindow_globals.color_gridback)) {
|
||||
glColor3fv(vector3_to_array(g_xywindow_globals.color_gridminor));
|
||||
|
||||
glBegin (GL_LINES);
|
||||
int i = 0;
|
||||
for (x = xb ; x < xe ; x += minor_step, ++i)
|
||||
{
|
||||
if((i & mask) != 0)
|
||||
{
|
||||
glVertex2f (x, yb);
|
||||
glVertex2f (x, ye);
|
||||
}
|
||||
}
|
||||
i = 0;
|
||||
for (y = yb ; y < ye ; y += minor_step, ++i)
|
||||
{
|
||||
if((i & mask) != 0)
|
||||
{
|
||||
glVertex2f (xb, y);
|
||||
glVertex2f (xe, y);
|
||||
}
|
||||
}
|
||||
glEnd();
|
||||
}
|
||||
glBegin (GL_LINES);
|
||||
int i = 0;
|
||||
for (x = xb ; x < xe ; x += minor_step, ++i) {
|
||||
if ((i & mask) != 0) {
|
||||
glVertex2f (x, yb);
|
||||
glVertex2f (x, ye);
|
||||
}
|
||||
}
|
||||
i = 0;
|
||||
for (y = yb ; y < ye ; y += minor_step, ++i) {
|
||||
if ((i & mask) != 0) {
|
||||
glVertex2f (xb, y);
|
||||
glVertex2f (xe, y);
|
||||
}
|
||||
}
|
||||
glEnd();
|
||||
}
|
||||
|
||||
// draw major blocks
|
||||
if (COLORS_DIFFER(g_xywindow_globals.color_gridmajor, g_xywindow_globals.color_gridback))
|
||||
{
|
||||
glColor3fv(vector3_to_array(g_xywindow_globals.color_gridmajor));
|
||||
// draw major blocks
|
||||
if (COLORS_DIFFER(g_xywindow_globals.color_gridmajor, g_xywindow_globals.color_gridback)) {
|
||||
glColor3fv(vector3_to_array(g_xywindow_globals.color_gridmajor));
|
||||
|
||||
glBegin (GL_LINES);
|
||||
for (x=xb ; x<=xe ; x+=step)
|
||||
{
|
||||
glVertex2f (x, yb);
|
||||
glVertex2f (x, ye);
|
||||
}
|
||||
for (y=yb ; y<=ye ; y+=step)
|
||||
{
|
||||
glVertex2f (xb, y);
|
||||
glVertex2f (xe, y);
|
||||
}
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
glBegin (GL_LINES);
|
||||
for (x = xb ; x <= xe ; x += step) {
|
||||
glVertex2f (x, yb);
|
||||
glVertex2f (x, ye);
|
||||
}
|
||||
for (y = yb ; y <= ye ; y += step) {
|
||||
glVertex2f (xb, y);
|
||||
glVertex2f (xe, y);
|
||||
}
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
|
||||
// draw coordinate text if needed
|
||||
if ( g_xywindow_globals_private.show_coordinates)
|
||||
{
|
||||
glColor3fv(vector3_to_array(g_xywindow_globals.color_gridtext));
|
||||
// draw coordinate text if needed
|
||||
if ( g_xywindow_globals_private.show_coordinates) {
|
||||
glColor3fv(vector3_to_array(g_xywindow_globals.color_gridtext));
|
||||
float offx = m_vOrigin[nDim2] + h - 6 / m_fScale, offy = m_vOrigin[nDim1] - w + 1 / m_fScale;
|
||||
for (x = xb - fmod(xb, stepx); x <= xe ; x += stepx)
|
||||
{
|
||||
glRasterPos2f (x, offx);
|
||||
for (x = xb - fmod(xb, stepx); x <= xe ; x += stepx) {
|
||||
glRasterPos2f (x, offx);
|
||||
sprintf (text, "%g", x);
|
||||
GlobalOpenGL().drawString(text);
|
||||
}
|
||||
for (y = yb - fmod(yb, stepy); y <= ye ; y += stepy)
|
||||
{
|
||||
glRasterPos2f (offy, y);
|
||||
for (y = yb - fmod(yb, stepy); y <= ye ; y += stepy) {
|
||||
glRasterPos2f (offy, y);
|
||||
sprintf (text, "%g", y);
|
||||
GlobalOpenGL().drawString(text);
|
||||
}
|
||||
|
||||
if (Active())
|
||||
glColor3fv(vector3_to_array(g_xywindow_globals.color_viewname));
|
||||
if (Active())
|
||||
glColor3fv(vector3_to_array(g_xywindow_globals.color_viewname));
|
||||
|
||||
// we do this part (the old way) only if show_axis is disabled
|
||||
if (!g_xywindow_globals_private.show_axis)
|
||||
{
|
||||
glRasterPos2f ( m_vOrigin[nDim1] - w + 35 / m_fScale, m_vOrigin[nDim2] + h - 20 / m_fScale );
|
||||
// we do this part (the old way) only if show_axis is disabled
|
||||
if (!g_xywindow_globals_private.show_axis) {
|
||||
glRasterPos2f ( m_vOrigin[nDim1] - w + 35 / m_fScale, m_vOrigin[nDim2] + h - 20 / m_fScale );
|
||||
|
||||
GlobalOpenGL().drawString(ViewType_getTitle(m_viewType));
|
||||
}
|
||||
}
|
||||
GlobalOpenGL().drawString(ViewType_getTitle(m_viewType));
|
||||
}
|
||||
}
|
||||
|
||||
if ( g_xywindow_globals_private.show_axis)
|
||||
{
|
||||
const char g_AxisName[3] = { 'X', 'Y', 'Z' };
|
||||
XYWnd::XY_DrawAxis();
|
||||
|
||||
const Vector3& colourX = (m_viewType == YZ) ? g_xywindow_globals.AxisColorY : g_xywindow_globals.AxisColorX;
|
||||
const Vector3& colourY = (m_viewType == XY) ? g_xywindow_globals.AxisColorY : g_xywindow_globals.AxisColorZ;
|
||||
|
||||
// draw two lines with corresponding axis colors to highlight current view
|
||||
// horizontal line: nDim1 color
|
||||
glLineWidth(2);
|
||||
glBegin( GL_LINES );
|
||||
glColor3fv (vector3_to_array(colourX));
|
||||
glVertex2f( m_vOrigin[nDim1] - w + 40 / m_fScale, m_vOrigin[nDim2] + h - 45 / m_fScale );
|
||||
glVertex2f( m_vOrigin[nDim1] - w + 65 / m_fScale, m_vOrigin[nDim2] + h - 45 / m_fScale );
|
||||
glVertex2f( 0, 0 );
|
||||
glVertex2f( 32 / m_fScale, 0 );
|
||||
glColor3fv (vector3_to_array(colourY));
|
||||
glVertex2f( m_vOrigin[nDim1] - w + 40 / m_fScale, m_vOrigin[nDim2] + h - 45 / m_fScale );
|
||||
glVertex2f( m_vOrigin[nDim1] - w + 40 / m_fScale, m_vOrigin[nDim2] + h - 20 / m_fScale );
|
||||
glVertex2f( 0, 0 );
|
||||
glVertex2f( 0, 32 / m_fScale );
|
||||
glEnd();
|
||||
glLineWidth(1);
|
||||
// now print axis symbols
|
||||
glColor3fv (vector3_to_array(colourX));
|
||||
glRasterPos2f ( m_vOrigin[nDim1] - w + 55 / m_fScale, m_vOrigin[nDim2] + h - 55 / m_fScale );
|
||||
GlobalOpenGL().drawChar(g_AxisName[nDim1]);
|
||||
glRasterPos2f (28 / m_fScale, -10 / m_fScale );
|
||||
GlobalOpenGL().drawChar(g_AxisName[nDim1]);
|
||||
glColor3fv (vector3_to_array(colourY));
|
||||
glRasterPos2f ( m_vOrigin[nDim1] - w + 25 / m_fScale, m_vOrigin[nDim2] + h - 30 / m_fScale );
|
||||
GlobalOpenGL().drawChar(g_AxisName[nDim2]);
|
||||
glRasterPos2f ( -10 / m_fScale, 28 / m_fScale );
|
||||
GlobalOpenGL().drawChar(g_AxisName[nDim2]);
|
||||
|
||||
}
|
||||
|
||||
// show current work zone?
|
||||
// the work zone is used to place dropped points and brushes
|
||||
if (g_xywindow_globals_private.d_show_work)
|
||||
{
|
||||
glColor3f( 1.0f, 0.0f, 0.0f );
|
||||
glBegin( GL_LINES );
|
||||
glVertex2f( xb, Select_getWorkZone().d_work_min[nDim2] );
|
||||
glVertex2f( xe, Select_getWorkZone().d_work_min[nDim2] );
|
||||
glVertex2f( xb, Select_getWorkZone().d_work_max[nDim2] );
|
||||
glVertex2f( xe, Select_getWorkZone().d_work_max[nDim2] );
|
||||
glVertex2f( Select_getWorkZone().d_work_min[nDim1], yb );
|
||||
glVertex2f( Select_getWorkZone().d_work_min[nDim1], ye );
|
||||
glVertex2f( Select_getWorkZone().d_work_max[nDim1], yb );
|
||||
glVertex2f( Select_getWorkZone().d_work_max[nDim1], ye );
|
||||
glEnd();
|
||||
}
|
||||
// show current work zone?
|
||||
// the work zone is used to place dropped points and brushes
|
||||
if (g_xywindow_globals_private.d_show_work) {
|
||||
glColor3f( 1.0f, 0.0f, 0.0f );
|
||||
glBegin( GL_LINES );
|
||||
glVertex2f( xb, Select_getWorkZone().d_work_min[nDim2] );
|
||||
glVertex2f( xe, Select_getWorkZone().d_work_min[nDim2] );
|
||||
glVertex2f( xb, Select_getWorkZone().d_work_max[nDim2] );
|
||||
glVertex2f( xe, Select_getWorkZone().d_work_max[nDim2] );
|
||||
glVertex2f( Select_getWorkZone().d_work_min[nDim1], yb );
|
||||
glVertex2f( Select_getWorkZone().d_work_min[nDim1], ye );
|
||||
glVertex2f( Select_getWorkZone().d_work_max[nDim1], yb );
|
||||
glVertex2f( Select_getWorkZone().d_work_max[nDim1], ye );
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1836,7 +1944,7 @@ void XYWnd::XY_DrawBlockGrid()
|
|||
glLineWidth (2);
|
||||
|
||||
glBegin (GL_LINES);
|
||||
|
||||
|
||||
for (x=xb ; x<=xe ; x+=g_xywindow_globals_private.blockSize)
|
||||
{
|
||||
glVertex2f (x, yb);
|
||||
|
@ -1851,7 +1959,7 @@ void XYWnd::XY_DrawBlockGrid()
|
|||
glVertex2f (xe, y);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
glEnd();
|
||||
glLineWidth (1);
|
||||
|
||||
|
@ -1907,7 +2015,7 @@ void XYWnd::DrawCameraIcon(const Vector3& origin, const Vector3& angles)
|
|||
glVertex3f (x-box,y,0);
|
||||
glVertex3f (x+box,y,0);
|
||||
glEnd();
|
||||
|
||||
|
||||
glBegin(GL_LINE_STRIP);
|
||||
glVertex3f (x + static_cast<float>(fov*cos(a+c_pi/4)), y + static_cast<float>(fov*sin(a+c_pi/4)), 0);
|
||||
glVertex3f (x, y, 0);
|
||||
|
@ -1926,7 +2034,7 @@ float Betwixt(float f1, float f2)
|
|||
}
|
||||
|
||||
|
||||
// can be greatly simplified but per usual i am in a hurry
|
||||
// can be greatly simplified but per usual i am in a hurry
|
||||
// which is not an excuse, just a fact
|
||||
void XYWnd::PaintSizeInfo(int nDim1, int nDim2, Vector3& vMinBounds, Vector3& vMaxBounds)
|
||||
{
|
||||
|
@ -1940,7 +2048,7 @@ void XYWnd::PaintSizeInfo(int nDim1, int nDim2, Vector3& vMinBounds, Vector3& vM
|
|||
|
||||
Vector3 vSize(vector3_subtracted(vMaxBounds, vMinBounds));
|
||||
|
||||
glColor3f(g_xywindow_globals.color_selbrushes[0] * .65f,
|
||||
glColor3f(g_xywindow_globals.color_selbrushes[0] * .65f,
|
||||
g_xywindow_globals.color_selbrushes[1] * .65f,
|
||||
g_xywindow_globals.color_selbrushes[2] * .65f);
|
||||
|
||||
|
@ -1958,14 +2066,14 @@ void XYWnd::PaintSizeInfo(int nDim1, int nDim2, Vector3& vMinBounds, Vector3& vM
|
|||
|
||||
glVertex3f(vMaxBounds[nDim1], vMinBounds[nDim2] - 6.0f / m_fScale, 0.0f);
|
||||
glVertex3f(vMaxBounds[nDim1], vMinBounds[nDim2] - 10.0f / m_fScale, 0.0f);
|
||||
|
||||
|
||||
|
||||
glVertex3f(vMaxBounds[nDim1] + 6.0f / m_fScale, vMinBounds[nDim2], 0.0f);
|
||||
glVertex3f(vMaxBounds[nDim1] + 10.0f / m_fScale, vMinBounds[nDim2], 0.0f);
|
||||
|
||||
glVertex3f(vMaxBounds[nDim1] + 10.0f / m_fScale, vMinBounds[nDim2], 0.0f);
|
||||
glVertex3f(vMaxBounds[nDim1] + 10.0f / m_fScale, vMaxBounds[nDim2], 0.0f);
|
||||
|
||||
|
||||
glVertex3f(vMaxBounds[nDim1] + 6.0f / m_fScale, vMaxBounds[nDim2], 0.0f);
|
||||
glVertex3f(vMaxBounds[nDim1] + 10.0f / m_fScale, vMaxBounds[nDim2], 0.0f);
|
||||
|
||||
|
@ -1975,7 +2083,7 @@ void XYWnd::PaintSizeInfo(int nDim1, int nDim2, Vector3& vMinBounds, Vector3& vM
|
|||
dimensions << g_pDimStrings[nDim1] << vSize[nDim1];
|
||||
GlobalOpenGL().drawString(dimensions.c_str());
|
||||
dimensions.clear();
|
||||
|
||||
|
||||
glRasterPos3f (vMaxBounds[nDim1] + 16.0f / m_fScale, Betwixt(vMinBounds[nDim2], vMaxBounds[nDim2]), 0.0f);
|
||||
dimensions << g_pDimStrings[nDim2] << vSize[nDim2];
|
||||
GlobalOpenGL().drawString(dimensions.c_str());
|
||||
|
@ -1997,14 +2105,14 @@ void XYWnd::PaintSizeInfo(int nDim1, int nDim2, Vector3& vMinBounds, Vector3& vM
|
|||
|
||||
glVertex3f(vMaxBounds[nDim1], 0,vMinBounds[nDim2] - 6.0f / m_fScale);
|
||||
glVertex3f(vMaxBounds[nDim1], 0,vMinBounds[nDim2] - 10.0f / m_fScale);
|
||||
|
||||
|
||||
|
||||
glVertex3f(vMaxBounds[nDim1] + 6.0f / m_fScale, 0,vMinBounds[nDim2]);
|
||||
glVertex3f(vMaxBounds[nDim1] + 10.0f / m_fScale, 0,vMinBounds[nDim2]);
|
||||
|
||||
glVertex3f(vMaxBounds[nDim1] + 10.0f / m_fScale, 0,vMinBounds[nDim2]);
|
||||
glVertex3f(vMaxBounds[nDim1] + 10.0f / m_fScale, 0,vMaxBounds[nDim2]);
|
||||
|
||||
|
||||
glVertex3f(vMaxBounds[nDim1] + 6.0f / m_fScale, 0,vMaxBounds[nDim2]);
|
||||
glVertex3f(vMaxBounds[nDim1] + 10.0f / m_fScale, 0,vMaxBounds[nDim2]);
|
||||
|
||||
|
@ -2014,7 +2122,7 @@ void XYWnd::PaintSizeInfo(int nDim1, int nDim2, Vector3& vMinBounds, Vector3& vM
|
|||
dimensions << g_pDimStrings[nDim1] << vSize[nDim1];
|
||||
GlobalOpenGL().drawString(dimensions.c_str());
|
||||
dimensions.clear();
|
||||
|
||||
|
||||
glRasterPos3f (vMaxBounds[nDim1] + 16.0f / m_fScale, 0, Betwixt(vMinBounds[nDim2], vMaxBounds[nDim2]));
|
||||
dimensions << g_pDimStrings[nDim2] << vSize[nDim2];
|
||||
GlobalOpenGL().drawString(dimensions.c_str());
|
||||
|
@ -2036,14 +2144,14 @@ void XYWnd::PaintSizeInfo(int nDim1, int nDim2, Vector3& vMinBounds, Vector3& vM
|
|||
|
||||
glVertex3f(0, vMaxBounds[nDim1], vMinBounds[nDim2] - 6.0f / m_fScale);
|
||||
glVertex3f(0, vMaxBounds[nDim1], vMinBounds[nDim2] - 10.0f / m_fScale);
|
||||
|
||||
|
||||
|
||||
glVertex3f(0, vMaxBounds[nDim1] + 6.0f / m_fScale, vMinBounds[nDim2]);
|
||||
glVertex3f(0, vMaxBounds[nDim1] + 10.0f / m_fScale, vMinBounds[nDim2]);
|
||||
|
||||
glVertex3f(0, vMaxBounds[nDim1] + 10.0f / m_fScale, vMinBounds[nDim2]);
|
||||
glVertex3f(0, vMaxBounds[nDim1] + 10.0f / m_fScale, vMaxBounds[nDim2]);
|
||||
|
||||
|
||||
glVertex3f(0, vMaxBounds[nDim1] + 6.0f / m_fScale, vMaxBounds[nDim2]);
|
||||
glVertex3f(0, vMaxBounds[nDim1] + 10.0f / m_fScale, vMaxBounds[nDim2]);
|
||||
|
||||
|
@ -2053,7 +2161,7 @@ void XYWnd::PaintSizeInfo(int nDim1, int nDim2, Vector3& vMinBounds, Vector3& vM
|
|||
dimensions << g_pDimStrings[nDim1] << vSize[nDim1];
|
||||
GlobalOpenGL().drawString(dimensions.c_str());
|
||||
dimensions.clear();
|
||||
|
||||
|
||||
glRasterPos3f (0, vMaxBounds[nDim1] + 16.0f / m_fScale, Betwixt(vMinBounds[nDim2], vMaxBounds[nDim2]));
|
||||
dimensions << g_pDimStrings[nDim2] << vSize[nDim2];
|
||||
GlobalOpenGL().drawString(dimensions.c_str());
|
||||
|
@ -2073,7 +2181,7 @@ class XYRenderer: public Renderer
|
|||
m_highlight(0),
|
||||
m_state(0)
|
||||
{
|
||||
}
|
||||
}
|
||||
unsigned int m_highlight;
|
||||
Shader* m_state;
|
||||
};
|
||||
|
@ -2265,7 +2373,10 @@ void XYWnd::XY_Draw()
|
|||
glDisable(GL_COLOR_MATERIAL);
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
|
||||
if (m_backgroundActivated)
|
||||
XY_DrawBackground();
|
||||
XY_DrawGrid();
|
||||
|
||||
if ( g_xywindow_globals_private.show_blocks)
|
||||
XY_DrawBlockGrid();
|
||||
|
||||
|
@ -2292,7 +2403,7 @@ void XYWnd::XY_Draw()
|
|||
GlobalOpenGL_debugAssertNoErrors();
|
||||
|
||||
glLoadMatrixf(reinterpret_cast<const float*>(&m_modelview));
|
||||
|
||||
|
||||
GlobalOpenGL_debugAssertNoErrors();
|
||||
glDisable(GL_LINE_STIPPLE);
|
||||
GlobalOpenGL_debugAssertNoErrors();
|
||||
|
@ -2361,7 +2472,7 @@ void XYWnd::XY_Draw()
|
|||
}
|
||||
|
||||
GlobalOpenGL_debugAssertNoErrors();
|
||||
|
||||
|
||||
// reset modelview
|
||||
glLoadIdentity();
|
||||
glScalef(m_fScale, m_fScale, 1);
|
||||
|
@ -2529,7 +2640,7 @@ void XY_ZoomOut()
|
|||
|
||||
void ToggleShowCrosshair()
|
||||
{
|
||||
g_bCrossHairs ^= 1;
|
||||
g_bCrossHairs ^= 1;
|
||||
XY_UpdateAllWindows();
|
||||
}
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#include "gtkutil/xorrectangle.h"
|
||||
#include "view.h"
|
||||
#include "map.h"
|
||||
#include "texturelib.h"
|
||||
|
||||
#include "qerplugin.h"
|
||||
|
||||
|
@ -104,7 +105,11 @@ public:
|
|||
void XY_Draw();
|
||||
void DrawCameraIcon(const Vector3& origin, const Vector3& angles);
|
||||
void XY_DrawBlockGrid();
|
||||
void XY_DrawAxis();
|
||||
void XY_DrawGrid();
|
||||
void XY_DrawBackground();
|
||||
void XY_LoadBackgroundImage(const char *name);
|
||||
void XY_DisableBackground();
|
||||
|
||||
void XY_MouseUp(int x, int y, unsigned int buttons);
|
||||
void XY_MouseDown(int x, int y, unsigned int buttons);
|
||||
|
@ -149,7 +154,7 @@ public:
|
|||
|
||||
int m_chasemouse_current_x, m_chasemouse_current_y;
|
||||
int m_chasemouse_delta_x, m_chasemouse_delta_y;
|
||||
|
||||
|
||||
|
||||
guint m_chasemouse_handler;
|
||||
void ChaseMouse();
|
||||
|
@ -162,6 +167,11 @@ public:
|
|||
|
||||
int m_nWidth;
|
||||
int m_nHeight;
|
||||
// background image stuff
|
||||
qtexture_t *m_tex;
|
||||
bool m_backgroundActivated;
|
||||
float m_alpha; // vertex alpha
|
||||
float m_xmin, m_ymin, m_xmax, m_ymax;
|
||||
private:
|
||||
float m_fScale;
|
||||
Vector3 m_vOrigin;
|
||||
|
@ -296,6 +306,9 @@ void XZ_Front_Shown_Construct(GtkWindow* parent);
|
|||
void XYWindow_Construct();
|
||||
void XYWindow_Destroy();
|
||||
|
||||
void WXY_Print();
|
||||
void WXY_BackgroundSelect();
|
||||
|
||||
void XYShow_registerCommands();
|
||||
void XYWnd_registerShortcuts();
|
||||
|
||||
|
|
Loading…
Reference in a new issue