Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Friends
omni::BlendMask Class Reference

A blend mask consists of an edge mask and stroke mask with a brush Edge mask and stroke mask are stored in different buffers. More...

#include <BlendMask.h>

Collaboration diagram for omni::BlendMask:
Collaboration graph
[legend]

Public Types

typedef Buffer< uint8_t > buffer_type
 

Public Member Functions

 BlendMask (proj::Tuning const &_tuning)
 
void clear ()
 Clears stroke buffer. More...
 
void setRect (QRectF const &)
 Sets rect of blends Clamps rect to borders 0,0,1,1 if its overlapping. More...
 
QRectF rect () const
 Returns rectangle. More...
 
float topWidth () const
 Returns distance to top edge. More...
 
float bottomWidth () const
 Returns distance to bottom edge. More...
 
float leftWidth () const
 Returns distance to left edge. More...
 
float rightWidth () const
 Returns distance to right edge. More...
 
void setGamma (float _gamma)
 Sets gamma value for edge mask. More...
 
float gamma () const
 Return gamma value. More...
 
void setBrush (float _size, float _feather, float _opacity, bool _invert)
 Set blend brush settings. More...
 
float brushSize () const
 Brush size for tuning. More...
 
void invertBrush (bool)
 Invert brush. More...
 
void changeBrushSize (float _delta)
 Change brush size by +- amount of pixel. More...
 
BlendBrush const & brush () const
 Return reference blend brush (const version) More...
 
void stamp (const QPointF &_pos)
 Stamp on stroke buffer with current brush at position x y. More...
 
float drawLine (QPointF const &_p0, QPointF const &_p1, float _leftOver=0.0)
 Draws a line on stroke buffer. More...
 
buffer_type const & strokeBuffer () const
 Returns stroke buffer (read only) More...
 
void resize (int width, int height)
 
void * strokeBufferData () const
 Return void* pointer to strokebuffer data, used for OpenGL Texture. More...
 
void toStream (QDataStream &) const
 Write blend mask to stream. More...
 
void fromStream (QDataStream &)
 Read blend mask from stream. More...
 

Static Public Member Functions

static constexpr int resolution ()
 Resolution of blend mask. More...
 

Private Member Functions

QPointF transformedPoint (QPointF const &) const
 Transform point from tuning coordinates to stroke buffer coordinates. More...
 
float borderValue (float _x, float _y) const
 Returns blend value for mask buffer at position x y. More...
 

Private Attributes

proj::Tuning const & tuning_
 
QRectF rect_
 
float gamma_
 
BlendBrush brush_
 
buffer_type strokeBuffer_
 

Friends

bool operator== (BlendMask const &, BlendMask const &)
 Test for equality, buffers are ignored. More...
 

Detailed Description

A blend mask consists of an edge mask and stroke mask with a brush Edge mask and stroke mask are stored in different buffers.

Member Typedef Documentation

Constructor & Destructor Documentation

omni::BlendMask::BlendMask ( proj::Tuning const &  _tuning)
27  :
28  tuning_(_tuning),
29  rect_(0.1, 0.1, 0.8, 0.9),
30  gamma_(2.0)
31  {
32  // Stroke buffer size is fixed to 1 mega pixel
34  }
proj::Tuning const & tuning_
Definition: BlendMask.h:129
float gamma_
Definition: BlendMask.h:131
buffer_type strokeBuffer_
Definition: BlendMask.h:133
QRectF rect_
Definition: BlendMask.h:130
void resize(int _width, int _height)
Resize buffer to given width and height.
Definition: Buffer.h:172
static constexpr int resolution()
Resolution of blend mask.
Definition: BlendMask.h:38

Member Function Documentation

float omni::BlendMask::borderValue ( float  _x,
float  _y 
) const
private

Returns blend value for mask buffer at position x y.

float omni::BlendMask::bottomWidth ( ) const

Returns distance to bottom edge.

57  {
58  return 1.0 - rect_.bottom();
59  }
QRectF rect_
Definition: BlendMask.h:130
BlendBrush const & omni::BlendMask::brush ( ) const

Return reference blend brush (const version)

105  {
106  return brush_;
107  }
BlendBrush brush_
Definition: BlendMask.h:132
float omni::BlendMask::brushSize ( ) const

Brush size for tuning.

109  {
110  return brush_.size().x() * tuning_.width() / float(resolution());
111  }
QVector2D const & size() const
Returns brush size.
Definition: BlendBrush.cpp:41
proj::Tuning const & tuning_
Definition: BlendMask.h:129
int width() const
Returns width of screen.
Definition: Tuning.cpp:187
static constexpr int resolution()
Resolution of blend mask.
Definition: BlendMask.h:38
BlendBrush brush_
Definition: BlendMask.h:132
void omni::BlendMask::changeBrushSize ( float  _delta)

Change brush size by +- amount of pixel.

98  {
99  float _size = qBound(30.0f, brushSize() + _delta, 512.0f);
100 
101  brush_.setSize(QVector2D(transformedPoint(QPointF(_size, _size))));
102  }
void setSize(QVector2D const &_size)
Sets size of the brush. Minimum size is 2 pixels, maximum size is 512 pixels.
Definition: BlendBrush.cpp:46
QPointF transformedPoint(QPointF const &) const
Transform point from tuning coordinates to stroke buffer coordinates.
Definition: BlendMask.cpp:142
float brushSize() const
Brush size for tuning.
Definition: BlendMask.cpp:109
BlendBrush brush_
Definition: BlendMask.h:132
void omni::BlendMask::clear ( )

Clears stroke buffer.

37  {
39  }
void clear()
Clear buffer with black color.
Definition: Buffer.h:149
buffer_type strokeBuffer_
Definition: BlendMask.h:133
float omni::BlendMask::drawLine ( QPointF const &  _p0,
QPointF const &  _p1,
float  _leftOver = 0.0 
)

Draws a line on stroke buffer.

Returns
new left over value
121  {
122  return brush_.drawLine(
123  transformedPoint(_p0),
124  transformedPoint(_p1), strokeBuffer_, _leftOver);
125  }
buffer_type strokeBuffer_
Definition: BlendMask.h:133
float drawLine(const QPointF &_p0, const QPointF &_p1, Buffer< uint8_t > &_buf, float _leftOver=0.0)
Draws a lot from point _p0 to _p1 on given pixel buffer.
Definition: BlendBrush.cpp:160
QPointF transformedPoint(QPointF const &) const
Transform point from tuning coordinates to stroke buffer coordinates.
Definition: BlendMask.cpp:142
BlendBrush brush_
Definition: BlendMask.h:132
void omni::BlendMask::fromStream ( QDataStream &  _is)

Read blend mask from stream.

157  {
158  PropertyMap _map;
159 
160  _is >> _map;
161  _map.get("rect", rect_);
162  _map.get("gamma", gamma_);
163  _map.get("brush", brush_);
164  _map.get("strokeBuffer", strokeBuffer_);
165  }
float gamma_
Definition: BlendMask.h:131
buffer_type strokeBuffer_
Definition: BlendMask.h:133
QRectF rect_
Definition: BlendMask.h:130
BlendBrush brush_
Definition: BlendMask.h:132
float omni::BlendMask::gamma ( ) const

Return gamma value.

79  {
80  return gamma_;
81  }
float gamma_
Definition: BlendMask.h:131
void omni::BlendMask::invertBrush ( bool  _invert)

Invert brush.

93  {
94  brush_.setInvert(_invert);
95  }
void setInvert(bool _invert)
Sets inverted flag of the brush.
Definition: BlendBrush.cpp:94
BlendBrush brush_
Definition: BlendMask.h:132
float omni::BlendMask::leftWidth ( ) const

Returns distance to left edge.

62  {
63  return rect_.left();
64  }
QRectF rect_
Definition: BlendMask.h:130
QRectF omni::BlendMask::rect ( ) const

Returns rectangle.

47  {
48  return rect_;
49  }
QRectF rect_
Definition: BlendMask.h:130
void omni::BlendMask::resize ( int  width,
int  height 
)
133  {
134  strokeBuffer_.resize(width, height);
135  }
buffer_type strokeBuffer_
Definition: BlendMask.h:133
void resize(int _width, int _height)
Resize buffer to given width and height.
Definition: Buffer.h:172
static constexpr int omni::BlendMask::resolution ( )
inlinestatic

Resolution of blend mask.

38  {
39  return 1024;
40  }
float omni::BlendMask::rightWidth ( ) const

Returns distance to right edge.

67  {
68  return 1.0 - rect_.right();
69  }
QRectF rect_
Definition: BlendMask.h:130
void omni::BlendMask::setBrush ( float  _size,
float  _feather,
float  _opacity,
bool  _invert 
)

Set blend brush settings.

