-// GL matrix product
-void GLMatMul(vec_t M[4][4], vec_t A[4], vec_t B[4]);
-qboolean IsBrushPrimitMode();
-//
-// eclass.cpp
-//
-#include "ieclass.h"
-
-/*!
- \todo those are at the eclass manager level, but some documentation about what they do will be helpful
-*/
-extern qboolean parsing_single;
-extern qboolean eclass_found;
-extern eclass_t *eclass_e;
-extern eclass_t *g_md3Cache;
-
-/*!
-eclass manager API
-*/
-void Eclass_InsertAlphabetized(eclass_t *e);
-eclass_t** Get_EClass_E();
-void Set_Eclass_Found(qboolean);
-qboolean Get_Parsing_Single();
-
-// .def loading, builtin module
-#include "eclass_def.h"
-extern CSynapseBuiltinClientDef eclass_def;
-
-/*!
-global table to .def entity class description
-this is a builtin module, even if we rely on fgd, we still use this one in cases such as entities not found etc.
-*/
-extern _EClassTable g_EClassDefTable;
-
-/*!
-support for one additional/optional entity format
-*/
-extern bool g_bHaveEClassExt;
-extern _EClassTable g_EClassExtTable;
-
-
-#include "iplugin.h"
-// for interfaces, we require main plugin header included
-#include "qerplugin.h"
-
-//
-// SurfaceDlg.cpp and surface properties plugin
-//
-//++timo some patch in/out stuff is in there, needs to be moved out in a dedicated interface
-#include "isurfaceplugin.h"
-#include "surfaceplugin.h"
-void WINAPI Patch_Rebuild(patchMesh_t *p);
-#include "isurfaceplugin.h"
-extern _QERPlugSurfaceTable g_SurfaceTable;
-void SurfaceDlgFitAll();
-
-//
-// OpenGL interface
-//
-#include "igl.h"
-
-GtkWidget* WINAPI QERApp_GetQeglobalsGLWidget();
-void WINAPI QERApp_HookGL2DWindow(IGL2DWindow* pGLW);
-void WINAPI QERApp_UnHookGL2DWindow(IGL2DWindow* pGLW);
-void WINAPI QERApp_HookGL3DWindow(IGL3DWindow* pGLW);
-void WINAPI QERApp_UnHookGL3DWindow(IGL3DWindow* pGLW);
-void Draw2DPluginEntities( VIEWTYPE vt );
-void Draw3DPluginEntities();
-
-//
-// IShaders interface
-//
-#define USE_SHADERSTABLE_DEFINE
-#include "ishaders.h"
-extern _QERShadersTable g_ShadersTable;
-
-//
-// ISelectedFace interface
-//
-#include "iselectedface.h"
-int WINAPI QERApp_GetSelectedFaceCount();
-// NOTE: it's the brush corresponding to the selected face below!
-brush_t* WINAPI QERApp_GetSelectedFaceBrush(int iface);
-face_t* WINAPI QERApp_GetSelectedFace(int iface);
-int WINAPI QERApp_GetFaceInfo(int iface, _QERFaceData *pFaceData, winding_t *pWinding);
-int WINAPI QERApp_SetFaceInfo(int iface, _QERFaceData *pFaceData);
-int WINAPI QERApp_ISelectedFace_GetTextureNumber(int iface);
-void WINAPI QERApp_GetTextureSize(int iface, int Size[2]);
-
-//
-// IEpairs interface
-//
-//#include "iepairs.h"
-//#include "epairswrapper.h"
-
-//
-// IImage interface
-//
-#include "iimage.h"
-
-//
-// IFileSystem interface
-//
-#define USE_VFSTABLE_DEFINE
-#include "ifilesystem.h"
-
-extern _QERFileSystemTable g_FileSystemTable;
-
-//
-// TexWnd.cpp
-//
-extern qboolean g_bShowAllShaders;
-
-//
-// texwindow.cpp
-//
-//++timo TODO: we can probably raise the MAX_TEXTUREDIRS limit?
-#define MAX_TEXTUREDIRS 256
-
-extern CPtrArray g_lstSkinCache;
-qtexture_t *QERApp_LoadTextureRGBA(unsigned char* pPixels, int nWidth, int nHeight);
-
-//
-// IScripLib interface
-// GetToken, UnGetToken, etc.
-#include "iscriplib.h"
-extern FILE *g_File;
-void WINAPI QERApp_MapPrintf_FILE( char *text, ... );
-
-//
-// ISurfacePlugin interface
-//
-void QERApp_GetTwoSelectedPatch( patchMesh_t **p1, patchMesh_t **p2 );
-
-//
-// IBSPFrontend interface
-//
-#include "ibspfrontend.h"
-extern _QERPlugBSPFrontendTable g_BSPFrontendTable;
-extern GSList *g_BSPFrontendCommands;
-
-//
-// IToolbar
-//
-#include "itoolbar.h"
-
-//
-// IMessaging interface
-#include "iui.h"
-#include "iui_gtk.h"
-#include "ui.h"
-IWindow* WINAPI QERApp_CreateGLWindow();
-void WINAPI QERApp_HookWindow(IWindowListener* pListen);
-void WINAPI QERApp_UnHookWindow(IWindowListener* pListen);
-IXYWndWrapper* WINAPI QERApp_GetXYWndWrapper();
-void WINAPI QERApp_HookListener(IListener* pListen, int Msg);
-int WINAPI QERApp_UnHookListener(IListener* pListen);
-void DispatchRadiantMsg( int Msg );
-// dispatch for IWindowListener entities
-void DispatchOnMouseMove(guint32 nFlags, int x, int y);
-bool DispatchOnLButtonDown(guint32 nFlags, int x, int y);
-bool DispatchOnLButtonUp(guint32 nFlags, int x, int y);
-
-//
-// IData interface
-//
-#include "idata.h"
-
-//
-// ICamera interface
-//
-#include "icamera.h"
-
-// Some declarations that were in stdafx.h
-
-// main.cpp
-extern gint try_destroy_splash(gpointer);
-
-#include "mainframe.h"
-#include "preferences.h"
-#include "findtexturedialog.h"
-#include "surfacedialog.h"
-#include "patchdialog.h"
-
-class MainFrame;
-class ClipPoint;
-
-extern MainFrame* g_pParentWnd;
-extern CString g_strAppPath;
-extern CString g_strDTDPath;
-extern CString g_pidFile;
-extern CString g_pidGameFile;
-extern CString g_strBitmapsPath;
-extern CString g_strPluginsDir;
-extern CString g_strModulesDir;
-
-extern CGameDescription *g_pGameDescription;
-extern CString g_strGameToolsPath;
-
-extern CString g_strTempPath;
-extern PrefsDlg& g_PrefsDlg;
-extern FindTextureDialog& g_dlgFind;
-extern SurfaceDlg g_dlgSurface;
-extern PatchDialog g_PatchDialog;
-
-extern int g_bIgnoreCommands;
-
-void HideInfoDialog();
-void ShowInfoDialog(const char* pText);
-
-// externs
-//extern void HandleCommand (GtkWidget *widget, gpointer data, bool keydown);
-extern gint HandleCommand (GtkWidget *widget, gpointer data);
-extern void AddSlash(CString&);
-extern void DLLBuildDone();
-extern void CleanUpEntities();
-extern void FindReplace(CString& strContents, const char* pTag, const char* pValue);
-extern void CheckBspProcess();
-extern void QE_CountBrushesAndUpdateStatusBar();
-extern void QE_CheckAutoSave();
-extern qtexture_t *current_texture;
-extern void SaveWithRegion(char *name); // save the current map, sets the map name in the name buffer (deals with regioning)
-extern void RunBsp (char *command);
-extern void Map_Snapshot();
-//extern void WXY_Print();
-extern void AddProp( void );
-extern qboolean DoColor(int iIndex);
-extern entity_t *edit_entity;
-extern int inspector_mode;
-extern bool g_bRotateMode;
-extern bool g_bClipMode;
-extern bool g_bScaleMode;
-extern int g_nScaleHow;
-extern bool g_bPathMode;
-extern void RunScript(char* pBuffer);
-extern bool ExtractPath_and_Filename(const char* pPath, CString& strPath, CString& strFilename);
-extern void Select_Scale(float x, float y, float z);
-extern void Select_RotateTexture(int amt);
-extern void Select_ScaleTexture(float x, float y);
-extern void Select_ShiftTexture(int x, int y);
-extern void FindReplaceTextures(const char* pFind, const char* pReplace, bool bSelected, bool bForce, bool bSelectMatchingFaces);
-/*!
-\fn DoProjectSettings shows the dialog for per-game configurable settings by the user
-typically this sets up things like mod editing configuration
-those a per-project, not the same thing as preferences which are global to the game conf
-this is still being worked on, as we have several issues with how things are configured
-we also have a number of behaviours defined in the .game, which can't be edited graphically
-we dump those properties to the console when the project settings dialog shows up
-*/
-extern void DoProjectSettings();
-extern qboolean region_active;
-extern void Brush_Print(brush_t* b);
-extern void Texture_ShowStartupShaders();
-extern void Map_ImportFile (char *filename);
-extern void Map_SaveSelected(char* pFilename);
-extern void UpdateSurfaceDialog();
-extern void Select_GetTrueMid (vec3_t mid);
-extern bool g_bSwitch;
-extern brush_t g_brFrontSplits;
-extern brush_t g_brBackSplits;
-extern ClipPoint g_Clip1;
-extern ClipPoint g_Clip2;
-extern brush_t* g_pSplitList;
-extern ClipPoint g_PathPoints[256];
-extern void AcquirePath(int nCount, PFNPathCallback* pFunc);
-extern bool g_bScreenUpdates;
-extern SCommandInfo g_Commands[];
-extern int g_nCommandCount;
-extern SKeyInfo g_Keys[];
-extern int g_nKeyCount;
-extern int inspector_mode;
-extern char *bsp_commands[256];
-extern void RunScriptByName(char*, bool);
-extern void DoNewColor(int* i1, int* i2, int* i3);
-extern void UpdateSurfaceDialog();
-extern void CSG_SplitBrushByFace (brush_t *in, face_t *f, brush_t **front, brush_t **back);
-//extern void HandlePopup(CWnd* pWindow, unsigned int uId);
-extern z_t z;
-extern void Select_Scale(float x, float y, float z);
-extern void TextureAxisFromPlane(plane_t *pln, vec3_t xv, vec3_t yv);
-//extern void VectorRotate (vec3_t va, vec3_t vb, vec3_t out);
-//extern void VectorRotate (vec3_t vIn, vec3_t vRotation, vec3_t vOrigin, vec3_t out);
-extern qboolean QE_SaveProject (const char* pProjectFile);
-//extern void NewBSP(char* pCommandLine, HWND);
-//extern void NewVIS(char* pCommandLine, HWND);
-//extern void NewRAD(char* pCommandLine, HWND);
-extern void RunTools(char* pCommandLine, GtkWidget* hwnd, const char* pPAKFile);
-extern void Clamp(float& f, int nClamp);
-extern void MemFile_fprintf(MemStream* pMemFile, const char* pText, ...);
-//extern void SaveWindowPlacement(HWND hwnd, const char* pName);
-//extern bool LoadWindowPlacement(HWND hwnd, const char* pName);
-extern qboolean ConfirmModified (void);
-extern void DoPatchInspector();
-extern void TogglePatchInspector();
-void UpdatePatchInspector();
-extern int BuildShortPathName(const char* pPath, char* pBuffer, int nBufferLen);
-extern int g_nBrushId;
-
-// defined in gtkdlgs.cpp, we might want to move declaration and implementatin with other Select_ stuff..
-// NOTE: there's also a Select_Brush(brush_t *b) function.. unrelated
-extern void SelectBrush (int entitynum, int brushnum);
-
-// bp_dlg.cpp
-// ret: 0 = abort, 1 = load and convert, 2 = changed project settings, load and don't convert
-// the user might decide to switch the BP mode in project settings
-// status: 0 = loading regular, got conflict 1 = loading BP, got conflict
-extern int BP_MessageBox (int status);
-
-// main.cpp
-extern gint try_destroy_splash(gpointer);
-
-// SPoG
-// targetname.cpp
-void Entity_Connect(entity_t *e1, entity_t *e2);
-int GetUniqueTargetId(int iHint);
-
-// xywindow.cpp
-void CreateEntityFromName(const char* name, const vec3_t origin);
-
-// eclass.cpp
-/*!
-\brief initialization of the eclass manager
-general guidelines about eclass.cpp implementation:
-- we don't support unlimited number of eclass file formats together
- currently limited to two
- support for .def is builtin to the core, but you may choose not to activate it
-- search and load of the files:
- the manager is in charge of scanning for eclass definition files to load
- there is a general configuration setting for games which use a different set of
- entities between single player mode and multiplayer mode (TODO: the code doing
- this needs to be abstracted some more)
-- duplicate files / multiple files:
- if two files with the same name exist (for instance in the basegame, and in fs_game)
- then only the first one found in the scan order is loaded
- if several files are found, they are all loaded
- this allows mods to either replace or extend the list of eclass
-- if eclass_singleload prop is used in the .game, then there is no multiple files check
- the first file found is loaded, and there is no further search for the given extension
- (this was an addition for HL support)
-*/
-void Eclass_Init ();
-eclass_t *Eclass_ForName (const char *name, qboolean has_brushes);
-eclass_t * EClass_Create( const char *name, float col1, float col2, float col3, const vec3_t *mins, const vec3_t *maxs, const char *comments );
-
-#endif // _QE3_H_