|
|
//// GLOBAL.H - Global variables for CSSAMP
//
//
//// Constants
//
//
#define APPNAMEA "autoText"
#define APPTITLEA "autoText - GdipPlus Text support (Text+) regression test"
#define APPNAMEW L"autoText"
#define APPTITLEW L"autoText - GdipPlus Text support (Text+) regression test"
//// Global variables
//
//
struct GlobalVariables { HINSTANCE Instance; HWND Window; BOOL Unicode; INT TestPage; // Selected with test menu
BOOL RunAllTests; // When set, cycles through all test pages
FontFamily *InstalledFamilies; INT InstalledFamilyCount;
// Parameter flags
BOOL Help; BOOL AutoDisplayRegress; BOOL AutoPrintRegress; HANDLE ghPrinter; BOOL PSLevel2; };
extern HANDLE ghPrinter;
#ifdef GLOBALS_HERE
GlobalVariables G = {0};
#else
extern GlobalVariables G;
#endif
void GetInstalledFamilies(); void ReleaseInstalledFamilies();
class TextTest { public: virtual INT GetPageCount() = 0; virtual void GetPageTitle(INT i, WCHAR *title) = 0; virtual void DrawPage( IN Graphics *graphics, IN INT pageNumber, IN REAL pageWidth, IN REAL pageHeight ) = 0; };
class FormatTest: public TextTest { public: virtual INT GetPageCount(); virtual void GetPageTitle(INT i, WCHAR *title); virtual void DrawPage( IN Graphics *graphics, IN INT pageNumber, IN REAL pageWidth, IN REAL pageHeight ); };
class BrushTest: public TextTest { public: virtual INT GetPageCount(); virtual void GetPageTitle(INT i, WCHAR *title); virtual void DrawPage( IN Graphics *graphics, IN INT pageNumber, IN REAL pageWidth, IN REAL pageHeight ); };
class FamilyTest: public TextTest { public: virtual INT GetPageCount(); virtual void GetPageTitle(INT i, WCHAR *title); virtual void DrawPage( IN Graphics *graphics, IN INT pageNumber, IN REAL pageWidth, IN REAL pageHeight ); };
HWND CreateTextWindow(); void DrawFormatPage( IN Graphics *graphics, IN INT pageNumber, IN REAL pageWidth, IN REAL pageHeight );
///// PageLayout - All the page coordinate calculations in one place
//
// The PageLayout constructor takes page dimensions and required
// layout.
//
// Pagelayout functions return item and title rectangles.
class PageLayout { public: PageLayout( IN REAL pageWidth, IN REAL pageHeight, IN INT columnCount = 8, IN INT rowCount = 12, IN REAL pageMargin = -1, IN REAL gutter = -1, IN REAL columnTitle = -1, IN REAL rowTitle = -1, IN REAL footer = -1 ) : PageWidth (pageWidth), PageHeight (pageHeight), ColumnCount (columnCount), RowCount (rowCount), PageMargin (pageMargin), Gutter (gutter), ColumnTitle (columnTitle), RowTitle (rowTitle), Footer (footer) { if (pageMargin < 0) PageMargin = REAL(PageWidth / 32); if (gutter < 0) Gutter = REAL(PageWidth / 128); if (columnTitle < 0) ColumnTitle= REAL(PageHeight / 20); if (rowTitle < 0) RowTitle = REAL(PageWidth / 20); if (footer < 0) Footer = REAL(PageHeight / 20); }
void GetItemSize(SizeF *item) { item->Width = ((PageWidth - (RowTitle + 2*PageMargin + ColumnCount*Gutter)) / ColumnCount); item->Height = ((PageHeight - (ColumnTitle+Footer + 2*PageMargin + RowCount*Gutter)) / RowCount); }
void GetItemRect( IN INT column, IN INT row, OUT RectF *item ) { SizeF itemSize; GetItemSize(&itemSize);
item->X = PageMargin + RowTitle + Gutter + column * (itemSize.Width + Gutter); item->Y = PageMargin + ColumnTitle + Gutter + row * (itemSize.Height + Gutter); item->Width = itemSize.Width; item->Height = itemSize.Height; }
void GetItemGutterRect( IN INT column, IN INT row, OUT RectF *gutterRect ) { RectF item; GetItemRect(column, row, &item);
gutterRect->X = item.X - Gutter; gutterRect->Y = item.Y - Gutter; gutterRect->Width = item.Width + 2*Gutter; gutterRect->Height = item.Height + 2*Gutter; }
void GetColumnTitleRect( IN INT column, OUT RectF *title ) { RectF item; GetItemRect(column, 0, &item);
title->X = item.X; title->Y = PageMargin; title->Width = item.Width; title->Height = ColumnTitle; }
void GetRowTitleRect( IN INT row, OUT RectF *title ) { RectF item; GetItemRect(0, row, &item);
title->X = PageMargin; title->Y = item.Y; title->Width = RowTitle; title->Height = item.Height; }
void GetFooterRect( OUT RectF *footer ) { footer->X = PageMargin; footer->Y = PageHeight - (PageMargin + Footer); footer->Width = PageWidth - 2 * PageMargin; footer->Height = Footer; }
private: REAL PageWidth; REAL PageHeight; INT ColumnCount; INT RowCount; REAL PageMargin; REAL Gutter; REAL ColumnTitle; REAL RowTitle; REAL Footer; REAL ItemWidth; REAL ItemHeight; };
|