This commit is contained in:
parent
b08c0884df
commit
cb92498e70
13 changed files with 253 additions and 55 deletions
|
@ -44,7 +44,7 @@ CCore::CCore()
|
||||||
GridFlag=true;
|
GridFlag=true;
|
||||||
Is3dFlag=true;
|
Is3dFlag=true;
|
||||||
CurrentView=NULL;
|
CurrentView=NULL;
|
||||||
CursorPos.x=CursorPos.y=0;
|
CursorPos.x=CursorPos.y=-1;
|
||||||
CurrentLayer=0;
|
CurrentLayer=0;
|
||||||
|
|
||||||
GString Filename;
|
GString Filename;
|
||||||
|
@ -53,6 +53,7 @@ GString Filename;
|
||||||
GetExecPath(Filename);
|
GetExecPath(Filename);
|
||||||
Filename+=theApp.GetConfigStr("FileLocation","Iconz");
|
Filename+=theApp.GetConfigStr("FileLocation","Iconz");
|
||||||
IconBank->AddSet(Filename);
|
IconBank->AddSet(Filename);
|
||||||
|
RenderTGAFlag=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -104,6 +105,7 @@ void CCore::Load(CFile *File)
|
||||||
int Version,i;
|
int Version,i;
|
||||||
BOOL F;
|
BOOL F;
|
||||||
Vector3 DuffVector;
|
Vector3 DuffVector;
|
||||||
|
|
||||||
File->Read(&Version,sizeof(int));
|
File->Read(&Version,sizeof(int));
|
||||||
if (Version>100000) Version=1; // Check fix for changing version to int from float
|
if (Version>100000) Version=1; // Check fix for changing version to int from float
|
||||||
#ifndef _DEBUG
|
#ifndef _DEBUG
|
||||||
|
@ -155,8 +157,8 @@ int MapHeight=ActionLayer->GetHeight();
|
||||||
{
|
{
|
||||||
Layer[i]->CheckLayerSize(MapWidth,MapHeight);
|
Layer[i]->CheckLayerSize(MapWidth,MapHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void CCore::Validate(int Type)
|
void CCore::Validate(int Type)
|
||||||
{
|
{
|
||||||
|
@ -219,11 +221,10 @@ Vector3 &ThisCam=GetCam();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (IconBank->NeedLoad()) IconBank->LoadAllSets(this);
|
if (IconBank->NeedLoad()) IconBank->LoadAllSets(this);
|
||||||
|
if (RenderTGAFlag) RenderToTga();
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen
|
||||||
|
|
||||||
RenderLayers(IsSubView() || CurrentLayer->IsUnique());
|
RenderLayers(IsSubView() || CurrentLayer->IsUnique());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -835,3 +836,18 @@ CExport Exp(ExportName);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void CCore::RenderToTga(char *Filename)
|
||||||
|
{
|
||||||
|
TGAFilename=Filename;
|
||||||
|
RenderTGAFlag=true;
|
||||||
|
RedrawView();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void CCore::RenderToTga()
|
||||||
|
{
|
||||||
|
RenderTGAFlag=false;
|
||||||
|
ActionLayer->Render4TGA(TGAFilename);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,8 @@ public:
|
||||||
void RenderLayers(bool OneShot=false);
|
void RenderLayers(bool OneShot=false);
|
||||||
void RenderNumber(int No);
|
void RenderNumber(int No);
|
||||||
void Export(char *Filename);
|
void Export(char *Filename);
|
||||||
|
void RenderToTga(char *Filename);
|
||||||
|
void RenderToTga();
|
||||||
|
|
||||||
// View Stuff
|
// View Stuff
|
||||||
void SetView(CMapEditView *View) {CurrentView=View;}
|
void SetView(CMapEditView *View) {CurrentView=View;}
|
||||||
|
@ -139,6 +141,8 @@ private:
|
||||||
bool Is3dFlag;
|
bool Is3dFlag;
|
||||||
|
|
||||||
CElemBank *IconBank;
|
CElemBank *IconBank;
|
||||||
|
bool RenderTGAFlag;
|
||||||
|
GString TGAFilename;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,7 @@ virtual int GetSubType() {return(LayerDef.SubType);}
|
||||||
|
|
||||||
|
|
||||||
virtual void Render(CCore *Core,Vector3 &CamPos,bool Is3d){};
|
virtual void Render(CCore *Core,Vector3 &CamPos,bool Is3d){};
|
||||||
|
virtual void Render4TGA(const char *Filename){}
|
||||||
virtual void RenderGrid(CCore *Core,Vector3 &CamPos,bool Active);
|
virtual void RenderGrid(CCore *Core,Vector3 &CamPos,bool Active);
|
||||||
virtual void RenderSelection(CCore *Core,Vector3 &ThisCam){};
|
virtual void RenderSelection(CCore *Core,Vector3 &ThisCam){};
|
||||||
virtual void RenderCursor(CCore *Core,Vector3 &CamPos,bool Is3d){};
|
virtual void RenderCursor(CCore *Core,Vector3 &CamPos,bool Is3d){};
|
||||||
|
|
|
@ -69,6 +69,11 @@ int i,ListSize;
|
||||||
File->Read(&ThisThing.Data,sizeof(sLayerThingData));
|
File->Read(&ThisThing.Data,sizeof(sLayerThingData));
|
||||||
}
|
}
|
||||||
LoadThingNames(File,Version);
|
LoadThingNames(File,Version);
|
||||||
|
|
||||||
|
// CurrentDefThing=-1;
|
||||||
|
// CurrentThing=-1;
|
||||||
|
// CurrentThingPoint=-1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -79,7 +84,8 @@ int i,ListSize;
|
||||||
ThisThing.XY.resize(ListSize);
|
ThisThing.XY.resize(ListSize);
|
||||||
for (i=0 ;i<ListSize; i++)
|
for (i=0 ;i<ListSize; i++)
|
||||||
{
|
{
|
||||||
File->Read(&ThisThing.XY[i],sizeof(CPoint));
|
CPoint &ThisPoint=ThisThing.XY[i];
|
||||||
|
File->Read(&ThisPoint,sizeof(CPoint));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,7 +138,8 @@ int i,ListSize=ThisThing.XY.size();
|
||||||
File->Write(&ListSize,sizeof(int));
|
File->Write(&ListSize,sizeof(int));
|
||||||
for (i=0 ;i<ListSize; i++)
|
for (i=0 ;i<ListSize; i++)
|
||||||
{
|
{
|
||||||
File->Write(&ThisThing.XY[i],sizeof(CPoint));
|
CPoint &ThisPoint=ThisThing.XY[i];
|
||||||
|
File->Write(&ThisPoint,sizeof(CPoint));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -327,12 +334,14 @@ int i,ListSize;
|
||||||
ListSize=ThisThing.XY.size();
|
ListSize=ThisThing.XY.size();
|
||||||
for (i=0; i<ListSize; i++)
|
for (i=0; i<ListSize; i++)
|
||||||
{
|
{
|
||||||
|
CPoint &ThisPoint=ThisThing.XY[i];
|
||||||
CString Str;
|
CString Str;
|
||||||
Str.Format("%i: %i, %i",i,ThisThing.XY[i].x,ThisThing.XY[i].y);
|
Str.Format("%i: %i, %i",i,ThisPoint.x,ThisPoint.y);
|
||||||
List.AddString(Str);
|
List.AddString(Str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
List.SetCurSel(CurrentThingPoint);
|
List.SetCurSel(CurrentThingPoint);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -341,6 +341,135 @@ float Y1=Rect.bottom-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
#define TGA_TILE_SIZE 8
|
||||||
|
void CLayerTile::Render4TGA(const char *Filename)
|
||||||
|
{
|
||||||
|
u8 *Buffer;
|
||||||
|
int MapW=Map.GetWidth();
|
||||||
|
int MapH=Map.GetHeight();
|
||||||
|
int PixW=MapW*8;
|
||||||
|
int PixH=MapH*8;
|
||||||
|
|
||||||
|
Buffer=(u8*)malloc(PixW*PixH*3);
|
||||||
|
ASSERT(Buffer);
|
||||||
|
memset(Buffer,0,PixW*PixH*3);
|
||||||
|
|
||||||
|
u8 *Ptr=Buffer;
|
||||||
|
for (int Y=0; Y<MapH; Y++)
|
||||||
|
{
|
||||||
|
Ptr=&Buffer[((MapH-1)-Y)*PixW*TGA_TILE_SIZE*3];
|
||||||
|
for (int X=0; X<MapW; X++)
|
||||||
|
{
|
||||||
|
sMapElem &Elem=Map.Get(X,Y);
|
||||||
|
if (Elem.Tile!=0)
|
||||||
|
{
|
||||||
|
WriteTile2Buffer(Elem,Ptr,X,Y,PixW,PixH);
|
||||||
|
}
|
||||||
|
Ptr+=(TGA_TILE_SIZE*3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SaveTGA(Filename,PixW,PixH,Buffer,true);
|
||||||
|
free(Buffer);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void ProcessRGB(u8 *Src,int SrcW,int SrcH,u8 *Dst,int DstW,int DstH)
|
||||||
|
{
|
||||||
|
for (int y=0;y<DstH;y++)
|
||||||
|
{
|
||||||
|
for (int x=0;x<DstW;x++)
|
||||||
|
{
|
||||||
|
float XFrac=float(x)/float(DstW);
|
||||||
|
float YFrac=float(y)/float(DstH);
|
||||||
|
int FromX=float(SrcW)*XFrac;
|
||||||
|
int FromY=float(SrcH)*YFrac;
|
||||||
|
|
||||||
|
u8 R=Src[((FromX+(FromY*SrcW))*3)+0];
|
||||||
|
u8 G=Src[((FromX+(FromY*SrcW))*3)+1];
|
||||||
|
u8 B=Src[((FromX+(FromY*SrcW))*3)+2];
|
||||||
|
if (R==255 && G==0 && B==255)
|
||||||
|
{
|
||||||
|
R=G=B=0;
|
||||||
|
}
|
||||||
|
Dst[((x+(y*DstW))*3)+0]=R;
|
||||||
|
Dst[((x+(y*DstW))*3)+1]=G;
|
||||||
|
Dst[((x+(y*DstW))*3)+2]=B;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FlipX(u8 *_Src,u8 *_Dst,int W,int H)
|
||||||
|
{
|
||||||
|
int RGBW=W*3;
|
||||||
|
u8 Tmp[TGA_TILE_SIZE*TGA_TILE_SIZE*3];
|
||||||
|
u8 *Dst=Tmp;
|
||||||
|
|
||||||
|
for (int Y=0; Y<H; Y++)
|
||||||
|
{
|
||||||
|
for (int X=0; X<W; X++)
|
||||||
|
{
|
||||||
|
int PX=((W-1)-X);
|
||||||
|
u8 *Src=&_Src[(PX*3)+Y*RGBW];
|
||||||
|
|
||||||
|
*Dst++=*Src++;
|
||||||
|
*Dst++=*Src++;
|
||||||
|
*Dst++=*Src++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
memcpy(_Dst,Tmp,W*H*3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void FlipY(u8 *_Src,u8 *_Dst,int W,int H)
|
||||||
|
{
|
||||||
|
int RGBW=W*3;
|
||||||
|
u8 Tmp[TGA_TILE_SIZE*TGA_TILE_SIZE*3];
|
||||||
|
|
||||||
|
for (int Y=0; Y<H; Y++)
|
||||||
|
{
|
||||||
|
u8 *Src=&_Src[(Y)*RGBW];
|
||||||
|
u8 *Dst= &Tmp[((H-1)-Y)*RGBW];
|
||||||
|
|
||||||
|
memcpy(Dst,Src,RGBW);
|
||||||
|
}
|
||||||
|
memcpy(_Dst,Tmp,W*H*3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void CLayerTile::WriteTile2Buffer(sMapElem &Elem,u8 *Out,int XPos,int YPos,int PixW,int PixH)
|
||||||
|
{
|
||||||
|
u8 LilBlock[TGA_TILE_SIZE*TGA_TILE_SIZE*3];
|
||||||
|
CElem &Tile=TileBank->GetElem(Elem.Set,Elem.Tile);
|
||||||
|
int TileW=Tile.GetElemWidth();
|
||||||
|
int TileH=Tile.GetElemHeight();
|
||||||
|
|
||||||
|
if (TileW>16 || TileH>16 || TileW<0 || TileH<0)
|
||||||
|
{
|
||||||
|
TRACE2("%i %i\n",TileW,TileH);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ProcessRGB(Tile.GetElemRGB(),TileW,TileH,LilBlock,TGA_TILE_SIZE,TGA_TILE_SIZE);
|
||||||
|
if (Elem.Flags & PC_TILE_FLAG_MIRROR_X) FlipX(LilBlock,LilBlock,TGA_TILE_SIZE,TGA_TILE_SIZE);
|
||||||
|
if (Elem.Flags & PC_TILE_FLAG_MIRROR_Y) FlipY(LilBlock,LilBlock,TGA_TILE_SIZE,TGA_TILE_SIZE);
|
||||||
|
|
||||||
|
u8 *RGB=LilBlock;
|
||||||
|
for (int Y=0; Y<TGA_TILE_SIZE; Y++)
|
||||||
|
{
|
||||||
|
u8 *NextOut=Out+(PixW*3);
|
||||||
|
for (int X=0; X<TGA_TILE_SIZE; X++)
|
||||||
|
{
|
||||||
|
*Out++=*RGB++;
|
||||||
|
*Out++=*RGB++;
|
||||||
|
*Out++=*RGB++;
|
||||||
|
}
|
||||||
|
Out=NextOut;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*** Gui *********************************************************************/
|
/*** Gui *********************************************************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -34,6 +34,8 @@ public:
|
||||||
virtual void Render(CCore *Core,Vector3 &CamPos,bool Is3d);
|
virtual void Render(CCore *Core,Vector3 &CamPos,bool Is3d);
|
||||||
virtual void RenderSelection(CCore *Core,Vector3 &ThisCam);
|
virtual void RenderSelection(CCore *Core,Vector3 &ThisCam);
|
||||||
void RenderCursor(CCore *Core,Vector3 &CamPos,bool Is3d);
|
void RenderCursor(CCore *Core,Vector3 &CamPos,bool Is3d);
|
||||||
|
void Render4TGA(const char *Filename);
|
||||||
|
void WriteTile2Buffer(sMapElem &Elem,u8 *Buffer,int X,int Y,int PixW,int PixH);
|
||||||
|
|
||||||
virtual void GUIInit(CCore *Core);
|
virtual void GUIInit(CCore *Core);
|
||||||
virtual void GUIKill(CCore *Core);
|
virtual void GUIKill(CCore *Core);
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
[General Info]
|
[General Info]
|
||||||
Version=1
|
Version=1
|
||||||
LastClass=CGUILayerItem
|
LastClass=CMapEditDoc
|
||||||
LastTemplate=CDialog
|
LastTemplate=CDialog
|
||||||
NewFileInclude1=#include "stdafx.h"
|
NewFileInclude1=#include "stdafx.h"
|
||||||
NewFileInclude2=#include "mapedit.h"
|
NewFileInclude2=#include "mapedit.h"
|
||||||
|
@ -29,24 +29,24 @@ Class17=CMapEditDoc
|
||||||
Class18=CMapEditView
|
Class18=CMapEditView
|
||||||
|
|
||||||
ResourceCount=18
|
ResourceCount=18
|
||||||
Resource1=IDD_ABOUTBOX (English (U.S.))
|
Resource1=IDD_RESIZE
|
||||||
Resource2=IDR_MAPEDITYPE (English (U.S.))
|
Resource2=IDR_MAPEDITYPE (English (U.S.))
|
||||||
Resource3=IDD_LAYER_COLLISION
|
Resource3=IDR_TOOLBAR (English (U.S.))
|
||||||
Resource4=IDD_MULTIBAR (English (U.S.))
|
Resource4=IDD_NEWMAP
|
||||||
Resource5=IDD_LAYER_LIST
|
Resource5=IDD_ADDLAYER
|
||||||
Resource6=IDD_ADDLAYER
|
Resource6=IDD_LAYER_SHADE
|
||||||
Resource7=IDR_TOOLBAR (English (U.S.))
|
Resource7=IDD_MULTIBAR (English (U.S.))
|
||||||
Resource8=xxxx
|
Resource8=xxxx
|
||||||
Resource9=IDD_LAYER_SHADE
|
Resource9=IDD_LAYER_ACTOR
|
||||||
Resource10=IDD_LAYER_ACTOR
|
Resource10=IDD_ABOUTBOX (English (U.S.))
|
||||||
Resource11=IDD_TOOLBAR
|
Resource11=IDD_ELEMLIST
|
||||||
Resource12=IDD_RESIZE
|
Resource12=IDD_TILEBANK
|
||||||
Resource13=IDR_MAINFRAME (English (U.S.))
|
Resource13=IDD_LAYER_LIST
|
||||||
Resource14=IDD_NEWMAP
|
Resource14=IDD_TOOLBAR
|
||||||
Resource15=IDD_LAYER_ACTOR2
|
Resource15=IDD_LAYER_ACTOR2
|
||||||
Class19=CGUILayerActor
|
Class19=CGUILayerActor
|
||||||
Resource16=IDD_TILEBANK
|
Resource16=IDD_LAYER_COLLISION
|
||||||
Resource17=IDD_ELEMLIST
|
Resource17=IDR_MAINFRAME (English (U.S.))
|
||||||
Class20=CGUILayerItem
|
Class20=CGUILayerItem
|
||||||
Resource18=IDD_LAYER_ITEM
|
Resource18=IDD_LAYER_ITEM
|
||||||
|
|
||||||
|
@ -155,6 +155,9 @@ Type=0
|
||||||
BaseClass=CDocument
|
BaseClass=CDocument
|
||||||
HeaderFile=MapEditDoc.h
|
HeaderFile=MapEditDoc.h
|
||||||
ImplementationFile=MapEditDoc.cpp
|
ImplementationFile=MapEditDoc.cpp
|
||||||
|
Filter=N
|
||||||
|
VirtualFilter=DC
|
||||||
|
LastObject=ID_RENDER_TO_TGA
|
||||||
|
|
||||||
[CLS:CMapEditView]
|
[CLS:CMapEditView]
|
||||||
Type=0
|
Type=0
|
||||||
|
@ -263,31 +266,32 @@ Command3=ID_FILE_CLOSE
|
||||||
Command4=ID_FILE_SAVE
|
Command4=ID_FILE_SAVE
|
||||||
Command5=ID_FILE_SAVE_AS
|
Command5=ID_FILE_SAVE_AS
|
||||||
Command6=ID_EXPORT
|
Command6=ID_EXPORT
|
||||||
Command7=ID_FILE_MRU_FILE1
|
Command7=ID_RENDER_TO_TGA
|
||||||
Command8=ID_APP_EXIT
|
Command8=ID_FILE_MRU_FILE1
|
||||||
Command9=ID_EDIT_UNDO
|
Command9=ID_APP_EXIT
|
||||||
Command10=ID_EDIT_CUT
|
Command10=ID_EDIT_UNDO
|
||||||
Command11=ID_EDIT_COPY
|
Command11=ID_EDIT_CUT
|
||||||
Command12=ID_EDIT_PASTE
|
Command12=ID_EDIT_COPY
|
||||||
Command13=ID_RESET_VIEW
|
Command13=ID_EDIT_PASTE
|
||||||
Command14=ID_VIEW_TOOLBAR
|
Command14=ID_RESET_VIEW
|
||||||
Command15=ID_VIEW_STATUS_BAR
|
Command15=ID_VIEW_TOOLBAR
|
||||||
Command16=ID_MAP_SETSIZE
|
Command16=ID_VIEW_STATUS_BAR
|
||||||
Command17=ID_TOGGLE_GRID
|
Command17=ID_MAP_SETSIZE
|
||||||
Command18=ID_ZOOM_IN
|
Command18=ID_TOGGLE_GRID
|
||||||
Command19=ID_ZOOM_OUT
|
Command19=ID_ZOOM_IN
|
||||||
Command20=ID_MIRRORX
|
Command20=ID_ZOOM_OUT
|
||||||
Command21=ID_MIRRORY
|
Command21=ID_MIRRORX
|
||||||
Command22=ID_ACTIVEBRUSH_LEFT
|
Command22=ID_MIRRORY
|
||||||
Command23=ID_ACTIVEBRUSH_RIGHT
|
Command23=ID_ACTIVEBRUSH_LEFT
|
||||||
Command24=ID_TOGGLE_SUBVIEW
|
Command24=ID_ACTIVEBRUSH_RIGHT
|
||||||
Command25=ID_2D_3D_TOGGLE
|
Command25=ID_TOGGLE_SUBVIEW
|
||||||
Command26=ID_WINDOW_NEW
|
Command26=ID_2D_3D_TOGGLE
|
||||||
Command27=ID_WINDOW_CASCADE
|
Command27=ID_WINDOW_NEW
|
||||||
Command28=ID_WINDOW_TILE_HORZ
|
Command28=ID_WINDOW_CASCADE
|
||||||
Command29=ID_WINDOW_ARRANGE
|
Command29=ID_WINDOW_TILE_HORZ
|
||||||
Command30=ID_APP_ABOUT
|
Command30=ID_WINDOW_ARRANGE
|
||||||
CommandCount=30
|
Command31=ID_APP_ABOUT
|
||||||
|
CommandCount=31
|
||||||
|
|
||||||
[ACL:IDR_MAINFRAME (English (U.S.))]
|
[ACL:IDR_MAINFRAME (English (U.S.))]
|
||||||
Type=1
|
Type=1
|
||||||
|
@ -444,5 +448,5 @@ ImplementationFile=GUILayerItem.cpp
|
||||||
BaseClass=CDialog
|
BaseClass=CDialog
|
||||||
Filter=D
|
Filter=D
|
||||||
VirtualFilter=dWC
|
VirtualFilter=dWC
|
||||||
LastObject=IDC_ITEM_LIST
|
LastObject=ID_MIRRORX
|
||||||
|
|
||||||
|
|
|
@ -94,6 +94,8 @@ BEGIN
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "Export ", ID_EXPORT
|
MENUITEM "Export ", ID_EXPORT
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Create Map TGA", ID_RENDER_TO_TGA
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "Recent File", ID_FILE_MRU_FILE1, GRAYED
|
MENUITEM "Recent File", ID_FILE_MRU_FILE1, GRAYED
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "E&xit", ID_APP_EXIT
|
MENUITEM "E&xit", ID_APP_EXIT
|
||||||
|
|
|
@ -37,6 +37,7 @@ BEGIN_MESSAGE_MAP(CMapEditDoc, CDocument)
|
||||||
ON_COMMAND(ID_RESET_VIEW, OnResetView)
|
ON_COMMAND(ID_RESET_VIEW, OnResetView)
|
||||||
ON_COMMAND(ID_TOOLBAR_TILEPALETTE, OnToggleSubView)
|
ON_COMMAND(ID_TOOLBAR_TILEPALETTE, OnToggleSubView)
|
||||||
ON_COMMAND(ID_TOGGLE_GRID, OnToggleGrid)
|
ON_COMMAND(ID_TOGGLE_GRID, OnToggleGrid)
|
||||||
|
ON_COMMAND(ID_RENDER_TO_TGA, OnRenderToTga)
|
||||||
//}}AFX_MSG_MAP
|
//}}AFX_MSG_MAP
|
||||||
END_MESSAGE_MAP()
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
@ -213,6 +214,19 @@ char Filename[256];
|
||||||
Core.Export(Filename);
|
Core.Export(Filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************************/
|
||||||
|
void CMapEditDoc::OnRenderToTga()
|
||||||
|
{
|
||||||
|
char BASED_CODE Filter[]= "TGA File (*.TGA)|*.TGA||";
|
||||||
|
CFileDialog Dlg(FALSE,"*.TGA",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,Filter);
|
||||||
|
|
||||||
|
if (Dlg.DoModal()!=IDOK) return;
|
||||||
|
|
||||||
|
char Filename[256];
|
||||||
|
sprintf(Filename,"%s",Dlg.GetPathName());
|
||||||
|
Core.RenderToTga(Filename);
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************************/
|
/*********************************************************************************/
|
||||||
/*** Tilebank Functions **********************************************************/
|
/*** Tilebank Functions **********************************************************/
|
||||||
/*********************************************************************************/
|
/*********************************************************************************/
|
||||||
|
@ -279,3 +293,4 @@ void CMapEditDoc::FocusView()
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************************/
|
/*********************************************************************************/
|
||||||
|
|
||||||
|
|
|
@ -80,6 +80,7 @@ protected:
|
||||||
afx_msg void OnEditPaste();
|
afx_msg void OnEditPaste();
|
||||||
afx_msg void On2d3dToggle();
|
afx_msg void On2d3dToggle();
|
||||||
afx_msg void OnResetView();
|
afx_msg void OnResetView();
|
||||||
|
afx_msg void OnRenderToTga();
|
||||||
//}}AFX_MSG
|
//}}AFX_MSG
|
||||||
DECLARE_MESSAGE_MAP()
|
DECLARE_MESSAGE_MAP()
|
||||||
|
|
||||||
|
|
|
@ -100,6 +100,7 @@
|
||||||
#define ID_ZOOM_IN 32797
|
#define ID_ZOOM_IN 32797
|
||||||
#define ID_ZOOM_OUT 32798
|
#define ID_ZOOM_OUT 32798
|
||||||
#define ID_RESET_VIEW 32799
|
#define ID_RESET_VIEW 32799
|
||||||
|
#define ID_RENDER_TO_TGA 32800
|
||||||
#define ID_INDICATOR_CURSORXY 59142
|
#define ID_INDICATOR_CURSORXY 59142
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
|
@ -108,7 +109,7 @@
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_3D_CONTROLS 1
|
#define _APS_3D_CONTROLS 1
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 180
|
#define _APS_NEXT_RESOURCE_VALUE 180
|
||||||
#define _APS_NEXT_COMMAND_VALUE 32800
|
#define _APS_NEXT_COMMAND_VALUE 32801
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1103
|
#define _APS_NEXT_CONTROL_VALUE 1103
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -163,9 +163,7 @@ struct sTgaHdr
|
||||||
char imagedesc; // 16
|
char imagedesc; // 16
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void SaveTGA(const char *Filename,int W,int H,u8 *Data,bool IsBGR)
|
||||||
|
|
||||||
void SaveTGA(char *Filename,int W,int H,u8 *Data)
|
|
||||||
{
|
{
|
||||||
FILE *File;
|
FILE *File;
|
||||||
sTgaHdr FileHdr;
|
sTgaHdr FileHdr;
|
||||||
|
@ -180,8 +178,22 @@ sTgaHdr FileHdr;
|
||||||
FileHdr.depth=24;
|
FileHdr.depth=24;
|
||||||
|
|
||||||
fwrite(&FileHdr,sizeof(sTgaHdr),1,File);
|
fwrite(&FileHdr,sizeof(sTgaHdr),1,File);
|
||||||
|
if (!IsBGR)
|
||||||
|
{
|
||||||
fwrite(Data,W*H*3,1,File);
|
fwrite(Data,W*H*3,1,File);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int Size=W*H;
|
||||||
|
for (int i=0; i<Size;i++)
|
||||||
|
{
|
||||||
|
fwrite(&Data[2],1,1,File);
|
||||||
|
fwrite(&Data[1],1,1,File);
|
||||||
|
fwrite(&Data[0],1,1,File);
|
||||||
|
Data+=3;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fclose(File);
|
fclose(File);
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,9 @@ void BuildGLQuad(float XMin,float XMax,float YMin,float YMax,float Z);
|
||||||
CPoint IDToPoint(int ID,int Width);
|
CPoint IDToPoint(int ID,int Width);
|
||||||
int PointToID(CPoint &Pnt,int Width);
|
int PointToID(CPoint &Pnt,int Width);
|
||||||
|
|
||||||
void SaveTGA(char *Filename,int W,int H,u8 *Data);
|
//void SaveTGA(const char *Filename,int W,int H,u8 *Data);
|
||||||
|
void SaveTGA(const char *Filename,int W,int H,u8 *Data,bool IsBGR=false);
|
||||||
|
|
||||||
void SaveBmp(char *Filename,int Width,int Height,RGBQUAD *Pal,u8 *Image);
|
void SaveBmp(char *Filename,int Width,int Height,RGBQUAD *Pal,u8 *Image);
|
||||||
|
|
||||||
void BGR2RGB(int W,int H,u8 *Data);
|
void BGR2RGB(int W,int H,u8 *Data);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue