Annotation of mstools/samples/gridfont/canvas.hxx, revision 1.1.1.1

1.1       root        1: #ifndef __CANVAS_HXX_
                      2: #define __CANVAS_HXX_
                      3: 
                      4: //--------------------------------------------------------------------
                      5: // File: Canvas.hxx
                      6: //
                      7: // Classes:
                      8: //      CPoint - POINT with vector operations 
                      9: //      CCanvas - Base class for Device contexts
                     10: //      CScreenCanvas - Device context for client area or display
                     11: //      CPaintCanvas  - Device context for WM_PAINT message handling
                     12: //
                     13: // History: 22-Jan-1993 Asmusf  Created
                     14: //
                     15: // Copyright (c) 1993 Microsoft Corp. All Rights reserved
                     16: //
                     17: //--------------------------------------------------------------------
                     18: 
                     19: //========= CPoint ==========================================
                     20: 
                     21: class CPoint: public tagPOINT
                     22: {
                     23: public:
                     24:         CPoint()                    {x=0; y=0;  };
                     25:         CPoint(COORD X, COORD Y) {x = X; y = Y;     };
                     26:         CPoint(POINT pt)     {x = pt.x; y=pt.y; };
                     27: 
                     28:         CPoint operator +(CPoint &pt){ return CPoint(x+pt.x, y+pt.y); };
                     29:         CPoint operator -(CPoint &pt){ return CPoint(x-pt.x, y-pt.y); };
                     30:         CPoint operator *(int c)           { return CPoint(x*c, y*c); };
                     31:         CPoint operator /(int c)           { return CPoint(x/c, y/c); };
                     32: };
                     33: 
                     34: //======== CCanvas ==========================================
                     35: // Base class: Any form of canvas
                     36: // Inline methods only for speed.
                     37: 
                     38: class CCanvas
                     39: {
                     40: public:
                     41:     CCanvas():_hdc(0) 
                     42:     {
                     43:     }
                     44: 
                     45:     operator HDC() { return _hdc; }
                     46: 
                     47:     void TextAlign( WORD aligntype )
                     48:     {
                     49:         SetTextAlign(_hdc, aligntype );
                     50:     }
                     51: 
                     52:     void Line ( COORD x1, COORD y1, COORD x2, COORD y2 )
                     53:     {
                     54:         MoveToEx ( _hdc, x1, y1, NULL );
                     55:         LineTo   ( _hdc, x2, y2 );
                     56:     }
                     57: 
                     58:     void Clear ( RECT& rect )
                     59:     {
                     60:         // Trick: fast erase with Extended Text Out     
                     61:         ExtTextOut (_hdc, rect.left, rect.top, ETO_OPAQUE, &rect, TEXT(""), 0, NULL );
                     62:     }
                     63: 
                     64:     void Text ( int x, int y, LPTSTR buf, int cBuf )
                     65:     {
                     66:         TextOut ( _hdc, x, y, buf, cBuf );
                     67:     }
                     68: 
                     69:     void Char ( int x, int y, TCHAR ch )
                     70:     {
                     71:         TextOut ( _hdc, x, y,(LPTSTR) &ch, 1 );
                     72:     }
                     73: 
                     74:     void Scale(UINT iScale)
                     75:     {
                     76:         // Logical TWIPS
                     77:         SetMapMode (_hdc, MM_ANISOTROPIC);
                     78: 
                     79:         SetWindowExtEx (_hdc, MulDiv(INCH1,iScale,100), MulDiv(INCH1,iScale,100), NULL);
                     80:         SetViewportExtEx (_hdc, GetDeviceCaps (_hdc, LOGPIXELSX),
                     81:                 GetDeviceCaps (_hdc, LOGPIXELSY), NULL);
                     82:     }
                     83:     
                     84:     void Scroll(int dx, int dy)
                     85:     {
                     86:         SetWindowOrgEx(_hdc, dx, dy, NULL );
                     87:     }
                     88: 
                     89:     void DPtoLP( LPPOINT lppt )
                     90:     {
                     91:         ::DPtoLP(_hdc, lppt, 1);
                     92:     };
                     93: 
                     94:     void LPtoDP( LPPOINT lppt )
                     95:     {
                     96:         ::LPtoDP(_hdc, lppt, 1);
                     97:     };
                     98: 
                     99: protected:
                    100:     void Init ( HDC hdc ) 
                    101:     { 
                    102:         _hdc = hdc;
                    103:         TextAlign(TA_CENTER | TA_BASELINE );
                    104:     };
                    105: 
                    106:     HDC  _hdc;
                    107: };
                    108: 
                    109: //======== CScreenCanvas ====================================
                    110: // Device Context
                    111: // Use for painting on client area other than WM_PAINT
                    112: 
                    113: class CScreenCanvas: public CCanvas
                    114: {
                    115: public:
                    116:     CScreenCanvas ( HWND hwnd ): _hwnd(hwnd)
                    117:     {
                    118:         Init (GetDC ( hwnd ));
                    119:     }
                    120: 
                    121:     ~CScreenCanvas ()
                    122:     {
                    123:         ReleaseDC ( _hwnd, _hdc );
                    124:     }
                    125: 
                    126: protected:
                    127: 
                    128:     HWND _hwnd;
                    129: };
                    130: 
                    131: //======== CPaintCanvas =====================================
                    132: // Use for painting after WM_PAINT
                    133: 
                    134: class CPaintCanvas: public CCanvas
                    135: {
                    136: public:
                    137:     CPaintCanvas ( HWND hwnd ): _hwnd(hwnd)
                    138:     {
                    139:         BeginPaint ( _hwnd, &_paint );
                    140:         Init ( _paint.hdc );
                    141:     }
                    142: 
                    143:     ~CPaintCanvas ()
                    144:     {
                    145:         EndPaint(_hwnd, &_paint );
                    146:     }
                    147: 
                    148:     RECT GetRect() { return _paint.rcPaint; };
                    149: protected:
                    150: 
                    151:     PAINTSTRUCT _paint;
                    152:     HWND        _hwnd;
                    153: };
                    154: 
                    155: #endif
                    156: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.