Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

160 lines
3.9 KiB

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) {};
};