1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
//WinSpec.h, Copyright (c) 2000-2008 R.Lackner
//
// This file is part of RLPlot.
//
// RLPlot is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// RLPlot is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with RLPlot; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
class BitMapWin:public anyOutput{
public:
HBITMAP scr;
GraphObj *go;
HDC memDC;
HPEN hPen, oldPen;
HBRUSH hBrush, oldBrush;
HFONT hFont;
HatchOut *hgo;
RECT tr_rec; //rectangle for transparency
anyOutput *tr_out; //transparency source class
BitMapWin(GraphObj *g, HWND hw);
BitMapWin(int w, int h, double hr, double vr);
BitMapWin(GraphObj *g);
~BitMapWin();
bool SetLine(LineDEF *lDef);
bool SetFill(FillDEF *fill);
bool SetTextSpec(TextDEF *set);
virtual bool Erase(DWORD Color);
virtual bool StartPage() {return true;};
bool CopyBitmap(int x, int y, anyOutput* src, int sx, int sy,
int sw, int sh, bool invert);
bool oGetTextExtent(char *text, int cb, int *width, int *height);
bool oGetTextExtentW(w_char *text, int cb, int *width, int *height);
bool oGetPix(int x, int y, DWORD *col);
bool oDrawIcon(int type, int x, int y);
bool oCircle(int x1, int y1, int x2, int y2, char* nam = 0L);
bool oPolyline(POINT * pts, int cp, char *nam = 0L);
bool oRectangle(int x1, int y1, int x2, int y2, char* nam = 0L);
bool oSolidLine(POINT *p);
bool oTextOut(int x, int y, char *txt, int cb);
bool oTextOutW(int x, int y, w_char *txt, int cb);
bool oPolygon(POINT *pts, int cp, char *nam = 0L);
void DoTransparency(DWORD color);
};
class OutputWin:public BitMapWin{
public:
HWND hWnd;
HDC hdc;
OutputWin(GraphObj *g, HWND hw);
~OutputWin();
bool ActualSize(RECT *rc);
void Focus(){if(hWnd) SetFocus(hWnd);};
void Caption(char *txt, bool bModified);
void MouseCursor(int cid, bool force);
bool SetScroll(bool isVert, int iMin, int iMax, int iPSize, int iPos);
bool Erase(DWORD Color);
bool StartPage();
bool EndPage();
bool UpdateRect(RECT *rc, bool invert);
bool UpdateRect(HDC hdc, RECT rc);
void ShowBitmap(int x, int y, anyOutput* src);
void ShowLine(POINT * pts, int cp, DWORD color);
void ShowEllipse(POINT p1, POINT p2, DWORD color);
bool SetMenu(int type);
void CheckMenu(int mid, bool check);
void FileHistory();
private:
void CreateNewWindow(void *g);
};
class WinCopyWMF:public anyOutput {
public:
WinCopyWMF(GraphObj *g, char* file_wmf, char *file_emf);
~WinCopyWMF();
bool SetLine(LineDEF *lDef);
bool SetFill(FillDEF *fill);
bool SetTextSpec(TextDEF *set);
bool oGetTextExtent(char *text, int cb, int *width, int *height);
bool oGetTextExtentW(w_char *text, int cb, int *width, int *height);
bool StartPage();
bool EndPage();
bool oCircle(int x1, int y1, int x2, int y2, char* nam = 0L);
bool oPolyline(POINT * pts, int cp, char *nam = 0L);
bool oRectangle(int x1, int y1, int x2, int y2, char *nam = 0L);
bool oSolidLine(POINT *p);
bool oTextOut(int x, int y, char *txt, int cb);
bool oTextOutW(int x, int y, w_char *txt, int cb);
bool oPolygon(POINT *pts, int cp, char *nam = 0L);
private:
int bott_y;
GraphObj *go;
HDC hdc;
HPEN hPen;
HBRUSH hBrush;
HFONT hFont;
HatchOut *hgo;
char *wmf_file, *emf_file;
};
class PrintWin:public anyOutput{
public:
PrintWin();
~PrintWin();
bool SetLine(LineDEF *lDef);
bool SetFill(FillDEF *fill);
bool SetTextSpec(TextDEF *set);
bool oGetTextExtent(char *text, int cb, int *width, int *height);
bool oGetTextExtentW(w_char *text, int cb, int *width, int *height);
bool StartPage();
bool EndPage();
bool CopyBitmap(int x, int y, anyOutput* src, int sx, int sy,
int sw, int sh, bool invert);
bool Eject();
bool oCircle(int x1, int y1, int x2, int y2, char* nam = 0L);
bool oPolyline(POINT * pts, int cp, char *nam = 0L);
bool oRectangle(int x1, int y1, int x2, int y2, char *nam = 0L);
bool oSolidLine(POINT *p);
bool oTextOut(int x, int y, char *txt, int cb);
bool oTextOutW(int x, int y, w_char *txt, int cb);
bool oPolygon(POINT *pts, int cp, char *nam = 0L);
private:
HPEN hPen;
HBRUSH hBrush;
HFONT hFont;
HatchOut *hgo;
char *PrintDevice, *PrintDriver, *PrintPort;
HDC hDC;
};
|