|
|
#include <windows.h>
#include <GL\gl.h>
#include <GL\glu.h>
#include <GL\glaux.h>
#include "viewerres.h"
#include "trackbal.h"
#include "pmesh.h"
#include <objbase.h>
#include <initguid.h>
/************************************************************************/ /******************* Macros *********************************************/ /************************************************************************/ #define SCROLLBAR_PAGE 100
#define SCROLLBAR_MIN 0
#define SCROLLBAR_MAX 1000+(SCROLLBAR_PAGE-1)
#define WIN_WIDTH 500
#define WIN_HEIGHT 500
#define WIN_X 10
#define WIN_Y 10
#define DEFHITHER 1 //0.1
#define DEFYONDER 10 //1e30;
#ifdef DEBUGGING
char szDebugBuffer[80]; #define DEBUG(parm1,parm2)\
{\ wsprintf(szDebugBuffer,parm1,parm2);\ OutputDebugString(szDebugBuffer);\ } #else
#define DEBUG(parm1,parm2)
#endif
/************************************************************************/ /******************* Enums **********************************************/ /************************************************************************/ /**** Enums ****/ enum NormalMode {PER_VERTEX, PER_FACET, PER_OBJECT}; enum TransformType {ORTHO_PROJECTION, PERSP_PROJECTION};
/************************************************************************/ /******************* Structs ********************************************/ /************************************************************************/ /**** Structs ****/
typedef struct _ostate { } GLSTATE, *LPGLSTATE;
typedef struct _Scene { GLfloat hither; GLfloat yon;
GLfloat scale; GLfloat angle; int scroll_pos; GLfloat trans[3]; GLfloat from[3]; GLfloat to[3]; GLfloat up[3]; GLfloat aspect_ratio; GLfloat fov; GLfloat zoom;
GLfloat max_vert[3]; GLfloat min_vert[3]; } SCENE, *LPSCENE;
typedef struct _WInf { HWND hWnd; HMENU hMenu; POINT wPosition; POINT wCenter; SIZE wSize; HPALETTE hPalette; HPALETTE hOldPalette; HGLRC hRc;
LONG rmouseX; LONG rmouseY; BOOL rmouse_down; LONG lmouseX; LONG lmouseY; BOOL lmouse_down; } WININFO, *LPWININFO;
/************************************************************************/ /******************* Windows Globals ************************************/ /************************************************************************/ /**** Externs ****/ extern WININFO g_wi; extern SCENE g_s;
/************************************************************************/ /******************* Function Prototypes ********************************/ /************************************************************************/ /******** viewer.cxx *************/ extern void CleanUpAndQuit (void); extern BOOL InitMainWindow (HINSTANCE, HINSTANCE, LPSTR, int); extern LONG APIENTRY GLWndProc(HWND, UINT, UINT, LONG);
/******** glstuff.cxx ************/ extern void Reshape (GLsizei, GLsizei); extern void SetViewWrap (GLsizei, GLsizei); extern void InitGL(void); extern void InitDrawing (); extern void CALLBACK DoGlStuff(void); extern void spin( HWND, HDC ); extern void CleanupGL(HGLRC); extern void UpdateWinTitle (HWND); extern void spin(void); extern void ForceRedraw(HWND); extern char* OpenPMFile(HWND, const char *, int); extern void EnableLighting (void); extern void DisableLighting (void);
extern void Key_up (void); extern void Key_down (void); extern void Key_i (void); extern void Key_z (void); extern void Key_Z (void); extern void Key_y (void); extern void Key_Y (void); extern void Key_x (void); extern void Key_X (void);
extern BOOL FindPixelFormat(HDC); extern HPALETTE CreateRGBPalette( HDC hdc );
/******** pm.cxx *****************/ extern long RealizePaletteNow( HDC, HPALETTE, BOOL); extern int PixelFormatDescriptorFromDc( HDC, PIXELFORMATDESCRIPTOR * );
/************************************************************************/ /******************* OpenGL State ***************************************/ /************************************************************************/ /********** OpenGL State *************/ extern BOOL renderDoubleBuffer; extern int colormode; extern enum NormalMode normal_mode;
extern BOOL linesmooth_enable; extern BOOL polysmooth_enable;
extern GLenum cull_face; extern GLenum front_face; extern BOOL cull_enable;
extern BOOL depth_mode; extern BOOL fog_enable; extern BOOL clip_enable; extern GLenum shade_model;
extern BOOL polystipple_enable; extern BOOL linestipple_enable;
extern int matrixmode; extern enum TransformType tx_type;
extern BOOL dither_enable;
extern BOOL blend_enable; extern GLenum sblendfunc; extern GLenum dblendfunc;
extern BOOL filled_mode; extern BOOL edge_mode; extern BOOL displaylist_mode; extern GLfloat linewidth;
extern GLfloat hither; extern GLfloat yon;
extern GLenum polymodefront; extern GLenum polymodeback;
extern BOOL mblur_enable; extern GLfloat blur_amount; extern int fsantimode; extern int fsaredraw; extern GLfloat fsajitter;
extern int cmface; extern int cmmode; extern int cmenable;
extern BOOL tex_enable; extern BOOL texgen_enable; extern GLenum texenvmode;
extern long tex_pack; extern int tex_row; extern int tex_col; extern int tex_index; extern int tex_xpix; extern int tex_ypix; extern int tex_numpix; extern int tex_numcomp; extern GLfloat tex_minfilter; extern GLfloat tex_magfilter; extern unsigned char *Image; extern unsigned char *TextureImage;
extern BOOL light_enable; extern int numInfLights; extern int numLocalLights; extern BOOL lighttwoside; extern GLfloat localviewmode;
extern float curquat[4]; extern float lastquat[4];
/************** PM related stuff **********/ extern float pm_lod_level; extern float old_lod; extern BOOL pm_ready; extern LPPMESH pPMesh; extern LPPMESHGL pPMeshGL;
|