/*************/ /*** Utils ***/ /*************/ #include "stdafx.h" #include #include #include #include "GLEnabledView.h" #include "Utils.H" /**************************************************************************************/ void DbgMsg(const char * pszFmt,...) { char szBuf[256]; if (pszFmt) { va_list args; va_start(args,pszFmt); vsprintf(szBuf,pszFmt,args); OutputDebugString(szBuf); va_end(args); } } /**************************************************************************************/ /**************************************************************************************/ void BuildGLBox(float XMin,float XMax,float YMin,float YMax,float ZMin,float ZMax) { // Bottom Face glVertex3f( XMin, YMin, ZMin); glVertex3f( XMax, YMin, ZMin); glVertex3f( XMax, YMin, ZMax); glVertex3f( XMin, YMin, ZMax); // Front Face glVertex3f( XMin, YMin, ZMax); glVertex3f( XMax, YMin, ZMax); glVertex3f( XMax, YMax, ZMax); glVertex3f( XMin, YMax, ZMax); // Back Face glVertex3f( XMin, YMin, ZMin); glVertex3f( XMin, YMax, ZMin); glVertex3f( XMax, YMax, ZMin); glVertex3f( XMax, YMin, ZMin); // Right face glVertex3f( XMax, YMin, ZMin); glVertex3f( XMax, YMax, ZMin); glVertex3f( XMax, YMax, ZMax); glVertex3f( XMax, YMin, ZMax); // Left Face glVertex3f( XMin, YMin, ZMin); glVertex3f( XMin, YMin, ZMax); glVertex3f( XMin, YMax, ZMax); glVertex3f( XMin, YMax, ZMin); // Top Face glVertex3f( XMin, YMax, ZMin); glVertex3f( XMin, YMax, ZMax); glVertex3f( XMax, YMax, ZMax); glVertex3f( XMax, YMax, ZMin); } /**************************************************************************************/ void BuildGLBoxNoNormals(float XMin,float XMax,float YMin,float YMax,float ZMin,float ZMax) { // Bottom Face glVertex3f( XMin, YMin, ZMin); glVertex3f( XMax, YMin, ZMin); glVertex3f( XMax, YMin, ZMax); glVertex3f( XMin, YMin, ZMax); // Front Face glVertex3f( XMin, YMin, ZMax); glVertex3f( XMax, YMin, ZMax); glVertex3f( XMax, YMax, ZMax); glVertex3f( XMin, YMax, ZMax); // Back Face glVertex3f( XMin, YMin, ZMin); glVertex3f( XMin, YMax, ZMin); glVertex3f( XMax, YMax, ZMin); glVertex3f( XMax, YMin, ZMin); // Right face glVertex3f( XMax, YMin, ZMin); glVertex3f( XMax, YMax, ZMin); glVertex3f( XMax, YMax, ZMax); glVertex3f( XMax, YMin, ZMax); // Left Face glVertex3f( XMin, YMin, ZMin); glVertex3f( XMin, YMin, ZMax); glVertex3f( XMin, YMax, ZMax); glVertex3f( XMin, YMax, ZMin); // Top Face glVertex3f( XMin, YMax, ZMin); glVertex3f( XMin, YMax, ZMax); glVertex3f( XMax, YMax, ZMax); glVertex3f( XMax, YMax, ZMin); } /**************************************************************************************/ void BuildGLQuad(float XMin,float XMax,float YMin,float YMax,float Z) { glVertex3f( XMin, YMin, Z); glVertex3f( XMax, YMin, Z); glVertex3f( XMax, YMax, Z); glVertex3f( XMin, YMax, Z); } /**************************************************************************************/ /**************************************************************************************/ /**************************************************************************************/ CPoint IDToPoint(int ID,int Width) { CPoint XY; XY.x=ID%Width; XY.y=ID/Width; return(XY); } /**************************************************************************************/ int PointToID(CPoint &Pnt,int Width) { int ID; ID=(Pnt.y*Width)+Pnt.x; return(ID); } /**************************************************************************************/ /**************************************************************************************/ /**************************************************************************************/ struct sTgaHdr { char id; // 0 char colmaptype; // 1 char imagetype; // 2 char fei[2]; // 3 char cml[2]; // 5 char cmes; // 7 short xorig; // 8 short yorig; // 10 short width; // 12 short height; // 14 char depth; // 15 char imagedesc; // 16 }; void SaveTGA(char *Filename,int W,int H,u8 *Data) { FILE *File; sTgaHdr FileHdr; File=fopen(Filename,"wb"); memset(&FileHdr,0 ,sizeof(sTgaHdr)); FileHdr.imagetype= 2; //imagetype FileHdr.width = W; FileHdr.height= H; FileHdr.depth=24; fwrite(&FileHdr,sizeof(sTgaHdr),1,File); fwrite(Data,W*H*3,1,File); fclose(File); } /**************************************************************************************/ void BGR2RGB(int W,int H,u8 *Data) { for (int Y=0; Y