canvas.h
上传用户:hzhsqp
上传日期:2007-01-06
资源大小:1600k
文件大小:5k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * canvas.h
  3.  *
  4.  * Canvas ancestor class.
  5.  *
  6.  * Portable Windows Library
  7.  *
  8.  * Copyright (c) 1993-1998 Equivalence Pty. Ltd.
  9.  *
  10.  * The contents of this file are subject to the Mozilla Public License
  11.  * Version 1.0 (the "License"); you may not use this file except in
  12.  * compliance with the License. You may obtain a copy of the License at
  13.  * http://www.mozilla.org/MPL/
  14.  *
  15.  * Software distributed under the License is distributed on an "AS IS"
  16.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  17.  * the License for the specific language governing rights and limitations
  18.  * under the License.
  19.  *
  20.  * The Original Code is Portable Windows Library.
  21.  *
  22.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  23.  *
  24.  * Portions are Copyright (C) 1993 Free Software Foundation, Inc.
  25.  * All Rights Reserved.
  26.  *
  27.  * Contributor(s): ______________________________________.
  28.  *
  29.  * $Log: canvas.h,v $
  30.  * Revision 1.9  1998/11/30 02:59:49  robertj
  31.  * New directory structure
  32.  *
  33.  * Revision 1.8  1998/09/24 03:39:32  robertj
  34.  * Added open software license.
  35.  *
  36.  * Revision 1.7  1996/08/08 10:09:27  robertj
  37.  * Directory structure changes for common files.
  38.  *
  39.  * Revision 1.6  1995/01/27 11:20:37  robertj
  40.  * Underscored library variables.
  41.  * "Commonised" DrawRect function.
  42.  * Fixed bugs in drawing filled shapes.
  43.  *
  44.  * Revision 1.5  1995/01/21  05:18:02  robertj
  45.  * Removed redundent function.
  46.  *
  47.  * Revision 1.4  1994/10/30  11:37:58  robertj
  48.  * Improved DC creation in RedrawCanvas.
  49.  *
  50.  * Revision 1.3  1994/10/23  05:44:45  robertj
  51.  * Fixed DrawRect semantics so pen and fill modes are independent.
  52.  *
  53.  * Revision 1.2  1994/08/21  23:43:02  robertj
  54.  * Added MakeFont() function to resolve font bootstrap on canvas creation.
  55.  *
  56.  * Revision 1.1  1994/04/12  08:21:52  robertj
  57.  * Initial revision
  58.  *
  59.  */
  60. #ifndef _PCANVAS
  61. ///////////////////////////////////////////////////////////////////////////////
  62. // PCanvas
  63. #include "../../canvas.h"
  64.   public:
  65.     // Overrides from class PCanvasState
  66.     virtual BOOL SetPenStyle(PenStyles style);
  67.       // Set the pen style to be used by future drawing operations.
  68.     virtual BOOL SetPenWidth(int width);
  69.       // Set the pen width to be used by future drawing operations.
  70.     virtual BOOL SetPenFgColour(const PColour & colour);
  71.       // Set the pen foreground colour to be used by future drawing operations.
  72.     virtual BOOL SetFillPattern(const PPattern & pattern);
  73.       // Set the fill pattern to be used by future drawing operations.
  74.     virtual BOOL SetPatternOrigin(const PPoint & pt);
  75.       // Set the fill pattern to be used by future drawing operations.
  76.     virtual BOOL SetFillFgColour(const PColour & colour);
  77.       // Set the fill foreground colour to be used by future drawing operations.
  78.     virtual BOOL SetFont(const PFont & newFont);
  79.       // Set the font drawing tool to be used by future drawing operations.
  80.     virtual BOOL SetPolyFillMode(PolyFillMode newMode);
  81.       // Set the polygon fill mode to be used by future drawing operations.
  82.     virtual BOOL SetPalette(const PPalette & newPal);
  83.       // Set the palette drawing tool to be used by future drawing operations.
  84.     virtual BOOL SetMappingRect(const PRect & rect);
  85.       // Set the source rectangle to be used in the coordinate transform in
  86.       // future drawing operations. This is a rectangle in the world
  87.       // coordinates of the application.
  88.     virtual BOOL SetViewportRect(const PRect & rect);
  89.       // Set the destination rectangle to be used in the coordinate transform
  90.       // in future drawing operations. This is a rectangle in the device
  91.       // coordinates (pixels) of the screen, printer etc
  92.     // New functions for class
  93.     virtual HDC GetHDC() const;
  94.       // Return the MS-Windows GDI Device Context.
  95.     void SetHDC(HDC newDC);
  96.       // Function to associate the MS-Windows GDI Device Context to the canvas
  97.       // object.
  98.     BOOL NullHDC() const;
  99.       // Return TRUE if the hDC is NULL, ie not used by any OnRedraw().
  100.   protected:
  101.     void MakePen();
  102.       // Make a MS-Windows GDI pen for the canvas
  103.     void MakeBrush();
  104.       // Make a MS-Windows GDI brush for the canvas
  105.     void MakeFont();
  106.       // Make a MS-Windows GDI font for the canvas
  107.     void SetTransform();
  108.       // Set the coordinate transforms.
  109.     HGDIOBJ SetUpDrawModes(DrawingModes mode,
  110.                            const PColour & fg, const PColour & bg,
  111.                            HGDIOBJ restoreObj, int saveObj);
  112.       // Set the MS-Windows GDI ROP mode, background colour & background mode.
  113.     LPPOINT MakePOINTArray(const PPointArray & ptArray);
  114.     LPPOINT MakePOINTArray(const PPoint * ptArray, PINDEX numPts);
  115.       // Make an array of POINTs from parameter. Array must be deleted.
  116.     void DrawPolyLine(LPPOINT ptArray, PINDEX numPts);
  117.       // Draw a series of lines represented by the array of points.
  118.     virtual void DrawPolygon(LPPOINT ptArray, PINDEX numPts);
  119.       // Draw a closed polygon represented by the array of points.
  120.     // Member variables
  121.     HDC _hDC;
  122.       // The MS-Windows GDI Device Context creates internal to the canvas.
  123.     HPEN _hPen;
  124.       // The MS-Windows GDI pen object
  125.     HBRUSH _hBrush;
  126.       // The MS-Windows GDI brush object
  127.     HFONT _hFont;
  128.       // The MS-Windows GDI font object
  129. };
  130. #endif