File failed to load: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/config/TeX-MML-AM_CHTML/MathJax.js
DGtal 2.0.0
LibBoard::Circle Struct Reference

A circle. More...

#include <Board/Shapes.h>

Inheritance diagram for LibBoard::Circle:
[legend]

Public Member Functions

 Circle (double x, double y, double radius, DGtal::Color pen, DGtal::Color fill, double lineWidth, const LineStyle style=SolidStyle, int depthValue=-1)
const std::string & name () const
Point center () const
Circlerotate (double angle, const Point &center)
Circle rotated (double angle, const Point &center) const
Circlerotate (double angle)
Circle rotated (double angle) const
Circletranslate (double dx, double dy)
Circle translated (double dx, double dy) const
Shapescale (double sx, double sy)
Shapescale (double s)
Circle scaled (double sx, double sy) const
Circle scaled (double s) const
void scaleAll (double s)
void flushSVG (std::ostream &stream, const TransformSVG &transform) const
void flushCairo (cairo_t *cr, const TransformCairo &transform) const
void flushTikZ (std::ostream &stream, const TransformTikZ &transform) const
Circleclone () const
Public Member Functions inherited from LibBoard::Ellipse
 Ellipse (double x, double y, double xRadius, double yRadius, DGtal::Color pen, DGtal::Color fill, double lineWidth, const LineStyle lineStyle=SolidStyle, int depthValue=-1)
const std::string & name () const
Point center () const
Ellipserotate (double angle, const Point &center)
Ellipse rotated (double angle, const Point &center) const
Ellipserotate (double angle)
Ellipse rotated (double angle) const
Ellipsetranslate (double dx, double dy)
Ellipse translated (double dx, double dy) const
Shapescale (double sx, double sy)
Shapescale (double s)
Ellipse scaled (double sx, double sy) const
Ellipse scaled (double s) const
void scaleAll (double s)
void flushPostscript (std::ostream &stream, const TransformEPS &transform) const
void flushFIG (std::ostream &stream, const TransformFIG &transform, std::map< DGtal::Color, int > &colormap) const
void flushSVG (std::ostream &stream, const TransformSVG &transform) const
void flushCairo (cairo_t *cr, const TransformCairo &transform) const
void flushTikZ (std::ostream &stream, const TransformTikZ &transform) const
Rect boundingBox () const
Ellipseclone () const
Public Member Functions inherited from LibBoard::Shape
 Shape (DGtal::Color penColor, DGtal::Color fillColor, double lineWidth, LineStyle style, const LineCap cap, const LineJoin join, int depth)
virtual ~Shape ()
bool filled () const
ShaperotateDeg (double angle, const Point &center)
ShaperotateDeg (double angle)
Rect bbox ()
Shapeoperator-- ()
Shapeoperator++ ()
int depth () const
virtual void depth (int)
virtual void shiftDepth (int shift)
const DGtal::ColorpenColor () const
const DGtal::ColorfillColor () const

Static Private Attributes

static const std::string _name

Additional Inherited Members

Public Types inherited from LibBoard::Shape
enum  LineCap { ButtCap = 0 , RoundCap , SquareCap }
enum  LineJoin { MiterJoin = 0 , RoundJoin , BevelJoin }
enum  LineStyle {
  SolidStyle = 0 , DashStyle , DotStyle , DashDotStyle ,
  DashDotDotStyle , DashDotDotDotStyle
}
Protected Member Functions inherited from LibBoard::Shape
std::string svgProperties (const TransformSVG &transform) const
std::string postscriptProperties () const
void setCairoDashStyle (cairo_t *cr, LineStyle type) const
std::string tikzProperties (const TransformTikZ &transform) const
Protected Attributes inherited from LibBoard::Ellipse
Point _center
double _xRadius
double _yRadius
double _angle
bool _circle
Protected Attributes inherited from LibBoard::Shape
int _depth
DGtal::Color _penColor
DGtal::Color _fillColor
double _lineWidth
LineStyle _lineStyle
LineCap _lineCap
LineJoin _lineJoin

Detailed Description

A circle.

The circle structure.

