/*************/ /*** Utils ***/ /*************/ #include "stdafx.h" #include "MapEdit.h" #include "MapEditDoc.h" #include #include #include #include "GLEnabledView.h" #include #include #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; YGetPathName(); GString Path; Path=FName.Drive(); Path+=FName.Dir(); Path.Append('\\'); Out=Path; Out+=In; } */ /**************************************************************************************/ /*!!! void MakePathRel2App(const char* In,char *Out) { GString RootPath=theApp.GetCurrent()->GetPathName(); GFName::makerelative(RootPath,In,Out); } */ /**************************************************************************************/ GString GetWorkingPath() { GFName FullPath=theApp.GetCurrent()->GetPathName(); GString Path; Path=FullPath.Drive(); Path+=FullPath.Dir(); Path.Append('\\'); return(Path); } /*****************************************************************************/ void CheckFilename(GString &Filename) { FILE *File; CString mexstr; GFName FName=Filename; GString Name; // Check File exists File=fopen(Filename,"r"); if (File) { fclose(File); return; } Name=FName.File(); Name.Append('.'); Name+=FName.Ext(); mexstr.Format("%s Not Found.\n\nPlease Locate\n", Filename); AfxMessageBox(mexstr,MB_OK | MB_ICONEXCLAMATION); char BASED_CODE Filter[]= "All Files (*.*)|*.*||"; CFileDialog Dlg(true,NULL,Name,OFN_HIDEREADONLY | OFN_PATHMUSTEXIST,Filter); if (Dlg.DoModal()!=IDOK) return; Filename=Dlg.GetPathName(); } /*****************************************************************************/