161 lines
3.9 KiB
C++
161 lines
3.9 KiB
C++
class OutputFile
|
|
{
|
|
public:
|
|
OutputFile(FILE* out)
|
|
{
|
|
outfile = out;
|
|
tabs = 0;
|
|
tabStr[0] = '\0';
|
|
}
|
|
|
|
~OutputFile()
|
|
{
|
|
if (outfile)
|
|
{
|
|
fflush(outfile);
|
|
fclose(outfile);
|
|
}
|
|
}
|
|
|
|
static OutputFile* CreateOutputFile(LPTSTR filename);
|
|
|
|
virtual VOID GraphicsProcedure() = 0;
|
|
virtual VOID GraphicsDeclaration() = 0;
|
|
|
|
virtual VOID PointDeclaration(LPCTSTR pointName, Point* pts, INT count = -1) = 0;
|
|
virtual VOID ColorDeclaration(LPCTSTR colorName, ARGB* argb, INT count = -1) = 0;
|
|
virtual VOID RectangleDeclaration(LPCTSTR rectName, ERectangle& rect) = 0;
|
|
|
|
virtual VOID Declaration(LPCTSTR type,
|
|
LPCTSTR object,
|
|
LPCTSTR argList,
|
|
...) = 0;
|
|
|
|
// set matrix, do nothing if identity matrix
|
|
virtual VOID SetPointDeclaration(LPCTSTR object,
|
|
LPCTSTR command,
|
|
LPCTSTR varName,
|
|
Point* pts,
|
|
INT count = -1,
|
|
BOOL ref = FALSE) = 0;
|
|
|
|
virtual VOID SetColorDeclaration(LPCTSTR object,
|
|
LPCTSTR command,
|
|
LPCTSTR varName,
|
|
ARGB* colors,
|
|
INT count = -1,
|
|
BOOL ref = FALSE) = 0;
|
|
|
|
virtual VOID SetMatrixDeclaration(LPCTSTR object,
|
|
LPCTSTR command,
|
|
LPCTSTR varName,
|
|
Matrix* matrix) = 0;
|
|
|
|
virtual VOID SetBlendDeclaration(LPCTSTR object,
|
|
LPCTSTR command,
|
|
LPCTSTR varName,
|
|
REAL* blend,
|
|
INT count) = 0;
|
|
|
|
virtual VOID GraphicsCommand(LPCTSTR command,
|
|
LPCTSTR argList,
|
|
...) = 0;
|
|
|
|
virtual VOID ObjectCommand(LPCTSTR object,
|
|
LPCTSTR command,
|
|
LPCTSTR argList,
|
|
...) = 0;
|
|
|
|
virtual VOID BeginIndent() = 0;
|
|
virtual VOID EndIndent() = 0;
|
|
virtual VOID BlankLine() = 0;
|
|
|
|
virtual LPTSTR Ref(LPCTSTR) = 0;
|
|
virtual LPTSTR RefArray(LPCTSTR refStr) = 0;
|
|
virtual LPTSTR WStr(LPCTSTR) = 0;
|
|
|
|
protected:
|
|
FILE* outfile;
|
|
INT tabs;
|
|
TCHAR tabStr[MAX_PATH];
|
|
};
|
|
|
|
class CPPOutputFile : public OutputFile
|
|
{
|
|
public:
|
|
CPPOutputFile(FILE* out) : OutputFile(out) {}
|
|
|
|
virtual VOID GraphicsProcedure();
|
|
virtual VOID GraphicsDeclaration();
|
|
|
|
virtual VOID PointDeclaration(LPCTSTR pointName, Point* pts, INT count = -1);
|
|
virtual VOID ColorDeclaration(LPCTSTR colorName, ARGB* argb, INT count = -1);
|
|
virtual VOID RectangleDeclaration(LPCTSTR rectName, ERectangle& rect);
|
|
|
|
virtual VOID Declaration(LPCTSTR type,
|
|
LPCTSTR object,
|
|
LPCTSTR argList,
|
|
...);
|
|
|
|
// set matrix, do nothing if identity matrix
|
|
virtual VOID SetPointDeclaration(LPCTSTR object,
|
|
LPCTSTR command,
|
|
LPCTSTR varName,
|
|
Point* pts,
|
|
INT count = -1,
|
|
BOOL ref = FALSE);
|
|
|
|
virtual VOID SetColorDeclaration(LPCTSTR object,
|
|
LPCTSTR command,
|
|
LPCTSTR varName,
|
|
ARGB* colors,
|
|
INT count = -1,
|
|
BOOL ref = FALSE);
|
|
|
|
virtual VOID SetMatrixDeclaration(LPCTSTR object,
|
|
LPCTSTR command,
|
|
LPCTSTR varName,
|
|
Matrix* matrix);
|
|
|
|
virtual VOID SetBlendDeclaration(LPCTSTR object,
|
|
LPCTSTR command,
|
|
LPCTSTR varName,
|
|
REAL* blend,
|
|
INT count);
|
|
|
|
virtual VOID GraphicsCommand(LPCTSTR command,
|
|
LPCTSTR argList,
|
|
...);
|
|
|
|
virtual VOID ObjectCommand(LPCTSTR object,
|
|
LPCTSTR command,
|
|
LPCTSTR argList,
|
|
...);
|
|
|
|
virtual VOID BeginIndent();
|
|
virtual VOID EndIndent();
|
|
virtual VOID BlankLine();
|
|
|
|
// add '&' to constant
|
|
virtual LPTSTR Ref(LPCTSTR refStr);
|
|
|
|
// add '&' name '[x]'
|
|
virtual LPTSTR RefArray(LPCTSTR refStr);
|
|
|
|
// Add 'L' to constant
|
|
virtual LPTSTR WStr(LPCTSTR refStr);
|
|
};
|
|
|
|
class JavaOutputFile : public CPPOutputFile
|
|
{
|
|
public:
|
|
JavaOutputFile(FILE* out) : CPPOutputFile(out) {};
|
|
};
|
|
|
|
class VMLOutputFile : public CPPOutputFile
|
|
{
|
|
public:
|
|
VMLOutputFile(FILE* out) : CPPOutputFile(out) {};
|
|
};
|
|
|