Definition at line 1460 of file Board/Shapes.h.

Constructor & Destructor Documentation

◆ Circle()

LibBoard::Circle::Circle ( double x,
double y,
double radius,
DGtal::Color pen,
DGtal::Color fill,
double lineWidth,
const LineStyle style = SolidStyle,
int depthValue = -1 )
inline

Definition at line 1462 of file Board/Shapes.h.

1467 : Ellipse( x, y, radius, radius, pen, fill, lineWidth, style, depthValue )
1468 { _circle = true; }
Ellipse(double x, double y, double xRadius, double yRadius, DGtal::Color pen, DGtal::Color fill, double lineWidth, const LineStyle lineStyle=SolidStyle, int depthValue=-1)

References LibBoard::Ellipse::_circle, LibBoard::Ellipse::Ellipse(), and LibBoard::Shape::SolidStyle.

Referenced by LibBoard::Arc::Arc(), clone(), rotated(), rotated(), scaled(), scaled(), and translated().

Member Function Documentation

◆ center()

Point LibBoard::Circle::center ( ) const
virtual

Returns the gravity center of the shape.

Returns
The center of the shape.

Implements LibBoard::Shape.

Definition at line 1328 of file Shapes.cpp.

1328 {
1329 return _center;
1330}

References LibBoard::Ellipse::_center.

◆ clone()

Circle * LibBoard::Circle::clone ( ) const
virtual

Return a copy of the shape.

Returns
copye of the shape.

Implements LibBoard::Shape.

Definition at line 1410 of file Shapes.cpp.

1410 {
1411 return new Circle(*this);
1412}
Circle(double x, double y, double radius, DGtal::Color pen, DGtal::Color fill, double lineWidth, const LineStyle style=SolidStyle, int depthValue=-1)

References Circle().

◆ flushCairo()

void LibBoard::Circle::flushCairo ( cairo_t * cr,
const TransformCairo & transform ) const
virtual

Writes the cairo code of the shape in a cairo drawing context according to a transform.

Parameters
crThe cairo drawing context.
transformA 2D transform to be applied.

Implements LibBoard::Shape.

Definition at line 1431 of file Shapes.cpp.

1433{
1434 if ( ! _circle )
1435 Ellipse::flushCairo( cr, transform );
1436 else
1437 {
1438 cairo_save (cr);
1439
1440 cairo_set_source_rgba (cr, _fillColor.red()/255.0, _fillColor.green()/255.0, _fillColor.blue()/255.0, 1.);
1441
1442 cairo_arc (cr, transform.mapX( _center.x ), transform.mapY( _center.y ), transform.scale( _xRadius ), 0, 2*M_PI);
1443
1444 if ( filled() )
1445 {
1447 cairo_fill_preserve (cr);
1448 else
1449 cairo_fill (cr);
1450 }
1451
1452 //
1453
1455 {
1456 cairo_set_source_rgba (cr, _penColor.red()/255.0, _penColor.green()/255.0, _penColor.blue()/255.0, 1.);
1457
1458 cairo_set_line_width (cr, _lineWidth);
1459 cairo_set_line_cap (cr, cairoLineCap[_lineCap]);
1460 cairo_set_line_join (cr, cairoLineJoin[_lineJoin]);
1462
1463 cairo_stroke (cr);
1464 }
1465
1466 cairo_restore (cr);
1467 }
1468}
static const Color None
Definition Color.h:421
void transform(std::vector< OutputValue > &output_values, std::vector< std::size_t > &input2output, std::vector< std::size_t > &output2input, ForwardIterator itb, ForwardIterator ite, const ConversionFct &F, bool remove_duplicates)
void flushCairo(cairo_t *cr, const TransformCairo &transform) const
Definition Shapes.cpp:1232
DGtal::Color _fillColor
DGtal::Color _penColor
void setCairoDashStyle(cairo_t *cr, LineStyle type) const
Definition Shapes.cpp:153
LineStyle _lineStyle
bool filled() const

