Minsky
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 120 of file operation.h.

Constructor & Destructor Documentation

◆ DrawBinOp()

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

Definition at line 124 of file operation.h.

124 : cairo(cairo), zoomFactor(z) {}
cairo_t * cairo
Definition: operation.h:122

Member Function Documentation

◆ drawDivide()

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

Definition at line 151 of file operation.h.

References cairo, and M_PI.

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

152  {
153  cairo_move_to(cairo,-5,0);
154  cairo_line_to(cairo,5,0);
155  cairo_new_sub_path(cairo);
156  cairo_arc(cairo,0,3,1,0,2*M_PI);
157  cairo_new_sub_path(cairo);
158  cairo_arc(cairo,0,-3,1,0,2*M_PI);
159  cairo_stroke(cairo);
160  }
#define M_PI
some useful geometry types, defined from boost::geometry
Definition: geometry.h:29
cairo_t * cairo
Definition: operation.h:122
Here is the caller graph for this function:

◆ drawMinus()

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

Definition at line 135 of file operation.h.

References cairo.

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

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

◆ drawMultiply()

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

Definition at line 142 of file operation.h.

References cairo.

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

143  {
144  cairo_move_to(cairo,-5,-5);
145  cairo_line_to(cairo,5,5);
146  cairo_move_to(cairo,-5,5);
147  cairo_line_to(cairo,5,-5);
148  cairo_stroke(cairo);
149  }
cairo_t * cairo
Definition: operation.h:122
Here is the caller graph for this function:

◆ drawPlus()

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

Definition at line 126 of file operation.h.

References cairo.

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

127  {
128  cairo_move_to(cairo,0,-5);
129  cairo_line_to(cairo,0,5);
130  cairo_move_to(cairo,-5,0);
131  cairo_line_to(cairo,5,0);
132  cairo_stroke(cairo);
133  }
cairo_t * cairo
Definition: operation.h:122
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 172 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().

173  {
174  const ecolab::cairo::CairoSave cs(cairo);
175 
176  const double angle=rotation * M_PI / 180.0;
177  if (minsky::flipped(rotation))
178  y=-y;
179  cairo_rotate(cairo, angle);
180 
181  cairo_translate(cairo,0.7*x,0.6*y);
182  cairo_scale(cairo,0.5,0.5);
183 
184  // and counter-rotate
185  cairo_rotate(cairo, -angle);
186  f();
187  }
#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:122
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 162 of file operation.h.

References cairo, and zoomFactor.

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

163  {
164  cairo_scale(cairo,zoomFactor,zoomFactor);
165  cairo_move_to(cairo,-5,0);
166  cairo_show_text(cairo,s);
167  }
cairo_t * cairo
Definition: operation.h:122
Here is the caller graph for this function:

Member Data Documentation

◆ cairo

cairo_t* minsky::DrawBinOp::cairo

Definition at line 122 of file operation.h.

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

◆ zoomFactor

double minsky::DrawBinOp::zoomFactor

Definition at line 123 of file operation.h.

Referenced by drawSymbol().


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