85  {
86  _size = qBound(30.0f, _size, 512.0f);
87  brush_.setBrush(QVector2D(transformedPoint(QPointF(_size,
88  _size))), _feather, _opacity,
89  _invert);
90  }
QPointF transformedPoint(QPointF const &) const
Transform point from tuning coordinates to stroke buffer coordinates.
Definition: BlendMask.cpp:142
void setBrush(QVector2D const &_size, float _feather, float _opacity, bool _invert)
Set brush settings and generate pixel buffer.
Definition: BlendBrush.cpp:100
BlendBrush brush_
Definition: BlendMask.h:132
void omni::BlendMask::setGamma ( float  _gamma)

Sets gamma value for edge mask.

72  {
73  gamma_ = _gamma;
74 
75  if (gamma_ < 0.1) gamma_ = 0.1;
76  }
float gamma_
Definition: BlendMask.h:131
void omni::BlendMask::setRect ( QRectF const &  _rect)

Sets rect of blends Clamps rect to borders 0,0,1,1 if its overlapping.

42  {
43  rect_ = _rect;
44  }
QRectF rect_
Definition: BlendMask.h:130
void omni::BlendMask::stamp ( const QPointF &  _pos)

Stamp on stroke buffer with current brush at position x y.

114  {
116  }
buffer_type strokeBuffer_
Definition: BlendMask.h:133
void stamp(const QPointF &_pos, Buffer< uint8_t > &_buf) const
Draws internal pixel buffer in given blend buffer.
Definition: BlendBrush.cpp:124
QPointF transformedPoint(QPointF const &) const
Transform point from tuning coordinates to stroke buffer coordinates.
Definition: BlendMask.cpp:142
BlendBrush brush_
Definition: BlendMask.h:132
BlendMask::buffer_type const & omni::BlendMask::strokeBuffer ( ) const

Returns stroke buffer (read only)

128  {
129  return strokeBuffer_;
130  }
buffer_type strokeBuffer_
Definition: BlendMask.h:133
void * omni::BlendMask::strokeBufferData ( ) const

Return void* pointer to strokebuffer data, used for OpenGL Texture.

138  {
139  return (void *)(strokeBuffer_.data().data());
140  }
data_type const & data() const
Return const reference to data.
Definition: Buffer.h:143
buffer_type strokeBuffer_
Definition: BlendMask.h:133
float omni::BlendMask::topWidth ( ) const

Returns distance to top edge.

52  {
53  return rect_.top();
54  }
QRectF rect_
Definition: BlendMask.h:130
void omni::BlendMask::toStream ( QDataStream &  _os) const

Write blend mask to stream.

147  {
148  omni::PropertyMap _map;
149 
150  _map("rect", rect_)
151  ("gamma", gamma_)
152  ("brush", brush_)
153  ("strokeBuffer", strokeBuffer_);
154  _os << _map;
155  }
float gamma_
Definition: BlendMask.h:131
buffer_type strokeBuffer_
Definition: BlendMask.h:133
QRectF rect_
Definition: BlendMask.h:130
BlendBrush brush_
Definition: BlendMask.h:132
QPointF omni::BlendMask::transformedPoint ( QPointF const &  _pos) const
private

Transform point from tuning coordinates to stroke buffer coordinates.

142  {
143  return float(resolution()) * QPointF(_pos.x() / tuning_.width(),
144  _pos.y() / tuning_.height());
145  }
proj::Tuning const & tuning_
Definition: BlendMask.h:129
int height() const
Returns height of screen.
Definition: Tuning.cpp:192
int width() const
Returns width of screen.
Definition: Tuning.cpp:187
static constexpr int resolution()
Resolution of blend mask.
Definition: BlendMask.h:38

Friends And Related Function Documentation

bool operator== ( BlendMask const &  _lhs,
BlendMask const &  _rhs 
)
friend

Test for equality, buffers are ignored.

168  {
169  return
174  }
float gamma_
Definition: BlendMask.h:131
buffer_type strokeBuffer_
Definition: BlendMask.h:133
QRectF rect_
Definition: BlendMask.h:130
#define OMNI_TEST_MEMBER_EQUAL(member)
Definition: util.h:125
BlendBrush brush_
Definition: BlendMask.h:132

Field Documentation

BlendBrush omni::BlendMask::brush_
private
float omni::BlendMask::gamma_
private
QRectF omni::BlendMask::rect_
private
buffer_type omni::BlendMask::strokeBuffer_
private
proj::Tuning const& omni::BlendMask::tuning_
private

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