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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * graphics.inl
  3.  *
  4.  * Graphics classes inline functions.
  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: graphics.inl,v $
  30.  * Revision 1.22  1999/08/24 06:54:36  robertj
  31.  * Cleaned up the smart pointer code (macros).
  32.  *
  33.  * Revision 1.21  1998/12/12 00:42:57  robertj
  34.  * Added functions for user request on printing selection only.
  35.  * Fixed transfer of start and end pages from PPrintDialog.
  36.  *
  37.  * Revision 1.20  1998/09/23 06:23:41  robertj
  38.  * Added open source copyright license.
  39.  *
  40.  * Revision 1.19  1998/03/20 03:14:38  robertj
  41.  * Added function to get physical bounds of canvas. Allows to scale drawing.
  42.  *
  43.  * Revision 1.18  1995/10/14 14:55:40  robertj
  44.  * Changed return values to references for efficency.
  45.  *
  46.  * Revision 1.17  1995/01/27 11:09:25  robertj
  47.  * "Commonised" DrawRect function.
  48.  * Added pattern origin.
  49.  * Added FillRect function.
  50.  *
  51.  * Revision 1.16  1995/01/21  05:13:54  robertj
  52.  * Added origin changing function, simpler than setting rectangles.
  53.  * Fixed rounding error for negative numbers in coordinate system conversions.
  54.  *
  55.  * Revision 1.15  1995/01/09  12:40:07  robertj
  56.  * Rename of smart pointer macro.
  57.  *
  58.  * Revision 1.14  1995/01/06  10:43:47  robertj
  59.  * Changed PRealFont usage from pointer to reference.
  60.  *
  61.  * Revision 1.13  1994/12/21  11:58:20  robertj
  62.  * Documentation and variable normalisation.
  63.  *
  64.  * Revision 1.12  1994/12/12  10:13:01  robertj
  65.  * Renamed PWrapper to PSmartPointer.
  66.  * Added depth to PPixelBase and removed virtual function.
  67.  *
  68.  * Revision 1.11  1994/12/05  11:34:07  robertj
  69.  * Major rewrite of images, pictures and pixmaps.
  70.  * Renamed PPict, PPixels and PImage to make sure all uses are found.
  71.  *
  72.  * Revision 1.10  1994/10/23  04:43:17  robertj
  73.  * PPixels split into subclasses for each pixel size.
  74.  *
  75.  * Revision 1.9  1994/07/27  05:58:07  robertj
  76.  * Synchronisation.
  77.  *
  78.  * Revision 1.8  1994/07/25  03:30:41  robertj
  79.  * Fixed comment leader.
  80.  *
  81.  * Revision 1.7  1994/06/25  11:55:15  robertj
  82.  * Unix version synchronisation.
  83.  *
  84.  * Revision 1.6  1994/04/20  12:17:44  robertj
  85.  * assert stuff
  86.  *
  87.  * Revision 1.5  1994/03/07  07:45:40  robertj
  88.  * Major upgrade
  89.  *
  90.  * Revision 1.4  1994/01/03  04:42:23  robertj
  91.  * Mass changes to common container classes and interactors etc etc etc.
  92.  *
  93.  * Revision 1.3  1993/12/31  06:47:59  robertj
  94.  * Made inlines optional for debugging purposes.
  95.  *
  96.  * Revision 1.2  1993/12/24  04:20:52  robertj
  97.  * Mac CFront port.
  98.  *
  99.  * Revision 1.1  1993/12/04  05:24:25  robertj
  100.  * Initial revision
  101.  */
  102. ///////////////////////////////////////////////////////////////////////////////
  103. // PImage
  104. PINLINE PImage::PImage(PImageBase * obj)
  105.   : PSmartPointer(obj) { }
  106. ///////////////////////////////////////////////////////////////////////////////
  107. // PPixels
  108. PINLINE PPixelImage::PPixelImage(PPixelBase * obj)
  109.   : PImage(obj) { }
  110. PINLINE PPixelDataPtr PPixelBase::GetPixelDataPtr() const
  111.   { return pixels; }
  112. PINLINE BOOL PPixelBase::IsFullColour() const
  113.   { return GetDepth() >= 24; }
  114. PINLINE void PPixelBase::SetRaster(PORDINATE y,
  115.                                 const PColourArray & raster, PDIMENSION width)
  116.   { SetRaster(0, y, raster, width); }
  117.   
  118. PINLINE void PPixelBase::SetRaster(PORDINATE x, PORDINATE y,
  119.                                 const PColourArray & raster, PDIMENSION width)
  120.   { SetRasterColours(x, y, raster, width); }
  121.   
  122. PINLINE void PPixelBase::SetRaster(PORDINATE y,
  123.                                   const PBYTEArray & raster, PDIMENSION width)
  124.   { SetRaster(0, y, raster, width); }
  125.   
  126. PINLINE void PPixelBase::SetRaster(PORDINATE y,
  127.                                         const BYTE * raster, PDIMENSION width)
  128.   { SetRaster(0, y, raster, width); }
  129.   
  130. PINLINE void PPixelBase::SetRaster(PORDINATE x, PORDINATE y,
  131.                                         const BYTE * raster, PDIMENSION width)
  132.   { SetRasterValues(x, y, raster, width); }
  133.   
  134. PINLINE void PPixelBase::GetRaster(PORDINATE y,
  135.                                 PColourArray & raster, PDIMENSION width) const
  136.   { GetRaster(0, y, raster, width); }
  137.   
  138. PINLINE void PPixelBase::GetRaster(PORDINATE x, PORDINATE y,
  139.                                 PColourArray & raster, PDIMENSION width) const
  140.   { GetRasterColours(x, y, raster, width); }
  141.   
  142. PINLINE void PPixelBase::GetRaster(PORDINATE y,
  143.                                   PBYTEArray & raster, PDIMENSION width) const
  144.   { GetRaster(0, y, raster, width); }
  145. PINLINE void PPixelBase::GetRaster(PORDINATE y,
  146.                                         BYTE * raster, PDIMENSION width) const
  147.   { GetRaster(0, y, raster, width); }
  148.   
  149. PINLINE void PPixelBase::GetRaster(PORDINATE x, PORDINATE y,
  150.                                         BYTE * raster, PDIMENSION width) const
  151.   { GetRasterValues(x, y, raster, width); }
  152. PINLINE PPixelImage PPixelBase::ExtractPixels(const PRect & rect) const
  153.   { return ExtractPixels(rect.X(), rect.Y(), rect.Width(), rect.Height()); }
  154.   
  155. PINLINE const PRect & PPixelBase::GetDirtyArea() const
  156.   { return dirtyArea; }
  157. PINLINE void PPixelBase::ClearDirtyArea()
  158.   { dirtyArea = PRect(); }
  159. PINLINE PPixels1::PPixels1(PDIMENSION dx, PDIMENSION dy)
  160.   : PPixelBase(dx, dy, 1) { }
  161. PINLINE PPixels2::PPixels2(PDIMENSION dx, PDIMENSION dy)
  162.   : PPixelBase(dx, dy, 2) { }
  163. PINLINE PPixels4::PPixels4(PDIMENSION dx, PDIMENSION dy)
  164.   : PPixelBase(dx, dy, 4) { }
  165. PINLINE PPixels8::PPixels8(PDIMENSION dx, PDIMENSION dy)
  166.   : PPixelBase(dx, dy, 8) { }
  167. PINLINE PPixels24::PPixels24(PDIMENSION dx, PDIMENSION dy)
  168.   : PPixelBase(dx, dy, 24) { }
  169. PINLINE PPixels32::PPixels32(PDIMENSION dx, PDIMENSION dy)
  170.   : PPixelBase(dx, dy, 32) { }
  171. ///////////////////////////////////////////////////////////////////////////////
  172. // PPictImage
  173. PINLINE PPictImage::PPictImage(PPictBase * obj)
  174. : PImage(obj == NULL ? PNEW PPictBase : obj) { }
  175. PINLINE PPictImage::PPictImage(PRESOURCE_ID resID)
  176.   : PImage(PNEW PPictBase(resID)) { }
  177.       
  178. PINLINE PPictImage::PPictImage(PFile & dwg)
  179.   : PImage(PNEW PPictBase(dwg)) { }
  180. //////////////////////////////////////////////////////////////////////////////
  181. // PCanvasState
  182. #if defined(_PCANVASSTATE)
  183. PINLINE PCanvasState::PenStyles PCanvasState::GetPenStyle() const
  184.   { return penStyle; }
  185. PINLINE int PCanvasState::GetPenWidth() const
  186.   { return penWidth; }
  187. PINLINE PCanvasState::DrawingModes PCanvasState::GetPenMode() const
  188.   { return penMode; }
  189. PINLINE const PColour & PCanvasState::GetPenFgColour() const
  190.   { return penFgColour; }
  191. PINLINE const PColour & PCanvasState::GetPenBkColour() const
  192.   { return penBkColour; }
  193. PINLINE PPattern PCanvasState::GetFillPattern() const
  194.   { return fillPattern; }
  195. PINLINE PPoint PCanvasState::GetPatternOrigin() const
  196.   { return patternOrigin; }
  197. PINLINE PCanvasState::DrawingModes PCanvasState::GetFillMode() const
  198.   { return fillMode; }
  199. PINLINE const PColour & PCanvasState::GetFillFgColour() const
  200.   { return fillFgColour; }
  201. PINLINE const PColour & PCanvasState::GetFillBkColour() const
  202.   { return fillBkColour; }
  203.   
  204. PINLINE PFont PCanvasState::GetFont() const
  205.   { return font; }
  206. PINLINE const PColour & PCanvasState::GetTextFgColour() const
  207.   { return textFgColour; }
  208. PINLINE const PColour & PCanvasState::GetTextBkColour() const
  209.   { return textBkColour; }
  210.   
  211. PINLINE PPalette PCanvasState::GetPalette() const
  212.   { return palette; }
  213. PINLINE PCanvasState::PolyFillMode PCanvasState::GetPolyFillMode() const
  214.   { return polyFillMode; }
  215. PINLINE PRect PCanvasState::GetViewportRect() const
  216.   { return viewport; }
  217. PINLINE PRect PCanvasState::GetMappingRect() const
  218.   { return map; }
  219. PINLINE PPoint PCanvasState::GetOrigin() const
  220.   { return map.Origin(); }
  221. #endif
  222. //////////////////////////////////////////////////////////////////////////////
  223. // PCanvas
  224. #if defined(_PCANVAS)
  225. PINLINE void PCanvas::Save()
  226.   { stack.Push(PNEW State(*this)); }
  227. PINLINE const PRealFont & PCanvas::GetFont() const
  228.   { return realFont; }
  229. PINLINE void PCanvas::SetCurrentPosition(const PPoint & pos)
  230.   { SetCurrentPosition(pos.X(), pos.Y()); }
  231. PINLINE void PCanvas::MoveCurrentPosition(const PPoint & pos)
  232.   { MoveCurrentPosition(pos.X(), pos.Y()); }
  233. PINLINE void PCanvas::DrawLine(const PPoint & pt) 
  234.   { DrawLine(pt.X(), pt.Y()); }
  235. PINLINE void PCanvas::DrawLineRelative(const PPoint & pt)
  236.   { DrawLineRelative(pt.X(), pt.Y()); }
  237. PINLINE void PCanvas::DrawLine(const PPoint & p1, const PPoint & p2) 
  238.   { DrawLine(p1.X(), p1.Y(), p2.X(), p2.Y()); }
  239. PINLINE void PCanvas::DrawRect(PORDINATE x,
  240.                                      PORDINATE y, PDIMENSION dx, PDIMENSION dy)
  241.   { _DrawRect(x, y, dx, dy); }
  242. PINLINE void PCanvas::DrawRect(const PPoint & topLeft, const PPoint & botRight)
  243.   { DrawRect(PRect(topLeft, botRight)); }
  244. PINLINE void PCanvas::DrawRect(const PPoint & pt, const PDim & dim)
  245.   { _DrawRect(pt.X(), pt.Y(), dim.Width(), dim.Height()); }
  246. PINLINE void PCanvas::DrawRect(const PRect & rect)
  247.   { _DrawRect(rect.X(), rect.Y(), rect.Width(), rect.Height()); }
  248. PINLINE void PCanvas::FillRect(PORDINATE x,
  249.                                      PORDINATE y, PDIMENSION dx, PDIMENSION dy)
  250.   { _FillRect(x, y, dx, dy); }
  251. PINLINE void PCanvas::FillRect(const PPoint & topLeft, const PPoint & botRight)
  252.   { FillRect(PRect(topLeft, botRight)); }
  253. PINLINE void PCanvas::FillRect(const PPoint & pt, const PDim & dim)
  254.   { _FillRect(pt.X(), pt.Y(), dim.Width(), dim.Height()); }
  255. PINLINE void PCanvas::FillRect(const PRect & rect)
  256.   { _FillRect(rect.X(), rect.Y(), rect.Width(), rect.Height()); }
  257. PINLINE void PCanvas::DrawImgIcon(const PPoint & pt, const PImgIcon & icn)
  258.   { DrawImgIcon(pt.X(), pt.Y(), icn); }
  259. PINLINE void PCanvas::DrawIcon(const PPoint & pt, const PIcon & icn)
  260.   { DrawIcon(pt.X(), pt.Y(), icn); }
  261. PINLINE void PCanvas::DrawPixels(const PPoint & pt, const PPixelImage & pix)
  262.   { DrawPixels(pt.X(), pt.Y(), pix); }
  263. PINLINE void PCanvas::DrawPict(const PPoint & pt, const PPictImage & pic)
  264.   { DrawPict(pt.X(), pt.Y(), pic); }
  265. PINLINE void PCanvas::DrawString(const PPoint & pt,
  266.                                               const PString & str, int options) 
  267.   { DrawString(pt.X(), pt.Y(), str, options); }
  268. PINLINE PDim PCanvas::FromPixels(const PDim & dim) const
  269.   { return PDim(FromPixelsDX(dim.Width()), FromPixelsDY(dim.Height())); }
  270. PINLINE PPoint PCanvas::FromPixels(const PPoint & p) const
  271.   { return PPoint(FromPixelsX(p.X()), FromPixelsY(p.Y())); }
  272. PINLINE PRect PCanvas::FromPixels(const PRect & r) const
  273.   { return PRect(FromPixels(r.Origin()), FromPixels(r.Corner())); }
  274. PINLINE PDim PCanvas::ToPixels(const PDim & dim) const
  275.   { return PDim(ToPixelsDX(dim.Width()), ToPixelsDY(dim.Height())); }
  276. PINLINE PPoint PCanvas::ToPixels(const PPoint & p) const
  277.   { return PPoint(ToPixelsX(p.X()), ToPixelsY(p.Y())); }
  278. PINLINE PRect PCanvas::ToPixels(const PRect & r) const
  279.   { return PRect(ToPixels(r.Origin()), ToPixels(r.Corner())); }
  280. #endif
  281. //////////////////////////////////////////////////////////////////////////////
  282. // PInteractorCanvas
  283. #ifdef _PINTERACTORCANVAS
  284. PINLINE PInteractor * PInteractorCanvas::GetInteractor() const
  285.   { return interactor; }
  286. #endif
  287. //////////////////////////////////////////////////////////////////////////////
  288. // PMemoryCanvas
  289. #ifdef _PMEMORYCANVAS
  290. PINLINE PMemoryCanvas::PMemoryCanvas(const PImage & img)
  291.   : image(img) { Construct(); }
  292. PINLINE PMemoryCanvas::~PMemoryCanvas()
  293.   { }
  294. PINLINE const PImage PMemoryCanvas::GetImage()
  295.   { return image; }
  296. #endif
  297. //////////////////////////////////////////////////////////////////////////////
  298. // PPrintCanvas
  299. #if defined(_PPRINTCANVAS)
  300. PINLINE PPrintCanvas::PPrintCanvas(const PString & job)
  301.   : jobName(job) { Construct(); }
  302. PINLINE PPrintCanvas::PPrintCanvas(const PString & job,
  303.                               const PString & printer, const PString & device)
  304.   : jobName(job), printInfo(printer, device) { Construct(); }
  305. PINLINE PPrintCanvas::PPrintCanvas(const PString &job, const PPrintInfo &info)
  306.   : jobName(job), printInfo(info) { Construct(); }
  307. PINLINE const PPrintInfo & PPrintCanvas::GetPrintInfo() const
  308.   { return printInfo; }
  309. #endif
  310. //////////////////////////////////////////////////////////////////////////////
  311. // PPrintInfo
  312. #ifdef _PPRINTINFO
  313. PINLINE PString PPrintInfo::GetPrinter() const
  314.   { return printer; }
  315. PINLINE PString PPrintInfo::GetDevice() const
  316.   { return device; }
  317. PINLINE void PPrintInfo::SetForm(Forms newForm)
  318.   { form = newForm; }
  319. PINLINE PPrintInfo::Forms PPrintInfo::GetForm() const
  320.   { return form; }
  321. PINLINE void PPrintInfo::SetPaperSize(const PDim & dim)
  322.   { paperSize = dim; }
  323. PINLINE PDim PPrintInfo::GetPaperSize() const
  324.   { return paperSize; }
  325. PINLINE PDim PPrintInfo::GetResolution() const
  326.   { return resolution; }
  327. PINLINE void PPrintInfo::SetStartPage(unsigned page)
  328.   { startPage = page; }
  329. PINLINE unsigned PPrintInfo::GetStartPage() const
  330.   { return startPage; }
  331. PINLINE void PPrintInfo::SetEndPage(unsigned page)
  332.   { endPage = page; }
  333. PINLINE unsigned PPrintInfo::GetEndPage() const
  334.   { return endPage; }
  335. PINLINE void PPrintInfo::SetSelectionOnly(SelectionOnly selOnly)
  336.   { selectionOnly = selOnly; }
  337. PINLINE PPrintInfo::SelectionOnly PPrintInfo::GetSelectionOnly() const
  338.   { return selectionOnly; }
  339. PINLINE BOOL PPrintInfo::IsSelectionOnly() const
  340.   { return selectionOnly == SelectionOnlyOn; }
  341. PINLINE void PPrintInfo::SetCopies(unsigned count)
  342.   { copies = count; }
  343. PINLINE unsigned PPrintInfo::GetCopies() const
  344.   { return copies; }
  345. PINLINE void PPrintInfo::SetPortrait(BOOL port)
  346.   { orientation = port; }
  347. PINLINE void PPrintInfo::SetLandscape()
  348.   { SetPortrait(FALSE); }
  349. PINLINE BOOL PPrintInfo::IsPortrait() const
  350.   { return orientation; }
  351. PINLINE BOOL PPrintInfo::IsDraftQuality() const
  352.   { return draftQuality; }
  353. #endif
  354. // End Of File ///////////////////////////////////////////////////////////////