References LibBoard::Ellipse::_center, LibBoard::Ellipse::_circle, LibBoard::Shape::_fillColor, LibBoard::Shape::_lineCap, LibBoard::Shape::_lineJoin, LibBoard::Shape::_lineStyle, LibBoard::Shape::_lineWidth, LibBoard::Shape::_penColor, LibBoard::Ellipse::_xRadius, LibBoard::Shape::filled(), LibBoard::Ellipse::flushCairo(), DGtal::Color::None, and LibBoard::Shape::setCairoDashStyle().

◆ flushSVG()

void LibBoard::Circle::flushSVG ( std::ostream & stream,
const TransformSVG & transform ) const
virtual

Writes the SVG code of the shape in a stream according to a transform.

Parameters
streamThe output stream.
transformA 2D transform to be applied.

Implements LibBoard::Shape.

Definition at line 1415 of file Shapes.cpp.

1417{
1418 if ( ! _circle )
1419 Ellipse::flushSVG( stream, transform );
1420 else {
1421 stream << "<circle cx=\"" << transform.mapX( _center.x ) << '"'
1422 << " cy=\"" << transform.mapY( _center.y ) << '"'
1423 << " r=\"" << transform.scale( _xRadius ) << '"'
1424 << svgProperties( transform )
1425 << " />" << std::endl;
1426 }
1427}
void flushSVG(std::ostream &stream, const TransformSVG &transform) const
Definition Shapes.cpp:1213
std::string svgProperties(const TransformSVG &transform) const
Definition Shapes.cpp:109

References LibBoard::Ellipse::_center, LibBoard::Ellipse::_circle, LibBoard::Ellipse::_xRadius, LibBoard::Ellipse::flushSVG(), and LibBoard::Shape::svgProperties().

◆ flushTikZ()

void LibBoard::Circle::flushTikZ ( std::ostream & stream,
const TransformTikZ & transform ) const
virtual

Writes the TikZ code of the shape in a stream according to a transform.

Parameters
streamThe output stream.
transformA 2D transform to be applied.

Implements LibBoard::Shape.

Definition at line 1472 of file Shapes.cpp.

1474{
1475 if ( ! _circle )
1476 Ellipse::flushTikZ( stream, transform );
1477 else {
1478 stream << "\\path[" << tikzProperties(transform) << "] ("
1479 << transform.mapX( _center.x ) << ','
1480 << transform.mapY( _center.y ) << ')'
1481 << " circle (" << transform.scale( _xRadius ) << ");"
1482 << std::endl;
1483 }
1484}
void flushTikZ(std::ostream &stream, const TransformTikZ &transform) const
Definition Shapes.cpp:1275
std::string tikzProperties(const TransformTikZ &transform) const
Definition Shapes.cpp:177

References LibBoard::Ellipse::_center, LibBoard::Ellipse::_circle, LibBoard::Ellipse::_xRadius, LibBoard::Ellipse::flushTikZ(), and LibBoard::Shape::tikzProperties().

◆ name()

const std::string & LibBoard::Circle::name ( ) const
virtual

Returns the generic name of the shape (e.g., Circle, Rectangle, etc.)

Returns
generic name as a string

Reimplemented from LibBoard::Shape.

Definition at line 1322 of file Shapes.cpp.

1323{
1324 return _name;
1325}
static const std::string _name

References _name.

◆ rotate() [1/2]

Circle & LibBoard::Circle::rotate ( double angle)
virtual

Rotate the shape around its center.

Parameters
angleThe rotation angle in radian.
Returns
A reference to the shape itself.

Implements LibBoard::Shape.

Definition at line 1351 of file Shapes.cpp.

1352{
1353 if ( !_circle )
1355 return *this;
1356}
Ellipse & rotate(double angle, const Point &center)
Definition Shapes.cpp:1031
double angle(const DGtal::Z2i::RealPoint &point)

References LibBoard::Ellipse::_circle, angle(), and LibBoard::Ellipse::rotate().

◆ rotate() [2/2]

Circle & LibBoard::Circle::rotate ( double angle,
const Point & center )
virtual

Rotate the shape around a given center of rotation.

Parameters
angleThe rotation angle in radian.
centerThe center of rotation.
Returns
A reference to the shape itself.

