]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - contrib/prtview/portals.h
my own uncrustify run
[xonotic/netradiant.git] / contrib / prtview / portals.h
index 33bac1ec7c323d84562fbf19b1506323c10b4443..1fd2f0375fc04c2f9b8a740bfc96c40b8238ec79 100644 (file)
-/*\r
-PrtView plugin for GtkRadiant\r
-Copyright (C) 2001 Geoffrey Dewan, Loki software and qeradiant.com\r
-\r
-This library is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU Lesser General Public\r
-License as published by the Free Software Foundation; either\r
-version 2.1 of the License, or (at your option) any later version.\r
-\r
-This library is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
-Lesser General Public License for more details.\r
-\r
-You should have received a copy of the GNU Lesser General Public\r
-License along with this library; if not, write to the Free Software\r
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
-*/\r
-\r
-#ifndef _PORTALS_H_\r
-#define _PORTALS_H_\r
-\r
-class CBspPoint {\r
-public:\r
-       float p[3];\r
-};\r
-\r
-class CBspPortal {\r
-public:\r
-       CBspPortal();\r
-       ~CBspPortal();\r
-\r
-protected:\r
-\r
-public:\r
-       CBspPoint center;\r
-       unsigned point_count;\r
-       CBspPoint *point;\r
-       CBspPoint *inner_point;\r
-       float fp_color_random[4];\r
-       float min[3];\r
-       float max[3];\r
-       float dist;\r
-       qboolean hint;\r
-\r
-       qboolean Build(char *def);\r
-};\r
-\r
-class CPortals {\r
-public:\r
-\r
-  CPortals();\r
-  ~CPortals();\r
-\r
-protected:\r
-\r
-\r
-public:\r
-\r
-       void Load(); // use filename in fn\r
-       void Purge();\r
-\r
-       void FixColors();\r
-\r
-       char fn[_MAX_PATH];\r
-\r
-       int zbuffer;\r
-       int polygons;\r
-       int lines;\r
-       qboolean show_3d;\r
-       qboolean aa_3d;\r
-       qboolean fog;\r
-       COLORREF color_3d;\r
-       float width_3d;  // in 8'ths\r
-       float fp_color_3d[4];\r
-       COLORREF color_fog;\r
-       float fp_color_fog[4];\r
-       float trans_3d;\r
-       float clip_range;\r
-       qboolean clip;\r
-\r
-       qboolean show_2d;\r
-       qboolean aa_2d;\r
-       COLORREF color_2d;\r
-       float width_2d;  // in 8'ths\r
-       float fp_color_2d[4];\r
-\r
-       CBspPortal *portal;\r
-       int *portal_sort;\r
-       qboolean hint_flags;\r
-//     CBspNode *node;\r
-\r
-       unsigned int node_count;\r
-       unsigned int portal_count;\r
-};\r
-\r
-class CPortalsRender : public IGL2DWindow, public IGL3DWindow {\r
-public:\r
-\r
-  CPortalsRender();\r
-  virtual ~CPortalsRender();\r
-\r
-protected:\r
-\r
-       int refCount;\r
-#ifdef _WIN32\r
-       CRITICAL_SECTION protect;\r
-#endif\r
-\r
-public:\r
-\r
-  // IGL2DWindow IGL3DWindow interface\r
-       void IncRef() { refCount++; }\r
-       void DecRef() { refCount--; if (refCount <= 0) delete this; }\r
-       void Draw2D( VIEWTYPE vt );\r
-       void Draw3D();\r
-       void Register();\r
-};\r
-\r
-// void Sys_Printf (char *text, ...);\r
-\r
-extern CPortals portals;\r
-extern CPortalsRender render;\r
-\r
-#endif // _PORTALS_H_\r
+/*
+   PrtView plugin for GtkRadiant
+   Copyright (C) 2001 Geoffrey Dewan, Loki software and qeradiant.com
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   This library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this library; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _PORTALS_H_
+#define _PORTALS_H_
+
+#include <glib.h>
+#include "irender.h"
+#include "renderable.h"
+#include "math/vector.h"
+
+
+class CBspPoint {
+public:
+float p[3];
+};
+
+class CBspPortal {
+public:
+CBspPortal();
+~CBspPortal();
+
+protected:
+
+public:
+CBspPoint center;
+unsigned point_count;
+CBspPoint *point;
+CBspPoint *inner_point;
+float fp_color_random[4];
+float min[3];
+float max[3];
+float dist;
+bool hint;
+
+bool Build( char *def );
+};
+
+#ifdef PATH_MAX
+#define PRTVIEW_PATH_MAX PATH_MAX
+#else
+#define PRTVIEW_PATH_MAX 260
+#endif
+typedef guint32 PackedColour;
+#define RGB( r, g, b ) ( (guint32)( ( (guint8) ( r ) | ( (guint16) ( g ) << 8 ) ) | ( ( (guint32) (guint8) ( b ) ) << 16 ) ) )
+#define GetRValue( rgb )      ( (guint8)( rgb ) )
+#define GetGValue( rgb )      ( (guint8)( ( (guint16)( rgb ) ) >> 8 ) )
+#define GetBValue( rgb )      ( (guint8)( ( rgb ) >> 16 ) )
+
+
+class CPortals {
+public:
+
+CPortals();
+~CPortals();
+
+protected:
+
+
+public:
+
+void Load();     // use filename in fn
+void Purge();
+
+void FixColors();
+
+char fn[PRTVIEW_PATH_MAX];
+
+int zbuffer;
+int polygons;
+int lines;
+bool show_3d;
+bool aa_3d;
+bool fog;
+PackedColour color_3d;
+float width_3d;      // in 8'ths
+float fp_color_3d[4];
+PackedColour color_fog;
+float fp_color_fog[4];
+float trans_3d;
+float clip_range;
+bool clip;
+
+bool show_2d;
+bool aa_2d;
+PackedColour color_2d;
+float width_2d;      // in 8'ths
+float fp_color_2d[4];
+
+CBspPortal *portal;
+int *portal_sort;
+bool hint_flags;
+//     CBspNode *node;
+
+unsigned int node_count;
+unsigned int portal_count;
+};
+
+class CubicClipVolume
+{
+public:
+Vector3 cam, min, max;
+};
+
+class CPortalsDrawSolid : public OpenGLRenderable
+{
+public:
+mutable CubicClipVolume clip;
+void render( RenderStateFlags state ) const;
+};
+
+class CPortalsDrawSolidOutline : public OpenGLRenderable
+{
+public:
+mutable CubicClipVolume clip;
+void render( RenderStateFlags state ) const;
+};
+
+class CPortalsDrawWireframe : public OpenGLRenderable
+{
+public:
+void render( RenderStateFlags state ) const;
+};
+
+class CPortalsRender : public Renderable
+{
+public:
+CPortalsDrawSolid m_drawSolid;
+CPortalsDrawSolidOutline m_drawSolidOutline;
+CPortalsDrawWireframe m_drawWireframe;
+
+void renderSolid( Renderer& renderer, const VolumeTest& volume ) const;
+void renderWireframe( Renderer& renderer, const VolumeTest& volume ) const;
+};
+
+extern CPortals portals;
+extern CPortalsRender render;
+
+void Portals_constructShaders();
+void Portals_destroyShaders();
+
+void Portals_shadersChanged();
+
+
+#endif // _PORTALS_H_