X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=contrib%2Fgtkgensurf%2Fgensurf.h;h=39d763a482c72c056ab6cd1d57ef81d033984c71;hb=9dfae1c9b270ee369c6362903a9205b30751b95f;hp=8e42ac0d0492f84685cae2f417a3e6ccd564ea41;hpb=5265d3cc1517566910718738ee6fa48e2466d3ea;p=xonotic%2Fnetradiant.git diff --git a/contrib/gtkgensurf/gensurf.h b/contrib/gtkgensurf/gensurf.h index 8e42ac0d..39d763a4 100644 --- a/contrib/gtkgensurf/gensurf.h +++ b/contrib/gtkgensurf/gensurf.h @@ -1,79 +1,133 @@ /* -GenSurf plugin for GtkRadiant -Copyright (C) 2001 David Hyde, Loki software and qeradiant.com + GenSurf plugin for GtkRadiant + Copyright (C) 2001 David Hyde, 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 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. + 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 -*/ + 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 _GENSURF_H_ #define _GENSURF_H_ -#include +#include "globaldefs.h" +#include +#include "qertypes.h" +#include + +#include "mathlib.h" +#include "iscenegraph.h" + +#define USE_QERTABLE_DEFINE #include "qerplugin.h" -//#include "qertypes.h" + +extern _QERFuncTable_1 g_FuncTable; + +#include "irender.h" +#include "iselection.h" + +#define USE_ENTITYTABLE_DEFINE + +#include "ientity.h" + +extern _QEREntityTable __ENTITYTABLENAME; + +#define USE_PATCHTABLE_DEFINE + +#include "ipatch.h" + +extern _QERPatchTable __PATCHTABLENAME; + +#define USE_BRUSHTABLE_DEFINE + +#include "ibrush.h" + +extern _QERBrushTable __BRUSHTABLENAME; #include "igl.h" -#include "iui_gtk.h" #include "ientity.h" +#include "iui_gtk.h" + #include "gendlgs.h" + #define PLUGIN #define Q3RADIANT -#if defined(__linux__) || defined(__APPLE__) +//#if GDEF_OS_LINUX || GDEF_OS_MACOS +#if 1 + +#include + +#else template -inline T min (T x, T y) { return (x < y) ? x : y; } +inline T min( T x, T y ) { return ( x < y ) ? x : y; } template -inline T max (T x, T y) { return (x > y) ? x : y; } - -typedef struct { long x, y; } POINT; -typedef struct { long left, top, right, bottom; } RECT; +inline T max( T x, T y ) { return ( x > y ) ? x : y; } #endif -inline bool PtInRect (RECT *rc, POINT pt) + +typedef struct { long x, y; } Point; +typedef struct { long left, top, right, bottom; } Rect; + +#define NAME_MAX 255 + +typedef void *LPVOID; +typedef char *LPSTR; + +//#endif +inline bool PtInRect(Rect *rc, Point pt) { - if (pt.x < rc->left) return false; - if (pt.x > rc->right) return false; - if (pt.y < rc->bottom) return false; - if (pt.y > rc->top) return false; - return true; + if (pt.x < rc->left) { + return false; + } + if (pt.x > rc->right) { + return false; + } + if (pt.y < rc->bottom) { + return false; + } + if (pt.y > rc->top) { + return false; + } + return true; } #define NUMGAMES 7 #define CONTENTS_SOLID 0x00000001 -#define CONTENTS_DETAIL 0x08000000 // brushes to be added after vis leafs -#define CONTENTS_LADDER 0x20000000 -#define SURF_HINT 0x100 // make a primary bsp splitter -#define SURF_SKIP 0x200 // completely ignore, allowing non-closed brushes +#define CONTENTS_DETAIL 0x08000000 // brushes to be added after vis leafs +#define CONTENTS_LADDER 0x20000000 +#define SURF_HINT 0x100 // make a primary bsp splitter +#define SURF_SKIP 0x200 // completely ignore, allowing non-closed brushes #define HINT_OFFSET 96 #define PI 3.14159265358979224 -#define RadiansToDegrees(a) (floor(a*57.2957795 - 0.5)+1.) -#define DegreesToRadians(a) (a/57.2957795) - -#define BOGUS_RANGE 65536 -#define DotProduct(x,y) (x[0]*y[0]+x[1]*y[1]+x[2]*y[2]) -#define VectorAdd(a,b,c) {c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];} -#define VectorClear(x) {x[0] = x[1] = x[2] = 0;} -#define VectorCopy(a,b) {b[0]=a[0];b[1]=a[1];b[2]=a[2];} -#define VectorScale(a,b,c) {c[0]=b*a[0];c[1]=b*a[1];c[2]=b*a[2];} -#define VectorSubtract(a,b,c) {c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];} -#define XYZVectorSubtract(a,b,c) {c[0]=(float)a[0]-(float)b[0];c[1]=(float)a[1]-(float)b[1];c[2]=(float)a[2]-(float)b[2];} -#define side(u1,v1,u2,v2,u3,v3) (v3-v1)*(u2-u1) - (u3-u1)*(v2-v1) +#define RadiansToDegrees(a) ( floor( a * 57.2957795 - 0.5 ) + 1. ) +#define DegreesToRadians(a) ( a / 57.2957795 ) + +#define BOGUS_RANGE 65536 +/* + #define DotProduct(x,y) (x[0]*y[0]+x[1]*y[1]+x[2]*y[2]) + #define VectorAdd(a,b,c) {c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];} + #define VectorClear(x) {x[0] = x[1] = x[2] = 0;} + #define VectorCopy(a,b) {b[0]=a[0];b[1]=a[1];b[2]=a[2];} + #define VectorScale(a,b,c) {c[0]=b*a[0];c[1]=b*a[1];c[2]=b*a[2];} + #define VectorSubtract(a,b,c) {c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];} + */ +#define XYZVectorSubtract(a, b, c) {c[0] = (float)a[0] - (float)b[0]; c[1] = (float)a[1] - (float)b[1]; c[2] = (float)a[2] - (float)b[2]; } +#define side(u1, v1, u2, v2, u3, v3) ( v3 - v1 ) * ( u2 - u1 ) - ( u3 - u1 ) * ( v2 - v1 ) #define QUAKE2 0 #define HALFLIFE 1 @@ -84,197 +138,219 @@ inline bool PtInRect (RECT *rc, POINT pt) #define QUAKE3 6 #define MAX_FACES_PER_BRUSH 6 -#define SLIVER_ANGLE DegreesToRadians(20) -#define MAX_NODES (MAX_ROWS+1)*(MAX_ROWS+1) -#define MAX_TRIS (MAX_ROWS)*(MAX_ROWS) +#define SLIVER_ANGLE DegreesToRadians( 20 ) +#define MAX_NODES ( MAX_ROWS + 1 ) * ( MAX_ROWS + 1 ) +#define MAX_TRIS (MAX_ROWS)*( MAX_ROWS ) typedef float vec; typedef vec vec3[3]; typedef vec vec2[2]; -typedef struct -{ - vec3 v[3]; - char texture[64]; - float Shift[2]; - float Rotate; - float Scale[2]; - int Contents; - int Surface; - int Value; +typedef struct { + vec3 v[3]; + char texture[64]; + float Shift[2]; + float Rotate; + float Scale[2]; + int Contents; + int Surface; + int Value; } FACE; -typedef struct -{ - vec3 normal; - vec dist; +typedef struct { + vec3 normal; + vec dist; } PLANE; -typedef struct -{ - int numpoints; - vec3 p[4]; // variable sized +typedef struct { + int numpoints; + vec3 p[4]; // variable sized } MY_WINDING; -typedef struct -{ - int Number; - int NumFaces; - FACE face[MAX_FACES_PER_BRUSH]; +typedef struct { + int Number; + int NumFaces; + FACE face[MAX_FACES_PER_BRUSH]; } BRUSH; -typedef struct tagXYZ -{ - int fixed; - int done; - double p[3]; - double pp[3]; // these used only for general 3D projection (not isometric) - double fixed_value; - double range; - double rate; +typedef struct tagXYZ { + int fixed; + int done; + double p[3]; + double pp[3]; // these used only for general 3D projection (not isometric) + double fixed_value; + double range; + double rate; } XYZ; // Q2 PAK file structures -typedef struct -{ - char id[4]; // Should be 'PACK' - int dstart; // Offest in the file to the directory - int dsize; // Size in bytes of the directory, same as num_items*64 +typedef struct { + char id[4]; // Should be 'PACK' + int dstart; // Offest in the file to the directory + int dsize; // Size in bytes of the directory, same as num_items*64 } pak_header_t; -typedef struct -{ - char name[56]; // The name of the item, normal C string - int start; // Offset in .pak file to start of item - int size; // Size of item in bytes +typedef struct { + char name[56]; // The name of the item, normal C string + int start; // Offset in .pak file to start of item + int size; // Size of item in bytes } pak_item_t; // SiN .SIN structures -#define SINPAKHEADER (('K'<<24)+('A'<<16)+('P'<<8)+'S') +#define SINPAKHEADER ( ( 'K' << 24 ) + ( 'A' << 16 ) + ( 'P' << 8 ) + 'S' ) #define MAX_PAK_FILENAME_LENGTH 120 -typedef struct -{ - char name[MAX_PAK_FILENAME_LENGTH]; - int filepos, filelen; +typedef struct { + char name[MAX_PAK_FILENAME_LENGTH]; + int filepos, filelen; } dpackfile_t; -typedef struct -{ - int ident; // == IDPAKHEADER - int dirofs; - int dirlen; +typedef struct { + int ident; // == IDPAKHEADER + int dirofs; + int dirlen; } dpackheader_t; // Half-Life WAD file structures -typedef struct -{ - char identification[4]; // should be WAD2 or 2DAW - int numlumps; - int infotableofs; +typedef struct { + char identification[4]; // should be WAD2 or 2DAW + int numlumps; + int infotableofs; } wadinfo_t; -typedef struct -{ - int filepos; - int disksize; - int size; // uncompressed - char type; - char compression; - char pad1, pad2; - char name[16]; // must be null terminated +typedef struct { + int filepos; + int disksize; + int size; // uncompressed + char type; + char compression; + char pad1, pad2; + char name[16]; // must be null terminated } lumpinfo_t; -typedef struct -{ - int signature; - short version; - short bitflag; - short compression_method; - short modfiletime; - short modfiledate; - int crc; - int compressed_size; - int uncompressed_size; - short filename_size; - short extra_size; +typedef struct { + int signature; + short version; + short bitflag; + short compression_method; + short modfiletime; + short modfiledate; + int crc; + int compressed_size; + int uncompressed_size; + short filename_size; + short extra_size; } zipheader_t; -typedef struct -{ - double x[2]; - double y[2]; - double z[2]; +typedef struct { + double x[2]; + double y[2]; + double z[2]; } bounding_box; -typedef struct -{ - float p[3]; - int used; - int tri; - float error; - int fixed; +typedef struct { + float p[3]; + int used; + int tri; + float error; + int fixed; } NODE; -typedef struct -{ - int v[3]; - int n[3]; // indices of neighboring triangles - PLANE plane; - int flag; - float min[3]; - float max[3]; +typedef struct { + int v[3]; + int n[3]; // indices of neighboring triangles + PLANE plane; + int flag; + float min[3]; + float max[3]; } TRI; //--------------- bitmap.c ----------------------------- -bool OpenBitmap (); -void GenerateBitmapMapping (); +bool OpenBitmap(); + +double CalculateSnapValue(double value); + +void GenerateBitmapMapping(); + //--------------- face.c ------------------------------- -void PlaneFromPoints (float *, float *, float *, PLANE *); -void CrossProduct (vec3 v1, vec3 v2, vec3 cross); -vec VectorNormalize (vec3 in, vec3 out); +void PlaneFromPoints(float *, float *, float *, PLANE *); + +//void CrossProduct (vec3 v1, vec3 v2, vec3 cross); +//vec VectorNormalize (vec3 in, vec3 out); //--------------- gendlg.c ----------------------------- -GtkWidget* create_main_dialog (); -void About (GtkWidget *parent); +GtkWidget *create_main_dialog(); + +void About(GtkWidget *parent); + //--------------- genmap.c ----------------------------- -double AtLeast(double,double); +double AtLeast(double, double); + bool CanEdit(int, int); + void CloseFuncGroup(); -bool FixedPoint(int,int); + +bool FixedPoint(int, int); + void GenerateMap(); + void GenerateXYZ(); -double LessThan(double,double); + +double LessThan(double, double); + void MakeBrush(BRUSH *); -double MoreThan(double,double); -double Nearest(double,double); -double NoMoreThan(double,double); + +double MoreThan(double, double); + +double Nearest(double, double); + +double NoMoreThan(double, double); + void OpenFuncGroup(); + void PlasmaCloud(); -int PlayerStartZ(double,double); -void SubdividePlasma(int,int,int,int); + +int PlayerStartZ(double, double); + +void SubdividePlasma(int, int, int, int); + bool ValidSurface(); + void XYZtoV(XYZ *, vec3 *); -void MakePatch(patchMesh_t *); -double CalculateSnapValue(double value); + +scene::Node *MakePatch(void); //---------------- gensurf.c --------------------------- -bool GenSurfInit (); -void ReadIniFile (const char *); -void WriteIniFile (const char *); -void OpenSetup (GtkWidget*,int); -void SaveSetup (GtkWidget*); +bool GenSurfInit(); + +void ReadIniFile(const char *); + +void WriteIniFile(const char *); + +void OpenSetup(GtkWidget *, int); + +void SaveSetup(GtkWidget *); + //---------------- heretic.c --------------------------- int GetDefSurfaceProps(char *); + //---------------- view.c ------------------------------ -void CreateViewWindow (); -void DrawGrid(RECT); -void DrawPreview(RECT); +void CreateViewWindow(); + +void DrawGrid(Rect); + +void DrawPreview(Rect); + void evaluate(); -void GetScaleFactor(RECT); + +void GetScaleFactor(Rect); + void project(XYZ *); -void Scale(RECT,XYZ,POINT *); -void ShowPreview (); -void UpdatePreview (bool); + +void Scale(Rect, XYZ, Point *); + +void ShowPreview(); + +void UpdatePreview(bool); //---------------- plugin.c ----------------------------- void UseFaceBounds(); @@ -301,91 +377,91 @@ extern _QEREntityTable g_EntityTable; #define WAVE_FORMULA 5 #define WAVE_FIRST WAVE_COS_SIN #define WAVE_LAST WAVE_FORMULA -#define DLG_WAVE_LAST DLG_WAVE_01+WAVE_LAST-WAVE_FIRST +#define DLG_WAVE_LAST DLG_WAVE_01 + WAVE_LAST - WAVE_FIRST -#define MSG_VERTEX_SELECTED WM_USER+1 +#define MSG_VERTEX_SELECTED WM_USER + 1 -typedef struct tagMYBITMAP -{ - char name[NAME_MAX]; - char defpath[NAME_MAX]; - double black_value; - double white_value; - int width, height; - unsigned char* colors; +typedef struct tagMYBITMAP { + char name[NAME_MAX]; + char defpath[NAME_MAX]; + double black_value; + double white_value; + int width, height; + unsigned char *colors; } MYBITMAP; typedef struct tagELEMENT { - int i; - int j; + int i; + int j; } ELEMENT; -extern char gszAppDir[NAME_MAX]; -extern char gszCaption[64]; -extern char gszHelpFile[NAME_MAX]; -extern char gszIni[NAME_MAX]; -extern char gszMapFile[NAME_MAX]; -extern char gszVersion[64]; -extern double Amplitude; -extern double Roughness; -extern double TexOffset[2]; -extern double TexScale[2]; -extern double WaveLength; -extern double Hll, Hur, Vll, Vur; -extern double Z00, Z01, Z10, Z11; -extern double yaw, pitch, roll; -extern ELEMENT Vertex[(MAX_ROWS+1)*(MAX_ROWS+1)]; -extern int AddHints; -extern int ArghRad2; -extern int AutoOverwrite; -extern int Decimate; -extern int FileAppend; -extern int FixBorders; -extern int HideBackFaces; -extern int NH, NV; -extern int NumVerticesSelected; -extern int Plane; -extern int Preview; -extern int RandomSeed; -extern int Skybox; -extern int UseDetail; -extern int UseLadder; -extern int VertexMode; -extern int vid_x, vid_y; -extern int WaveType; -extern int gNumNodes; -extern int gNumTris; -extern int view_x, view_y; -extern int view_cx, view_cy; -extern int UsePatches; -extern int SlantAngle; -extern int GimpHints; -extern int Antialiasing; // ^Fishman - Antializing for the preview window. -extern int AddTerrainKey; // ^Fishman - Add terrain key to func_group. -extern int SnapToGrid; // Hydra : snap to grid -extern int SP; // ^Fishman - Snap to grid. +extern char gszAppDir[NAME_MAX]; +extern char gszCaption[64]; +extern char gszHelpFile[NAME_MAX]; +extern char gszIni[NAME_MAX]; +extern char gszMapFile[NAME_MAX]; +extern char gszVersion[64]; +extern double Amplitude; +extern double Roughness; +extern double TexOffset[2]; +extern double TexScale[2]; +extern double WaveLength; +extern double Hll, Hur, Vll, Vur; +extern double Z00, Z01, Z10, Z11; +extern double yaw, pitch, roll; +extern ELEMENT Vertex[(MAX_ROWS + 1) * (MAX_ROWS + 1)]; +extern int AddHints; +extern int ArghRad2; +extern int AutoOverwrite; +extern int Decimate; +extern int FileAppend; +extern int FixBorders; +extern int HideBackFaces; +extern int NH, NV; +extern int NumVerticesSelected; +extern int Plane; +extern int Preview; +extern int RandomSeed; +extern int Skybox; +extern int UseDetail; +extern int UseLadder; +extern int VertexMode; +extern int vid_x, vid_y; +extern int WaveType; +extern int gNumNodes; +extern int gNumTris; +extern int view_x, view_y; +extern int view_cx, view_cy; +extern int UsePatches; +extern int SlantAngle; +extern int GimpHints; +extern int Antialiasing; // ^Fishman - Antializing for the preview window. +extern int AddTerrainKey; // ^Fishman - Add terrain key to func_group. +extern int SnapToGrid; // Hydra : snap to grid +extern int SP; // ^Fishman - Snap to grid. + /*extern HCURSOR ghCursorCurrent; -extern HCURSOR ghCursorDefault; -extern HCURSOR ghCursorVertex; -extern HINSTANCE ghInst;*/ -extern GtkWidget *g_pRadiantWnd; -extern GtkWidget *g_pWnd; + extern HCURSOR ghCursorDefault; + extern HCURSOR ghCursorVertex; + extern HINSTANCE ghInst;*/ +extern ui::Window g_pRadiantWnd; +extern ui::Window g_pWnd; /*extern HWND ghwndAngles; -extern HWND ghwndFix; -*/extern GtkWidget *g_pWndPreview; + extern HWND ghwndFix; + */extern GtkWidget *g_pWndPreview; extern GtkWidget *g_pPreviewWidget; -extern MYBITMAP gbmp; -extern NODE *gNode; -extern TRI *gTri; -extern XYZ xyz[MAX_ROWS+1][MAX_ROWS+1]; +extern MYBITMAP gbmp; +extern NODE *gNode; +extern TRI *gTri; +extern XYZ xyz[MAX_ROWS + 1][MAX_ROWS + 1]; -extern int Game; +extern int Game; extern bounding_box PlayerBox[NUMGAMES]; //extern char gszOutputDir[NUMGAMES][NAME_MAX]; -extern char Texture[NUMGAMES][3][64]; +extern char Texture[NUMGAMES][3][64]; //extern char gszTextureDir[NUMGAMES][NAME_MAX]; -extern char GameName[NUMGAMES][16]; +extern char GameName[NUMGAMES][16]; //extern char pakfile[NUMGAMES][NAME_MAX]; //extern char lastpakfile[NUMGAMES][NAME_MAX]; //extern int UsePak[NUMGAMES];