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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * shapes.inl
  3.  *
  4.  * Geometric shapes 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: shapes.inl,v $
  30.  * Revision 1.6  1998/09/23 06:29:01  robertj
  31.  * Added open source copyright license.
  32.  *
  33.  * Revision 1.5  1997/04/27 05:50:19  robertj
  34.  * DLL support.
  35.  *
  36.  * Revision 1.4  1995/01/21 05:22:34  robertj
  37.  * Documentation.
  38.  *
  39.  * Revision 1.3  1994/10/23  04:56:32  robertj
  40.  * Changed PImage descendents to be pointers for polymorphism.
  41.  *
  42.  * Revision 1.2  1994/07/27  05:58:07  robertj
  43.  * Synchronisation.
  44.  *
  45.  * Revision 1.1  1994/04/20  12:17:44  robertj
  46.  * Initial revision
  47.  *
  48.  */
  49. //////////////////////////////////////////////////////////////////////////////
  50. // PShape
  51. PINLINE PShape::PShape(PORDINATE x, PORDINATE y)
  52.   : position(x, y) { }
  53. PINLINE PShape::PShape(const PPoint & pt)
  54.   : position(pt) { }
  55. PINLINE void PShape::SetPosition(PORDINATE x, PORDINATE y)
  56.   { _SetPosition(PPoint(x, y)); }
  57. PINLINE void PShape::SetPosition(const PPoint & pt)
  58.   { _SetPosition(pt); }
  59. PINLINE PPoint PShape::GetPosition() const
  60.   { return position; }
  61. PINLINE void PShape::Offset(PORDINATE x, PORDINATE y)
  62.   { Offset(PPoint(x, y)); }
  63. PINLINE void PShape::Offset(const PPoint & pt)
  64.   { SetPosition(GetPosition() + pt); }
  65. PINLINE void PShape::SetDimensions(PDIMENSION width, PDIMENSION height)
  66.   { _SetDimensions(PDim(width, height)); }
  67. PINLINE void PShape::SetDimensions(const PDim & dim)
  68.   { _SetDimensions(dim); }
  69. PINLINE void PShape::Grow(PORDINATE x, PORDINATE y)
  70.   { Grow(PPoint(x, y)); }
  71. PINLINE void PShape::Grow(const PPoint & pt)
  72.   { SetDimensions(GetDimensions() + pt); }
  73.   
  74. PINLINE PRect PShape::GetBounds() const
  75.   { return PRect(GetPosition(), GetDimensions()); }
  76. //////////////////////////////////////////////////////////////////////////////
  77. // PLine
  78. PINLINE PLine::PLine(PORDINATE x1, PORDINATE y1, PORDINATE x2, PORDINATE y2)
  79.   : PShape(x1, y1), otherEnd(x2, y2) { }
  80. PINLINE PLine::PLine(const PPoint & pt1, const PPoint & pt2)
  81.   : PShape(pt1), otherEnd(pt2) { }
  82. //////////////////////////////////////////////////////////////////////////////
  83. // POrthoShape
  84. PINLINE POrthoShape::POrthoShape(PORDINATE x, PORDINATE y,
  85.                                                  PDIMENSION dx, PDIMENSION dy)
  86.   : PShape(x, y), dimensions(dx, dy) { }
  87. PINLINE POrthoShape::POrthoShape(const PPoint & topLeft, const PDim & dim)
  88.   : PShape(topLeft), dimensions(dim) { }
  89. PINLINE POrthoShape::POrthoShape(const PRect & rect)
  90.   : PShape(rect.Origin()), dimensions(rect.Dimensions()) { }
  91. //////////////////////////////////////////////////////////////////////////////
  92. // PRectangle
  93. PINLINE PRectangle::PRectangle(PORDINATE x, PORDINATE y,
  94.                                                  PDIMENSION dx, PDIMENSION dy)
  95.   : POrthoShape(x, y, dx, dy) { }
  96. PINLINE PRectangle::PRectangle(const PPoint & topLeft, const PPoint & botRight)
  97.   : POrthoShape(topLeft, botRight) { }
  98. PINLINE PRectangle::PRectangle(const PPoint & topLeft, const PDim & dim)
  99.   : POrthoShape(topLeft, dim) { }
  100. PINLINE PRectangle::PRectangle(const PRect & rect)
  101.   : POrthoShape(rect) { }
  102. //////////////////////////////////////////////////////////////////////////////
  103. // PRoundedRectangle
  104. PINLINE PRoundedRectangle::PRoundedRectangle(PORDINATE x, PORDINATE y,
  105.                               PDIMENSION dx, PDIMENSION dy,
  106.                               PDIMENSION cornerWidth, PDIMENSION cornerHeight)
  107.   : PRectangle(x, y, dx, dy), corner(cornerWidth, cornerHeight) { }
  108. PINLINE PRoundedRectangle::PRoundedRectangle(const PPoint & topLeft,
  109.      const PPoint & botRight, PDIMENSION cornerWidth, PDIMENSION cornerHeight)
  110.   : PRectangle(topLeft, botRight), corner(cornerWidth, cornerHeight) { }
  111. PINLINE PRoundedRectangle::PRoundedRectangle(const PPoint & topLeft,
  112.             const PDim & dim, PDIMENSION cornerWidth, PDIMENSION cornerHeight)
  113.   : PRectangle(topLeft, dim), corner(cornerWidth, cornerHeight) { }
  114. PINLINE PRoundedRectangle::PRoundedRectangle(const PRect & rect,
  115.                               PDIMENSION cornerWidth, PDIMENSION cornerHeight)
  116.   : PRectangle(rect), corner(cornerWidth, cornerHeight) { }
  117. PINLINE void PRoundedRectangle::SetCornerWidth(PDIMENSION width)
  118.   { corner.SetWidth(width); }
  119.     
  120. PINLINE PDIMENSION PRoundedRectangle::GetCornerWidth()
  121.   { return corner.Width(); }
  122.     
  123. PINLINE void PRoundedRectangle::SetCornerHeight(PDIMENSION height)
  124.   { corner.SetHeight(height); }
  125.     
  126. PINLINE PDIMENSION PRoundedRectangle::GetCornerHeight()
  127.   { return corner.Height(); }
  128. //////////////////////////////////////////////////////////////////////////////
  129. // PEllipse
  130. PINLINE PEllipse::PEllipse(PORDINATE x, PORDINATE y,
  131.                                                   PDIMENSION dx, PDIMENSION dy)
  132.   : POrthoShape(x, y, dx, dy) { }
  133. PINLINE PEllipse::PEllipse(const PPoint & topLeft, const PPoint & botRight)
  134.   : POrthoShape(topLeft, botRight) { }
  135. PINLINE PEllipse::PEllipse(const PPoint & topLeft, const PDim & dim)
  136.   : POrthoShape(topLeft, dim) { }
  137. PINLINE PEllipse::PEllipse(const PRect & rect)
  138.   : POrthoShape(rect) { }
  139. //////////////////////////////////////////////////////////////////////////////
  140. // PArc
  141. PINLINE PArc::PArc(PORDINATE x, PORDINATE y, PDIMENSION dx, PDIMENSION dy,
  142.                                                 PORDINATE start, PORDINATE end)
  143.   : POrthoShape(x, y, dx, dy), startAngle(start), endAngle(end) { }
  144. PINLINE PArc::PArc(const PPoint & topLeft, const PPoint & botRight,
  145.                                                 PORDINATE start, PORDINATE end)
  146.   : POrthoShape(topLeft, botRight), startAngle(start), endAngle(end) { }
  147. PINLINE PArc::PArc(const PPoint & topLeft, const PDim & dim,
  148.                                                 PORDINATE start, PORDINATE end)
  149.   : POrthoShape(topLeft, dim), startAngle(start), endAngle(end) { }
  150. PINLINE PArc::PArc(const PRect & rect, PORDINATE start, PORDINATE end)
  151.   : POrthoShape(rect), startAngle(start), endAngle(end) { }
  152. PINLINE void PArc::SetStartAngle(PORDINATE start)
  153.   { startAngle = start; }
  154.     
  155. PINLINE PORDINATE PArc::GetStartAngle()
  156.   { return startAngle; }
  157.     
  158. PINLINE void PArc::SetEndAngle(PORDINATE end)
  159.   { endAngle = end; }
  160.     
  161. PINLINE PORDINATE PArc::GetEndAngle()
  162.   { return endAngle; }
  163. //////////////////////////////////////////////////////////////////////////////
  164. // PPie
  165. PINLINE PPie::PPie(PORDINATE x, PORDINATE y, PDIMENSION dx, PDIMENSION dy,
  166.                                                 PORDINATE start, PORDINATE end)
  167.   : PArc(x, y, dx, dy, start, end) { }
  168. PINLINE PPie::PPie(const PPoint & topLeft, const PPoint & botRight,
  169.                                                 PORDINATE start, PORDINATE end)
  170.   : PArc(topLeft, botRight, start, end) { }
  171. PINLINE PPie::PPie(const PPoint & topLeft, const PDim & dim,
  172.                                                 PORDINATE start, PORDINATE end)
  173.   : PArc(topLeft, dim, start, end) { }
  174. PINLINE PPie::PPie(const PRect & rect, PORDINATE start, PORDINATE end)
  175.   : PArc(rect, start, end) { }
  176. //////////////////////////////////////////////////////////////////////////////
  177. // PChord
  178. PINLINE PChord::PChord(PORDINATE x, PORDINATE y, PDIMENSION dx, PDIMENSION dy,
  179.                                                 PORDINATE start, PORDINATE end)
  180.   : PArc(x, y, dx, dy, start, end) { }
  181. PINLINE PChord::PChord(const PPoint & topLeft, const PPoint & botRight,
  182.                                                 PORDINATE start, PORDINATE end)
  183.   : PArc(topLeft, botRight, start, end) { }
  184. PINLINE PChord::PChord(const PPoint & topLeft, const PDim & dim,
  185.                                                 PORDINATE start, PORDINATE end)
  186.   : PArc(topLeft, dim, start, end) { }
  187. PINLINE PChord::PChord(const PRect & rect, PORDINATE start, PORDINATE end)
  188.   : PArc(rect, start, end) { }
  189. //////////////////////////////////////////////////////////////////////////////
  190. // PPixShape
  191. PINLINE void PPixShape::SetPixels(const PPixelImage & img)
  192.   { pixels = img; }
  193. PINLINE PPixelImage PPixShape::GetPixels() const
  194.   { return pixels; }
  195. //////////////////////////////////////////////////////////////////////////////
  196. // PPicShape
  197. PINLINE void PPicShape::SetPicture(const PPictImage & img)
  198.   { picture = img; }
  199. PINLINE PPictImage PPicShape::GetPicture() const
  200.   { return picture; }
  201. //////////////////////////////////////////////////////////////////////////////
  202. // PTextLines
  203. PINLINE PTextLines::PTextLines(PORDINATE x, PORDINATE y, const PString & str)
  204.   : PShape(x, y), text(str) { }
  205. PINLINE PTextLines::PTextLines(const PPoint & pt, const PString & str)
  206.   : PShape(pt), text(str) { }
  207. PINLINE PString PTextLines::GetText() const
  208.   { return text; }
  209. //////////////////////////////////////////////////////////////////////////////
  210. // PTextBlock
  211. PINLINE PTextBlock::PTextBlock(PORDINATE x, PORDINATE y,
  212.                                       const PString & text, PDIMENSION width)
  213.   : PTextLines(x, y, text) { dimensions.SetWidth(width); }
  214. PINLINE PTextBlock::PTextBlock(const PPoint & pt,
  215.                                         const PString & text, PDIMENSION width)
  216.   : PTextLines(pt, text) { dimensions.SetWidth(width); }
  217. //////////////////////////////////////////////////////////////////////////////
  218. // PPolyShape
  219. PINLINE PPolyShape::PPolyShape(PORDINATE x, PORDINATE y)
  220.   : PShape(x, y) { points.Append(PNEW PPoint(x, y)); }
  221. PINLINE PPolyShape::PPolyShape(const PPoint & pt)
  222.   : PShape(pt) { points.Append(PNEW PPoint(pt)); }
  223. PINLINE PPolyShape::PPolyShape(const PPointArray & pts)
  224.   : PShape(pts[0]), points(pts) { }
  225. PINLINE void PPolyShape::AddPoint(PORDINATE x, PORDINATE y)
  226.   { points.Append(PNEW PPoint(x, y)); }
  227. PINLINE void PPolyShape::AddPoint(const PPoint & pt)
  228.   { points.Append(PNEW PPoint(pt)); }
  229. PINLINE void PPolyShape::RemovePoint(PINDEX idx)
  230.   { points.RemoveAt(idx); }
  231. PINLINE PPoint & PPolyShape::operator[](PINDEX idx) const
  232.   { return points[idx]; }
  233. //////////////////////////////////////////////////////////////////////////////
  234. // PPolyLine
  235. PINLINE PPolyLine::PPolyLine(PORDINATE x, PORDINATE y)
  236.   : PPolyShape(x, y) { }
  237. PINLINE PPolyLine::PPolyLine(const PPoint & pt)
  238.   : PPolyShape(pt) { }
  239. PINLINE PPolyLine::PPolyLine(const PPointArray & pts)
  240.   : PPolyShape(pts) { }
  241. PINLINE PPolyLine::PPolyLine(const PPoint * ptArray, PINDEX numPts)
  242.   : PPolyShape(ptArray, numPts) { }
  243. //////////////////////////////////////////////////////////////////////////////
  244. // PPolygon
  245. PINLINE PPolygon::PPolygon(PORDINATE x, PORDINATE y)
  246.   : PPolyShape(x, y) { }
  247. PINLINE PPolygon::PPolygon(const PPoint & pt)
  248.   : PPolyShape(pt) { }
  249. PINLINE PPolygon::PPolygon(const PPointArray & pts)
  250.   : PPolyShape(pts) { }
  251. PINLINE PPolygon::PPolygon(const PPoint * ptArray, PINDEX numPts)
  252.   : PPolyShape(ptArray, numPts) { }
  253. //////////////////////////////////////////////////////////////////////////////
  254. // PCurve
  255. PINLINE PCurve::PCurve(PORDINATE x, PORDINATE y)
  256.   : PPolyShape(x, y) { }
  257. PINLINE PCurve::PCurve(const PPoint & pt)
  258.   : PPolyShape(pt) { }
  259. PINLINE PCurve::PCurve(const PPointArray & pts)
  260.   : PPolyShape(pts) { }
  261. PINLINE PCurve::PCurve(const PPoint * ptArray, PINDEX numPts)
  262.   : PPolyShape(ptArray, numPts) { }
  263. //////////////////////////////////////////////////////////////////////////////
  264. // PBezier
  265. PINLINE PBezier::PBezier(PORDINATE x, PORDINATE y)
  266.   : PCurve(x, y) { }
  267. PINLINE PBezier::PBezier(const PPoint & pt)
  268.   : PCurve(pt) { }
  269. PINLINE PBezier::PBezier(const PPointArray & pts)
  270.   : PCurve(pts) { }
  271. PINLINE PBezier::PBezier(const PPoint * ptArray, PINDEX numPts)
  272.   : PCurve(ptArray, numPts) { }
  273. //////////////////////////////////////////////////////////////////////////////
  274. // PBSpline
  275. PINLINE PBSpline::PBSpline(PORDINATE x, PORDINATE y)
  276.   : PCurve(x, y) { }
  277. PINLINE PBSpline::PBSpline(const PPoint & pt)
  278.   : PCurve(pt) { }
  279. PINLINE PBSpline::PBSpline(const PPointArray & pts)
  280.   : PCurve(pts) { }
  281. PINLINE PBSpline::PBSpline(const PPoint * ptArray, PINDEX numPts)
  282.   : PCurve(ptArray, numPts) { }
  283. //////////////////////////////////////////////////////////////////////////////
  284. // PCompositeShape
  285. PINLINE PDim PCompositeShape::GetDimensions() const
  286.   { return dimensions; }
  287. PINLINE BOOL PCompositeShape::IsComposite() const
  288.   { return TRUE; }
  289. PINLINE PShape & PCompositeShape::operator[](PINDEX i)
  290.   { return shapes[i]; }
  291. // End Of File ///////////////////////////////////////////////////////////////