DGtal 2.2.0
Loading...
Searching...
No Matches
LibBoard::Dot Struct Reference

A line between two points. More...

#include <Board/Shapes.h>

Inheritance diagram for LibBoard::Dot:
[legend]

Public Member Functions

 Dot (double x, double y, DGtal::Color color, double lineWidth, int depth=-1)
const std::string & name () const
Point center () const
Dot & rotate (double angle, const Point &center)
Dot rotated (double angle, const Point &center) const
Dot & rotate (double angle)
Dot rotated (double angle) const
Dot & translate (double dx, double dy)
Dot translated (double dx, double dy) const
Shape & scale (double sx, double sy)
Shape & scale (double s)
Dot scaled (double sx, double sy) const
Dot 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
Dot * 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

Protected Attributes

double _x
double _y
Protected Attributes inherited from LibBoard::Shape
int _depth
DGtal::Color _penColor
DGtal::Color _fillColor
double _lineWidth
LineStyle _lineStyle
LineCap _lineCap
LineJoin _lineJoin

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

Detailed Description

A line between two points.

The dot structure. This primitive ha been reported as "missing" by Manuel Peinado from Spain. Manuel also suggested that rendering a dot consists in drawing a line from a point to the same point with a roundcap style.

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

Constructor & Destructor Documentation

◆ Dot()

Member Function Documentation

◆ boundingBox()

Rect LibBoard::Dot::boundingBox ( ) const
virtual

Returns the bounding box of the figure.

Returns
The rectangle of the bounding box.

Implements LibBoard::Shape.

Definition at line 379 of file Shapes.cpp.

380{
381 return Rect( _x, _y, 0.0, 0.0 );
382}
Rect(double leftX=0.0f, double topY=0.0f, double rectWidth=0.0f, double rectHeight=0.0f)
Definition Rect.h:42

References _x, _y, and LibBoard::Rect::Rect().

Referenced by Dot().

◆ center()

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

Returns the gravity center of the shape.

Returns
The center of the shape.

Implements LibBoard::Shape.

Definition at line 218 of file Shapes.cpp.

218 {
219 return Point( _x, _y );
220}
MyPointD Point

References _x, and _y.

Referenced by Dot().

◆ clone()

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

Return a copy of the shape.

Returns
copye of the shape.

Implements LibBoard::Shape.

Definition at line 385 of file Shapes.cpp.

385 {
386 return new Dot(*this);
387}
Dot(double x, double y, DGtal::Color color, double lineWidth, int depth=-1)

References Dot().

Referenced by Dot().

◆ flushCairo()

void LibBoard::Dot::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 348 of file Shapes.cpp.

350{
351 cairo_save (cr);
352
353 cairo_set_source_rgba (cr, _penColor.red()/255.0, _penColor.green()/255.0, _penColor.blue()/255.0, 1.);
354
355 cairo_move_to (cr, transform.mapX( _x ), transform.mapY( _y ));
356 cairo_line_to (cr, transform.mapX( _x ), transform.mapY( _y ));
357
358 cairo_set_line_width (cr, _lineWidth);
359 cairo_set_line_cap (cr, cairoLineCap[_lineCap]);
360 cairo_set_line_join (cr, cairoLineJoin[_lineJoin]);
362
363 cairo_stroke (cr);
364
365 cairo_restore (cr);
366}
void green(const unsigned char aGreenValue)
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)
DGtal::Color _penColor
void setCairoDashStyle(cairo_t *cr, LineStyle type) const
Definition Shapes.cpp:153
LineStyle _lineStyle

References LibBoard::Shape::_lineCap, LibBoard::Shape::_lineJoin, LibBoard::Shape::_lineStyle, LibBoard::Shape::_lineWidth, LibBoard::Shape::_penColor, _x, _y, DGtal::Color::blue(), DGtal::Color::green(), DGtal::Color::red(), and LibBoard::Shape::setCairoDashStyle().

Referenced by Dot().

◆ flushFIG()

void LibBoard::Dot::flushFIG ( std::ostream & stream,
const TransformFIG & transform,
std::map< DGtal::Color, int > & colormap ) const
virtual

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

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

Implements LibBoard::Shape.

Definition at line 308 of file Shapes.cpp.

311{
312 stream << "2 1 0 ";
313 // Thickness
314 stream << ( _penColor.valid()?transform.mapWidth( _lineWidth ):0 ) << " ";
315 // Pen color
316 stream << colormap[ _penColor ] << " ";
317 // Fill color
318 stream << "0 ";
319 // Depth
320 stream << transform.mapDepth( _depth ) << " ";
321 // Pen style
322 stream << "-1 ";
323 // Area fill, style val, join style, cap style, radius, f_arrow, b_arrow
324 stream << "-1 0.000 " << _lineJoin << " " << _lineCap << " -1 0 0 ";
325 // Number of points
326 stream << "2\n";
327 stream << " ";
328 stream << static_cast<int>( transform.mapX( _x ) ) << " "
329 << static_cast<int>( transform.mapY( _y ) ) << " "
330 << static_cast<int>( transform.mapX( _x ) ) << " "
331 << static_cast<int>( transform.mapY( _y ) ) << std::endl;
332}
bool valid() const

References LibBoard::Shape::_depth, LibBoard::Shape::_lineCap, LibBoard::Shape::_lineJoin, LibBoard::Shape::_lineWidth, LibBoard::Shape::_penColor, _x, _y, and DGtal::Color::valid().

Referenced by Dot().

◆ flushPostscript()

void LibBoard::Dot::flushPostscript ( std::ostream & stream,
const TransformEPS & transform ) const
virtual

Writes the EPS 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 293 of file Shapes.cpp.

295{
296 stream << "\n% Dot\n";
297 stream << postscriptProperties() << " "
298 << "n "
299 << transform.mapX( _x ) << " "
300 << transform.mapY( _y ) << " "
301 << "m "
302 << transform.mapX( _x ) << " "
303 << transform.mapY( _y ) << " "
304 << "l " << _penColor.postscript() << " srgb stroke" << std::endl;
305}
std::string postscript() const
std::string postscriptProperties() const
Definition Shapes.cpp:140

References LibBoard::Shape::_penColor, _x, _y, DGtal::Color::postscript(), and LibBoard::Shape::postscriptProperties().

Referenced by Dot().

◆ flushSVG()

void LibBoard::Dot::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 335 of file Shapes.cpp.

337{
338 stream << "<line x1=\"" << transform.mapX( _x ) << "\""
339 << " y1=\"" << transform.mapY( _y ) << "\""
340 << " x2=\"" << transform.mapX( _x ) << "\""
341 << " y2=\"" << transform.mapY( _y ) << "\""
342 << svgProperties( transform )
343 << " />" << std::endl;
344}
std::string svgProperties(const TransformSVG &transform) const
Definition Shapes.cpp:109

References _x, _y, and LibBoard::Shape::svgProperties().

Referenced by Dot().

◆ flushTikZ()

void LibBoard::Dot::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 370 of file Shapes.cpp.

373{
374 // FIXME: unimplemented
375 stream << "% FIXME: Dot::flushTikZ unimplemented" << std::endl;
376}

Referenced by Dot().

◆ name()

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

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

Returns
object name

Reimplemented from LibBoard::Shape.

Definition at line 212 of file Shapes.cpp.

213{
214 return _name;
215}
static const std::string _name

References _name.

Referenced by Dot().

◆ rotate() [1/2]

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

Rotates the dot around its center (actually does nothing!).

Parameters
angleThe rotation angle.
Returns
A reference to the Dot itself.

Implements LibBoard::Shape.

Definition at line 236 of file Shapes.cpp.

237{
238 return *this;
239}

◆ rotate() [2/2]

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

Rotates the dot around a given center of rotation.

Parameters
angleThe rotation angle.
centerThe center of rotation.
Returns
A reference to the Dot itself.

Implements LibBoard::Shape.

Definition at line 223 of file Shapes.cpp.

224{
225 Point( _x, _y ).rotate( angle, rotCenter ).get( _x, _y );
226 return *this;
227}
double angle(const DGtal::Z2i::RealPoint &point)

References _x, _y, angle(), LibBoard::Point::get(), and LibBoard::Point::rotate().

Referenced by Dot(), and rotated().

◆ rotated() [1/2]

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

Returns a copy of the dot rotated around its center (i.e. left unchanged!)

Parameters
angleThe rotation angle.
Returns
A copy of the dot.

Definition at line 242 of file Shapes.cpp.

243{
244 return *this;
245}

◆ rotated() [2/2]

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

Returns a rotated copy of the dot around a given rotation center.

Parameters
angleTh rotation angle.
centerThe center of rotation.
Returns
A rotated copy of the Dot.

Definition at line 230 of file Shapes.cpp.

231{
232 return Dot(*this).rotate( angle, rotCenter );
233}

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

Referenced by Dot().

◆ scale() [1/2]

Shape & LibBoard::Dot::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 268 of file Shapes.cpp.

269{
270 return *this;
271}

◆ scale() [2/2]

Shape & LibBoard::Dot::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 262 of file Shapes.cpp.

263{
264 return *this;
265}

Referenced by Dot().

◆ scaleAll()

void LibBoard::Dot::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 286 of file Shapes.cpp.

287{
288 _x *= s;
289 _y *= s;
290}

References _x, and _y.

Referenced by Dot().

◆ scaled() [1/2]

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

Definition at line 280 of file Shapes.cpp.

281{
282 return *this;
283}

◆ scaled() [2/2]

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

Returns a scaled copy of the dot, i.e. the dot itself. (Dots are not actually scaled since their diameters is given by the line width.)

Parameters
sxThe scale factor around the x axis.
syThe scale factor around the y axis.
Returns
A scaled copy of the Dot, i.e. the Dot itself.

Definition at line 274 of file Shapes.cpp.

275{
276 return *this;
277}

Referenced by Dot().

◆ translate()

Dot & LibBoard::Dot::translate ( double dx,
double dy )
virtual
Parameters
dxdx
dydy
Returns
a Dot

Implements LibBoard::Shape.

Definition at line 248 of file Shapes.cpp.

249{
250 _x += dx;
251 _y += dy;
252 return *this;
253}

References _x, and _y.

Referenced by Dot(), and translated().

◆ translated()

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

Returns a translated copy of the dot.

Parameters
dxShift of the first coordinate.
dyShift of the second coordinate.
Returns
A copy of the Dot, translated.

Definition at line 256 of file Shapes.cpp.

257{
258 return Dot(*this).translate( dx, dy );
259}

References Dot(), and translate().

Referenced by Dot().

Field Documentation

◆ _name

const std::string LibBoard::Dot::_name
staticprivate

The generic name of the shape.

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

Referenced by name().

◆ _x

double LibBoard::Dot::_x
protected

First coordinate of the dot.

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

Referenced by boundingBox(), center(), flushCairo(), flushFIG(), flushPostscript(), flushSVG(), rotate(), scaleAll(), and translate().

◆ _y

double LibBoard::Dot::_y
protected

Second coordinate of the dot.

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

Referenced by boundingBox(), center(), flushCairo(), flushFIG(), flushPostscript(), flushSVG(), rotate(), scaleAll(), and translate().


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