DGtal 2.2.0
Loading...
Searching...
No Matches
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
Circle & rotate (double angle, const Point &center)
Circle rotated (double angle, const Point &center) const
Circle & rotate (double angle)
Circle rotated (double angle) const
Circle & translate (double dx, double dy)
Circle translated (double dx, double dy) const
Shape & scale (double sx, double sy)
Shape & scale (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
Circle * clone () 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
Ellipse & rotate (double angle, const Point &center)
Ellipse rotated (double angle, const Point &center) const
Ellipse & rotate (double angle)
Ellipse rotated (double angle) const
Ellipse & translate (double dx, double dy)
Ellipse translated (double dx, double dy) const
Shape & scale (double sx, double sy)
Shape & scale (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
Ellipse * clone () 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
Shape & rotateDeg (double angle, const Point &center)
Shape & rotateDeg (double angle)
Rect bbox ()
Shape & operator-- ()
Shape & operator++ ()
int depth () const
virtual void depth (int)
virtual void shiftDepth (int shift)
const DGtal::Color & penColor () const
const DGtal::Color & fillColor () 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(), LibBoard::Board::drawCircle(), LibBoard::Board::fillCircle(), 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}
void green(const unsigned char aGreenValue)
static const Color None
Definition Color.h:421
void red(const unsigned char aRedValue)
void blue(const unsigned char aBlueValue)
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
double y
Definition Point.h:30
double x
Definition Point.h:29
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, DGtal::Color::blue(), LibBoard::Shape::filled(), LibBoard::Ellipse::flushCairo(), DGtal::Color::green(), DGtal::Color::None, DGtal::Color::red(), LibBoard::Shape::setCairoDashStyle(), LibBoard::Point::x, and LibBoard::Point::y.

◆ 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(), LibBoard::Shape::svgProperties(), LibBoard::Point::x, and LibBoard::Point::y.

◆ 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(), LibBoard::Shape::tikzProperties(), LibBoard::Point::x, and LibBoard::Point::y.

◆ 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}
Point & rotate(double angle)
Definition Point.h:190

References LibBoard::Ellipse::_center, LibBoard::Ellipse::_circle, angle(), LibBoard::Ellipse::rotate(), and LibBoard::Point::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: