Minsky: 3.17.0
minsky::DrawBinOp Struct Reference

helper class to draw port label symbols More...

#include <operation.h>

Collaboration diagram for minsky::DrawBinOp:
Collaboration graph

Public Member Functions

 DrawBinOp (cairo_t *cairo, double z=1)
 
void drawPlus () const
 
void drawMinus () const
 
void drawMultiply () const
 
void drawDivide () const
 
void drawSymbol (const char *s) const
 
template<class F >
void drawPort (F f, float x, float y, float rotation) const
 

Public Attributes

cairo_t * cairo
 
double zoomFactor
 

Detailed Description

helper class to draw port label symbols

Definition at line 112 of file operation.h.

Constructor & Destructor Documentation

◆ DrawBinOp()

minsky::DrawBinOp::DrawBinOp ( cairo_t *  cairo,
double  z = 1 
)
inline

Definition at line 116 of file operation.h.

116 : cairo(cairo), zoomFactor(z) {}
cairo_t * cairo
Definition: operation.h:114

Member Function Documentation

◆ drawDivide()

void minsky::DrawBinOp::drawDivide ( ) const
inline

Definition at line 143 of file operation.h.

References cairo, and M_PI.

Referenced by minsky::Operation< minsky::OperationType::integrate >::iconDraw().

144  {
145  cairo_move_to(cairo,-5,0);
146  cairo_line_to(cairo,5,0);
147  cairo_new_sub_path(cairo);
148  cairo_arc(cairo,0,3,1,0,2*M_PI);
149  cairo_new_sub_path(cairo);
150  cairo_arc(cairo,0,-3,1,0,2*M_PI);
151  cairo_stroke(cairo);
152  }
#define M_PI
some useful geometry types, defined from boost::geometry
Definition: geometry.h:29
cairo_t * cairo
Definition: operation.h:114
Here is the caller graph for this function:

◆ drawMinus()

void minsky::DrawBinOp::drawMinus ( ) const
inline

Definition at line 127 of file operation.h.

References cairo.

Referenced by minsky::Operation< minsky::OperationType::integrate >::iconDraw().

128  {
129  cairo_move_to(cairo,-5,0);
130  cairo_line_to(cairo,5,0);
131  cairo_stroke(cairo);
132  }
cairo_t * cairo
Definition: operation.h:114
Here is the caller graph for this function:

◆ drawMultiply()

void minsky::DrawBinOp::drawMultiply ( ) const
inline

Definition at line 134 of file operation.h.

References cairo.

Referenced by minsky::Operation< minsky::OperationType::integrate >::iconDraw().

135  {
136  cairo_move_to(cairo,-5,-5);
137  cairo_line_to(cairo,5,5);
138  cairo_move_to(cairo,-5,5);
139  cairo_line_to(cairo,5,-5);
140  cairo_stroke(cairo);
141  }
cairo_t * cairo
Definition: operation.h:114
Here is the caller graph for this function:

◆ drawPlus()

void minsky::DrawBinOp::drawPlus ( ) const
inline

Definition at line 118 of file operation.h.

References cairo.

Referenced by minsky::Operation< minsky::OperationType::integrate >::iconDraw().

119  {
120  cairo_move_to(cairo,0,-5);
121  cairo_line_to(cairo,0,5);
122  cairo_move_to(cairo,-5,0);
123  cairo_line_to(cairo,5,0);
124  cairo_stroke(cairo);
125  }
cairo_t * cairo
Definition: operation.h:114
Here is the caller graph for this function:

◆ drawPort()

template<class F >
void minsky::DrawBinOp::drawPort ( f,
float  x,
float  y,
float  rotation 
) const
inline

Definition at line 164 of file operation.h.

References cairo, f, minsky::flipped(), and M_PI.

Referenced by minsky::IntOp::draw(), minsky::OperationBase::drawUserFunction(), and minsky::Operation< minsky::OperationType::integrate >::iconDraw().

165  {
166  const ecolab::cairo::CairoSave cs(cairo);
167 
168  const double angle=rotation * M_PI / 180.0;
169  if (minsky::flipped(rotation))
170  y=-y;
171  cairo_rotate(cairo, angle);
172 
173  cairo_translate(cairo,0.7*x,0.6*y);
174  cairo_scale(cairo,0.5,0.5);
175 
176  // and counter-rotate
177  cairo_rotate(cairo, -angle);
178  f();
179  }
#define M_PI
some useful geometry types, defined from boost::geometry
Definition: geometry.h:29
function f
Definition: canvas.m:1
bool flipped(double rotation)
returns if the angle (in degrees) is in the second or third quadrant
Definition: geometry.h:102
cairo_t * cairo
Definition: operation.h:114
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drawSymbol()

void minsky::DrawBinOp::drawSymbol ( const char *  s) const
inline

Definition at line 154 of file operation.h.

References cairo, and zoomFactor.

Referenced by minsky::IntOp::draw(), minsky::OperationBase::drawUserFunction(), and minsky::Operation< minsky::OperationType::integrate >::iconDraw().

155  {
156  cairo_scale(cairo,zoomFactor,zoomFactor);
157  cairo_move_to(cairo,-5,0);
158  cairo_show_text(cairo,s);
159  }
cairo_t * cairo
Definition: operation.h:114
Here is the caller graph for this function:

Member Data Documentation

◆ cairo

cairo_t* minsky::DrawBinOp::cairo

Definition at line 114 of file operation.h.

Referenced by drawDivide(), drawMinus(), drawMultiply(), drawPlus(), drawPort(), and drawSymbol().

◆ zoomFactor

double minsky::DrawBinOp::zoomFactor

Definition at line 115 of file operation.h.

Referenced by drawSymbol().


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