2 BobToolz plugin for GtkRadiant
\r
3 Copyright (C) 2001 Gordon Biggans
\r
5 This library is free software; you can redistribute it and/or
\r
6 modify it under the terms of the GNU Lesser General Public
\r
7 License as published by the Free Software Foundation; either
\r
8 version 2.1 of the License, or (at your option) any later version.
\r
10 This library is distributed in the hope that it will be useful,
\r
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
\r
13 Lesser General Public License for more details.
\r
15 You should have received a copy of the GNU Lesser General Public
\r
16 License along with this library; if not, write to the Free Software
\r
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
\r
20 // BobView.cpp: implementation of the DVisDrawer class.
\r
22 //////////////////////////////////////////////////////////////////////
\r
26 #include "DVisDrawer.h"
\r
28 #include "funchandlers.h"
\r
30 //////////////////////////////////////////////////////////////////////
\r
31 // Construction/Destruction
\r
32 //////////////////////////////////////////////////////////////////////
\r
34 DVisDrawer::DVisDrawer()
\r
41 DVisDrawer::~DVisDrawer()
\r
49 //////////////////////////////////////////////////////////////////////
\r
51 //////////////////////////////////////////////////////////////////////
\r
53 void DVisDrawer::Draw2D(VIEWTYPE vt)
\r
58 g_QglTable.m_pfn_qglPushAttrib(GL_ALL_ATTRIB_BITS);
\r
60 g_QglTable.m_pfn_qglDisable(GL_BLEND);
\r
61 g_QglTable.m_pfn_qglDisable(GL_LINE_SMOOTH);
\r
63 g_QglTable.m_pfn_qglPushMatrix();
\r
70 g_QglTable.m_pfn_qglRotatef(270.0f, 1.0f, 0.0f, 0.0f);
\r
73 g_QglTable.m_pfn_qglRotatef(270.0f, 1.0f, 0.0f, 0.0f);
\r
74 g_QglTable.m_pfn_qglRotatef(270.0f, 0.0f, 0.0f, 1.0f);
\r
78 g_QglTable.m_pfn_qglLineWidth(1.0f);
\r
79 g_QglTable.m_pfn_qglColor4f(1.0f, 0.0f, 0.0f, 0.5f);
\r
81 g_QglTable.m_pfn_qglEnable(GL_BLEND);
\r
82 g_QglTable.m_pfn_qglBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
\r
83 g_QglTable.m_pfn_qglDisable(GL_POLYGON_SMOOTH);
\r
85 g_QglTable.m_pfn_qglDepthFunc(GL_ALWAYS);
\r
88 list<DWinding *>::const_iterator l=m_list->begin();
\r
90 for(; l != m_list->end(); l++)
\r
94 g_QglTable.m_pfn_qglColor4f(w->clr[0], w->clr[1], w->clr[2], 0.5f);
\r
96 g_QglTable.m_pfn_qglBegin(GL_POLYGON);
\r
97 for(int i = 0; i < w->numpoints; i++) {
\r
98 g_QglTable.m_pfn_qglVertex3f((w->p[i])[0], (w->p[i])[1], (w->p[i])[2]);
\r
100 g_QglTable.m_pfn_qglEnd();
\r
104 g_QglTable.m_pfn_qglPopMatrix();
\r
106 g_QglTable.m_pfn_qglPopAttrib();
\r
109 void DVisDrawer::Draw3D()
\r
114 g_QglTable.m_pfn_qglPushAttrib(GL_ALL_ATTRIB_BITS);
\r
116 g_QglTable.m_pfn_qglColor4f(1.0, 0.0, 0.0, 0.5f);
\r
118 // g_QglTable.m_pfn_qglHint(GL_FOG_HINT, GL_NICEST);
\r
120 // g_QglTable.m_pfn_qglDisable(GL_CULL_FACE);
\r
121 g_QglTable.m_pfn_qglDisable(GL_LINE_SMOOTH);
\r
123 // g_QglTable.m_pfn_qglPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
\r
124 // g_QglTable.m_pfn_qglShadeModel(GL_SMOOTH);
\r
126 g_QglTable.m_pfn_qglEnable(GL_BLEND);
\r
127 g_QglTable.m_pfn_qglBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
\r
128 g_QglTable.m_pfn_qglDisable(GL_POLYGON_SMOOTH);
\r
130 g_QglTable.m_pfn_qglDepthFunc(GL_ALWAYS);
\r
133 list<DWinding *>::const_iterator l=m_list->begin();
\r
135 for(; l != m_list->end(); l++)
\r
139 g_QglTable.m_pfn_qglColor4f(w->clr[0], w->clr[1], w->clr[2], 0.5f);
\r
141 g_QglTable.m_pfn_qglBegin(GL_POLYGON);
\r
142 for(int i = 0; i < w->numpoints; i++) {
\r
143 g_QglTable.m_pfn_qglVertex3f((w->p[i])[0], (w->p[i])[1], (w->p[i])[2]);
\r
145 g_QglTable.m_pfn_qglEnd();
\r
148 g_QglTable.m_pfn_qglPopAttrib();
\r
151 void DVisDrawer::Register()
\r
153 g_QglTable.m_pfnHookGL2DWindow( this );
\r
154 g_QglTable.m_pfnHookGL3DWindow( this );
\r
158 void DVisDrawer::UnRegister()
\r
160 g_QglTable.m_pfnUnHookGL2DWindow( this );
\r
161 g_QglTable.m_pfnUnHookGL3DWindow( this );
\r
165 void DVisDrawer::SetList(std::list<DWinding*> *pointList)
\r
170 m_list = pointList;
\r
173 void DVisDrawer::ClearPoints()
\r
175 list<DWinding *>::const_iterator deadPoint=m_list->begin();
\r
176 for(; deadPoint!=m_list->end(); deadPoint++)
\r