Implements LibBoard::Shape.

Definition at line 1333 of file Shapes.cpp.

1334{
1335 if ( _circle ) {
1336 if ( rotCenter == _center ) return *this;
1337 _center.rotate( angle, rotCenter );
1338 return *this;
1339 }
1340 Ellipse::rotate( angle, rotCenter );
1341 return *this;
1342}

References LibBoard::Ellipse::_center, LibBoard::Ellipse::_circle, angle(), and LibBoard::Ellipse::rotate().

Referenced by rotated(), and rotated().

◆ rotated() [1/2]

Circle LibBoard::Circle::rotated ( double angle) const

Definition at line 1359 of file Shapes.cpp.

1360{
1361 return Circle(*this).rotate( angle );
1362}

References angle(), Circle(), and rotate().

◆ rotated() [2/2]

Circle LibBoard::Circle::rotated ( double angle,
const Point & center ) const

Definition at line 1345 of file Shapes.cpp.

1346{
1347 return Circle(*this).rotate( angle, rotCenter );
1348}

References angle(), Circle(), and rotate().

◆ scale() [1/2]

Shape & LibBoard::Circle::scale ( double s)
virtual

Scale the shape along both axis.

Parameters
sThe scale factor along both axis.
Returns
The shape itself.

Implements LibBoard::Shape.

Definition at line 1384 of file Shapes.cpp.

1385{
1386 return Ellipse::scale( s );
1387}
Shape & scale(double sx, double sy)
Definition Shapes.cpp:1075

References LibBoard::Ellipse::scale().

◆ scale() [2/2]

Shape & LibBoard::Circle::scale ( double sx,
double sy )
virtual

Scale the shape along the x an y axis.

Parameters
sxThe scale factor along the x axis.
syThe scale factor along the y axis.
Returns
The shape itself.

Implements LibBoard::Shape.

Definition at line 1378 of file Shapes.cpp.

1379{
1380 return Ellipse::scale( sx, sy );
1381}

References LibBoard::Ellipse::scale().

◆ scaleAll()

void LibBoard::Circle::scaleAll ( double s)
virtual

Scales all the values (positions, dimensions, etc.) associated with the shape.

Parameters
sThe scaling factor.

Implements LibBoard::Shape.

Definition at line 1402 of file Shapes.cpp.

1403{
1404 _center *= s;
1405 _xRadius *= s;
1406 _yRadius *= s;
1407}

References LibBoard::Ellipse::_center, LibBoard::Ellipse::_xRadius, and LibBoard::Ellipse::_yRadius.

◆ scaled() [1/2]

Circle LibBoard::Circle::scaled ( double s) const

Definition at line 1396 of file Shapes.cpp.

1397{
1398 return static_cast<Circle &>( Circle(*this).scale( s, s ) );
1399}

References Circle().

◆ scaled() [2/2]

Circle LibBoard::Circle::scaled ( double sx,
double sy ) const

Definition at line 1390 of file Shapes.cpp.

1391{
1392 return static_cast<Circle &>( Circle(*this).scale( sx, sy ) );
1393}

References Circle().

◆ translate()

Circle & LibBoard::Circle::translate ( double dx,
double dy )
virtual

Translate the shape by a given offset.

Parameters
dxThe x offset.
dyThe y offset.
Returns
A reference to the shape itself.

Implements LibBoard::Shape.

Definition at line 1365 of file Shapes.cpp.

1366{
1367 _center += Point( dx, dy );
1368 return *this;
1369}
MyPointD Point

References LibBoard::Ellipse::_center.

Referenced by translated().

◆ translated()

Circle LibBoard::Circle::translated ( double dx,
double dy ) const

Definition at line 1372 of file Shapes.cpp.

1373{
1374 return Circle(*this).translate( dx, dy );
1375}

References Circle(), and translate().

Field Documentation

◆ _name

const std::string LibBoard::Circle::_name
staticprivate

The generic name of the shape.

Definition at line 1521 of file Board/Shapes.h.

Referenced by name().


The documentation for this struct was generated from the following files: