\doxysection{AShape Class Reference}
\hypertarget{classAShape}{}\label{classAShape}\index{AShape@{AShape}}


{\ttfamily \#include $<$AShape.\+hpp$>$}

Inheritance diagram for AShape\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=1.914530cm]{classAShape}
\end{center}
\end{figure}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classAShape_a3a00725527f97c75f15db2f41ec0bd2d}\label{classAShape_a3a00725527f97c75f15db2f41ec0bd2d} 
{\footnotesize template$<$typename T$>$ }\\T \texorpdfstring{$\ast$}{*} {\bfseries as} ()
\item 
\Hypertarget{classAShape_ad4ad58dece84243fa03ff9107a73c8ec}\label{classAShape_ad4ad58dece84243fa03ff9107a73c8ec} 
{\footnotesize template$<$typename T$>$ }\\const T \texorpdfstring{$\ast$}{*} {\bfseries as} () const
\item 
\Hypertarget{classAShape_a07b1e037cbaa9368c31367cb59963636}\label{classAShape_a07b1e037cbaa9368c31367cb59963636} 
virtual \mbox{\hyperlink{classAShape}{AShape}} \texorpdfstring{$\ast$}{*} {\bfseries clone} () const =0
\item 
virtual uint \mbox{\hyperlink{classAShape_a5c1e088fcefb55861c198cc0bda1d22c}{vertex\+Count}} () const =0
\item 
\Hypertarget{classAShape_aea94749e5b96ad77b0d5c46d9945efa2}\label{classAShape_aea94749e5b96ad77b0d5c46d9945efa2} 
virtual uint {\bfseries index\+Count\+With\+Restart} () const
\item 
\Hypertarget{classAShape_a65fdb6af16555810212b35e4ba686ec4}\label{classAShape_a65fdb6af16555810212b35e4ba686ec4} 
virtual bool {\bfseries can\+Draw\+As\+Tri\+Fan} () const
\item 
\Hypertarget{classAShape_a51719944be32ff8d73afed3eeac74063}\label{classAShape_a51719944be32ff8d73afed3eeac74063} 
virtual bool {\bfseries is\+Round} () const
\item 
\Hypertarget{classAShape_a28598ffdd72e1eaa4494ab8289fda766}\label{classAShape_a28598ffdd72e1eaa4494ab8289fda766} 
virtual Real {\bfseries unsigned\+Area} () const =0
\item 
\Hypertarget{classAShape_afc54d16046f44b2ef9742748b84aaf30}\label{classAShape_afc54d16046f44b2ef9742748b84aaf30} 
virtual Bbox\+\_\+2 {\bfseries bbox} () const =0
\item 
\Hypertarget{classAShape_a0c03bd3a6ce6fb37bbe2fd8f3b13a2b8}\label{classAShape_a0c03bd3a6ce6fb37bbe2fd8f3b13a2b8} 
Real {\bfseries bounding\+Radius} () const
\item 
virtual bool \mbox{\hyperlink{classAShape_a00057d53de327c100757dd10a6656285}{transform\+Preserves\+Type}} (const CGAL\+::\+Aff\+\_\+transformation\+\_\+2$<$ Kernel $>$ \&) const
\item 
virtual void \mbox{\hyperlink{classAShape_a396ab3ae1d921d8d3f37f5f2f0f98c66}{transform}} (const CGAL\+::\+Aff\+\_\+transformation\+\_\+2$<$ Kernel $>$ \&)=0
\item 
\Hypertarget{classAShape_ac2616f0f96566bb5a549e8a5d3a9105f}\label{classAShape_ac2616f0f96566bb5a549e8a5d3a9105f} 
virtual void {\bfseries translate} (const Vector\+\_\+2 \&)=0
\item 
virtual \mbox{\hyperlink{classAShape}{AShape}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{classAShape_a6357c580061743d2393287c585c7149a}{transform\+Type}} (const CGAL\+::\+Aff\+\_\+transformation\+\_\+2$<$ Kernel $>$ \&)
\item 
\Hypertarget{classAShape_ae86de51c73e96c8c776b395b1b5105d9}\label{classAShape_ae86de51c73e96c8c776b395b1b5105d9} 
virtual bool {\bfseries contains} (const Point\+\_\+2 \&) const =0
\item 
\Hypertarget{classAShape_ac32948a53b22c958633a2c921cf97f95}\label{classAShape_ac32948a53b22c958633a2c921cf97f95} 
virtual Real {\bfseries squared\+\_\+distance} (const \mbox{\hyperlink{classAShape}{AShape}} \&) const =0
\item 
\Hypertarget{classAShape_a6e72de393a880a3108bc41d5b52cd3d9}\label{classAShape_a6e72de393a880a3108bc41d5b52cd3d9} 
virtual Real {\bfseries squared\+\_\+distance} (const \+::\+Point\+\_\+2 \&) const =0
\item 
\Hypertarget{classAShape_a176852b6182912bb24dcb66725b56556}\label{classAShape_a176852b6182912bb24dcb66725b56556} 
virtual Real {\bfseries squared\+\_\+distance} (const Segment\+\_\+2 \&) const =0
\item 
\Hypertarget{classAShape_a4ca35d5ced285274756ba000337e2a6b}\label{classAShape_a4ca35d5ced285274756ba000337e2a6b} 
virtual Real {\bfseries squared\+\_\+distance} (const Circle\+\_\+2 \&) const =0
\item 
\Hypertarget{classAShape_ae34c6bd75980efd5a84c2871b13170ee}\label{classAShape_ae34c6bd75980efd5a84c2871b13170ee} 
virtual Real {\bfseries squared\+\_\+distance} (const Iso\+\_\+rectangle\+\_\+2 \&) const =0
\item 
\Hypertarget{classAShape_a8e2befce9bd6f0702f5ee3e84a2b795b}\label{classAShape_a8e2befce9bd6f0702f5ee3e84a2b795b} 
Real {\bfseries squared\+\_\+distance} (const Bbox\+\_\+2 \&) const
\item 
\Hypertarget{classAShape_ab08ef6b10acf4d17ae4d098bc382911b}\label{classAShape_ab08ef6b10acf4d17ae4d098bc382911b} 
virtual Real {\bfseries squared\+\_\+distance} (const Triangle\+\_\+2 \&) const =0
\item 
\Hypertarget{classAShape_a44fa5b224cb1e6e8691d98f9b1c2be55}\label{classAShape_a44fa5b224cb1e6e8691d98f9b1c2be55} 
virtual Real {\bfseries squared\+\_\+distance} (const Polygon\+\_\+2 \&) const =0
\item 
\Hypertarget{classAShape_a3bf1b21416ec64d42f6520a727e5bf66}\label{classAShape_a3bf1b21416ec64d42f6520a727e5bf66} 
virtual Real {\bfseries squared\+\_\+distance} (const \mbox{\hyperlink{classWideSegment__25}{Wide\+Segment\+\_\+25}} \&) const =0
\item 
\Hypertarget{classAShape_a17371293cf3f29323b08dde8d332dad5}\label{classAShape_a17371293cf3f29323b08dde8d332dad5} 
virtual bool {\bfseries intersects} (const \mbox{\hyperlink{classAShape}{AShape}} \&) const =0
\item 
\Hypertarget{classAShape_a4132f7b6aee353416449022699c8e155}\label{classAShape_a4132f7b6aee353416449022699c8e155} 
virtual bool {\bfseries intersects} (const Circle\+\_\+2 \&) const =0
\item 
\Hypertarget{classAShape_ad511a0add913324799ca2182b5c2ba20}\label{classAShape_ad511a0add913324799ca2182b5c2ba20} 
virtual bool {\bfseries intersects} (const Iso\+\_\+rectangle\+\_\+2 \&) const =0
\item 
\Hypertarget{classAShape_a6bd5c508cb4509d3eca71b5d098ef591}\label{classAShape_a6bd5c508cb4509d3eca71b5d098ef591} 
bool {\bfseries intersects} (const Bbox\+\_\+2 \&) const
\item 
\Hypertarget{classAShape_a85b10aef1cf7e3629bd1188bc522c4f1}\label{classAShape_a85b10aef1cf7e3629bd1188bc522c4f1} 
virtual bool {\bfseries intersects} (const Triangle\+\_\+2 \&) const =0
\item 
\Hypertarget{classAShape_a77e2c4923b5b7c5461f9903354de2803}\label{classAShape_a77e2c4923b5b7c5461f9903354de2803} 
virtual bool {\bfseries intersects} (const Polygon\+\_\+2 \&) const =0
\item 
\Hypertarget{classAShape_ac573560183a017826f6122dc267107fc}\label{classAShape_ac573560183a017826f6122dc267107fc} 
virtual bool {\bfseries intersects} (const \mbox{\hyperlink{classWideSegment__25}{Wide\+Segment\+\_\+25}} \&) const =0
\item 
\Hypertarget{classAShape_aaf390895814ec53ef9c5fab13795fa32}\label{classAShape_aaf390895814ec53ef9c5fab13795fa32} 
virtual\+::\+Point\+\_\+2 {\bfseries centroid} () const =0
\item 
\Hypertarget{classAShape_aa611c4208f91466f5c8ba77145b135ee}\label{classAShape_aa611c4208f91466f5c8ba77145b135ee} 
virtual std\+::string {\bfseries str} () const =0
\item 
virtual Py\+Object \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{classAShape_a940139bb31886cb147e5a4da958dab2e}{get\+Py}} () const =0
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Abstract shape class, or simply "{}a shape"{}. 

\label{doc-func-members}
\Hypertarget{classAShape_doc-func-members}
\doxysubsection{Member Function Documentation}
\Hypertarget{classAShape_a940139bb31886cb147e5a4da958dab2e}\index{AShape@{AShape}!getPy@{getPy}}
\index{getPy@{getPy}!AShape@{AShape}}
\doxysubsubsection{\texorpdfstring{getPy()}{getPy()}}
{\footnotesize\ttfamily \label{classAShape_a940139bb31886cb147e5a4da958dab2e} 
virtual Py\+Object \texorpdfstring{$\ast$}{*} AShape\+::get\+Py (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}

Return a Python representation of this object. Formats\+:
\begin{DoxyItemize}
\item (\textquotesingle{}circle\textquotesingle{}, radius, x, y)
\item (\textquotesingle{}triangle\textquotesingle{}, v0, v1, v2) where v is (x,y,z)
\item (\textquotesingle{}rect\+\_\+iso\textquotesingle{}, xmin, ymin, xmax, ymax)
\item (\textquotesingle{}wide\+\_\+segment\textquotesingle{}, x0, y0, x1, y1, z, width)
\item (\textquotesingle{}polygon\textquotesingle{}, \mbox{[}v0, v1, v2, v3, ...\mbox{]}) where v is (x,y,z) 
\end{DoxyItemize}

Implemented in \mbox{\hyperlink{classCircleEx_a11adda3385c4c4b106f388191ee709d6}{Circle\+Ex}}, \mbox{\hyperlink{classIsoRectEx_afec8e57896667aa176678e718d4ebe13}{Iso\+Rect\+Ex}}, \mbox{\hyperlink{classPolygonEx_a0f34d02d8d6684259b0b199cbfe8299f}{Polygon\+Ex}}, \mbox{\hyperlink{classTriangleEx_acdb1b84c2c04b26116e6f7dc701d0b27}{Triangle\+Ex}}, and \mbox{\hyperlink{classWideSegment__25_a0ab4c6f52ea6328095d2a095616adb8d}{Wide\+Segment\+\_\+25}}.

\Hypertarget{classAShape_a396ab3ae1d921d8d3f37f5f2f0f98c66}\index{AShape@{AShape}!transform@{transform}}
\index{transform@{transform}!AShape@{AShape}}
\doxysubsubsection{\texorpdfstring{transform()}{transform()}}
{\footnotesize\ttfamily \label{classAShape_a396ab3ae1d921d8d3f37f5f2f0f98c66} 
virtual void AShape\+::transform (\begin{DoxyParamCaption}\item[{const CGAL\+::\+Aff\+\_\+transformation\+\_\+2$<$ Kernel $>$ \&}]{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}}

Use \doxylink{classAShape_a6357c580061743d2393287c585c7149a}{transform\+Type()} if you are not sure whether the transformation preserves the shape type. 

Implemented in \mbox{\hyperlink{classCircleEx_a56c6d63e5a4c2470eace9bc15e67b251}{Circle\+Ex}}, \mbox{\hyperlink{classIsoRectEx_a171237514454baafe0877727348a50b1}{Iso\+Rect\+Ex}}, \mbox{\hyperlink{classPolygonEx_a973c8aaf2d84ba87cf7229ad3b435ff5}{Polygon\+Ex}}, \mbox{\hyperlink{classTriangleEx_aa3acbe5880bc4e92e4a81ac09fc851a8}{Triangle\+Ex}}, and \mbox{\hyperlink{classWideSegment__25_a34d95b04e0db56d93cee2cd46dc3badb}{Wide\+Segment\+\_\+25}}.

\Hypertarget{classAShape_a00057d53de327c100757dd10a6656285}\index{AShape@{AShape}!transformPreservesType@{transformPreservesType}}
\index{transformPreservesType@{transformPreservesType}!AShape@{AShape}}
\doxysubsubsection{\texorpdfstring{transformPreservesType()}{transformPreservesType()}}
{\footnotesize\ttfamily \label{classAShape_a00057d53de327c100757dd10a6656285} 
virtual bool AShape\+::transform\+Preserves\+Type (\begin{DoxyParamCaption}\item[{const CGAL\+::\+Aff\+\_\+transformation\+\_\+2$<$ Kernel $>$ \&}]{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}

Check whether the transformation would change the shape\textquotesingle{}s underlying type (sorry).
\begin{DoxyItemize}
\item Iso\+\_\+rectangle\+\_\+2 may become a Polygon\+\_\+2 when (angle \% 90) != 0
\item Circle\+\_\+2 may become an ellipse when scaled (this is not supported) 
\end{DoxyItemize}

Reimplemented in \mbox{\hyperlink{classCircleEx_acfb3c6bd348aef17e5d3c3bcfdfe6e8d}{Circle\+Ex}}, and \mbox{\hyperlink{classIsoRectEx_acece5199895bc66f7634ccb2d9e54936}{Iso\+Rect\+Ex}}.

\Hypertarget{classAShape_a6357c580061743d2393287c585c7149a}\index{AShape@{AShape}!transformType@{transformType}}
\index{transformType@{transformType}!AShape@{AShape}}
\doxysubsubsection{\texorpdfstring{transformType()}{transformType()}}
{\footnotesize\ttfamily \label{classAShape_a6357c580061743d2393287c585c7149a} 
virtual \mbox{\hyperlink{classAShape}{AShape}} \texorpdfstring{$\ast$}{*} AShape\+::transform\+Type (\begin{DoxyParamCaption}\item[{const CGAL\+::\+Aff\+\_\+transformation\+\_\+2$<$ Kernel $>$ \&}]{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

Transform this shape without restrictions. \begin{DoxyReturn}{Returns}
@this or a new \doxylink{classAShape}{AShape}. 
\end{DoxyReturn}


Reimplemented in \mbox{\hyperlink{classIsoRectEx_acdc2a1771db95e47372737620167ecc3}{Iso\+Rect\+Ex}}.

\Hypertarget{classAShape_a5c1e088fcefb55861c198cc0bda1d22c}\index{AShape@{AShape}!vertexCount@{vertexCount}}
\index{vertexCount@{vertexCount}!AShape@{AShape}}
\doxysubsubsection{\texorpdfstring{vertexCount()}{vertexCount()}}
{\footnotesize\ttfamily \label{classAShape_a5c1e088fcefb55861c198cc0bda1d22c} 
virtual uint AShape\+::vertex\+Count (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}

For rendering\+: 

Implemented in \mbox{\hyperlink{classCircleEx_a8ae4cc893342890d59d928f3792584dc}{Circle\+Ex}}, \mbox{\hyperlink{classIsoRectEx_afd6a94cd1c1601086901485b45f5d92c}{Iso\+Rect\+Ex}}, \mbox{\hyperlink{classPolygonEx_a58990a768563f40a8285789f56e6dc5f}{Polygon\+Ex}}, \mbox{\hyperlink{classTriangleEx_a3940e414ad48f00a917f7feccc276756}{Triangle\+Ex}}, and \mbox{\hyperlink{classWideSegment__25_a5e7d7fb7d291573fb5d97b8172cc2cf8}{Wide\+Segment\+\_\+25}}.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
/home/chr/devel/\+Ph\+D/\+Environment/pub/\+PCBEnv/pcbenv/cxx/AShape.\+hpp\end{DoxyCompactItemize}
