21 #include "GraphSubset.h" 47 inline Scalar(T& t) : ref(t)
59 template<
typename Pixel>
63 typedef Pixel* PixelPtr;
64 typedef Pixel& PixelRef;
67 const PixelPtr _orgin;
76 _range_base(s._range_base),
77 _range_domain(s.getDomain()),
93 inline ShaderBase(std::vector<Pixel>& f,
int max_x,
int max_y):
95 _range_base(max_x, max_y),
96 _range_domain(max_x, max_y),
102 inline PixelPtr ptr()
const 106 inline int pitch()
const 111 inline void setDomain(
const GraphSubset& g)
113 _range_domain = GraphSubset::intersection(g, _range_base);
115 inline const GraphSubset& getDomain()
const 117 return _range_domain;
119 inline const GraphSubset& getBaseDomain()
const 124 inline const GraphSubset& getImage()
const 126 return _range_domain;
135 template<
typename Pixel>
139 typedef const Pixel* PixelPtr;
140 typedef const Pixel& PixelRef;
143 const PixelPtr _orgin;
152 _range_base(s.getBaseDomain()),
153 _range_domain(s.getDomain()),
162 _range_base(s.getBaseDomain()),
163 _range_domain(s.getDomain()),
179 inline ShaderBase(
const std::vector<Pixel>& f,
int max_x,
int max_y):
181 _range_base(max_x, max_y),
182 _range_domain(max_x, max_y),
188 inline PixelPtr ptr()
const 192 inline int pitch()
const 197 inline void setDomain(
const GraphSubset& g)
199 _range_domain = GraphSubset::intersection(g, _range_base);
201 inline const GraphSubset& getDomain()
const 203 return _range_domain;
205 inline const GraphSubset& getBaseDomain()
const 210 inline const GraphSubset& getImage()
const 212 return _range_domain;
226 typedef Uint8* PixelPtr;
227 typedef Uint8& PixelRef;
230 const PixelPtr _orgin;
239 _range_base(s.getBaseDomain()),
240 _range_domain(s.getDomain()),
254 _orgin((Uint8*) s->getSurface()->pixels),
255 _range_base(s->getWidth(), s->getHeight()),
256 _range_domain(s->getWidth(), s->getHeight()),
257 _pitch(s->getSurface()->pitch)
272 inline ShaderBase(std::vector<Uint8>& f,
int max_x,
int max_y):
274 _range_base(max_x, max_y),
275 _range_domain(max_x, max_y),
281 inline PixelPtr ptr()
const 285 inline int pitch()
const 290 inline void setDomain(
const GraphSubset& g)
292 _range_domain = GraphSubset::intersection(g, _range_base);
294 inline const GraphSubset& getDomain()
const 296 return _range_domain;
298 inline const GraphSubset& getBaseDomain()
const 303 inline const GraphSubset& getImage()
const 305 return _range_domain;
319 typedef const Uint8* PixelPtr;
320 typedef const Uint8& PixelRef;
323 const PixelPtr _orgin;
332 _range_base(s.getBaseDomain()),
333 _range_domain(s.getDomain()),
342 _range_base(s.getBaseDomain()),
343 _range_domain(s.getDomain()),
357 _orgin((Uint8*) s->getSurface()->pixels),
358 _range_base(s->getWidth(), s->getHeight()),
359 _range_domain(s->getWidth(), s->getHeight()),
360 _pitch(s->getSurface()->pitch)
375 inline ShaderBase(
const std::vector<Uint8>& f,
int max_x,
int max_y):
377 _range_base(max_x, max_y),
378 _range_domain(max_x, max_y),
384 inline PixelPtr ptr()
const 388 inline int pitch()
const 393 inline void setDomain(
const GraphSubset& g)
395 _range_domain = GraphSubset::intersection(g, _range_base);
397 inline const GraphSubset& getDomain()
const 399 return _range_domain;
401 inline const GraphSubset& getBaseDomain()
const 406 inline const GraphSubset& getImage()
const 408 return _range_domain;
415 template<
typename SurfaceType>
439 inline void mod_y(
int& begin,
int& end);
440 inline void set_y(
const int& begin,
const int& end);
444 inline void mod_x(
int& begin,
int& end);
445 inline void set_x(
const int& begin,
const int& end);
448 inline int& get_ref();
474 inline void mod_y(
int&,
int&)
478 inline void set_y(
const int&,
const int&)
488 inline void mod_x(
int&,
int&)
492 inline void set_x(
const int&,
const int&)
529 inline void mod_y(
int&,
int&)
533 inline void set_y(
const int&,
const int&)
542 inline void mod_x(
int&,
int&)
546 inline void set_x(
const int&,
const int&)
555 inline const int& get_ref()
561 template<
typename PixelPtr,
typename PixelRef>
572 const std::pair<int, int> step;
576 data(base + d.beg_x*s.first + d.beg_y*s.second),
577 ptr_pos_y(0), ptr_pos_x(0),
579 start_x(), start_y(),
593 r = GraphSubset::intersection(range, r);
598 start_x = r.beg_x - range.beg_x;
599 start_y = r.beg_y - range.beg_y;
603 inline void mod_y(
int&,
int&)
605 ptr_pos_y = data + step.first * start_x + step.second * start_y;
607 inline void set_y(
const int& begin,
const int&)
609 ptr_pos_y += step.second*begin;
613 ptr_pos_y += step.second;
617 inline void mod_x(
int&,
int&)
619 ptr_pos_x = ptr_pos_y;
621 inline void set_x(
const int& begin,
const int&)
623 ptr_pos_x += step.first*begin;
627 ptr_pos_x += step.first;
630 inline PixelRef get_ref()
638 template<
typename Pixel>
641 typedef typename ShaderBase<Pixel>::PixelPtr PixelPtr;
642 typedef typename ShaderBase<Pixel>::PixelRef PixelRef;
helper class for handling implementation differences in different surfaces types Used in function Sha...
Definition: ShaderDrawHelper.h:416
ShaderBase(const ShaderBase< Pixel > &s)
copy constructor
Definition: ShaderDrawHelper.h:160
ShaderBase(const ShaderBase &s)
copy constructor
Definition: ShaderDrawHelper.h:74
ShaderBase(Surface *s)
create surface using surface s as data source.
Definition: ShaderDrawHelper.h:253
const GraphSubset & get_range()
function used only when SurfaceType can be used as destination surface if that type should not be use...
ShaderBase(std::vector< Pixel > &f, int max_x, int max_y)
create surface using vector f as data source.
Definition: ShaderDrawHelper.h:93
ShaderBase(const std::vector< Pixel > &f, int max_x, int max_y)
create surface using vector f as data source.
Definition: ShaderDrawHelper.h:179
ShaderBase(const ShaderBase< Uint8 > &s)
copy constructor
Definition: ShaderDrawHelper.h:340
ShaderBase(const ShaderBase &s)
copy constructor
Definition: ShaderDrawHelper.h:330
This is surface argument to ShaderDraw.
Definition: ShaderDrawHelper.h:223
void set_range(const GraphSubset &g)
set final drawing range.
ShaderBase(const ShaderBase &s)
copy constructor
Definition: ShaderDrawHelper.h:237
ShaderBase(const ShaderBase &s)
copy constructor
Definition: ShaderDrawHelper.h:150
This is empty argument to ShaderDraw.
Definition: ShaderDrawHelper.h:33
Element that is blit (rendered) onto the screen.
Definition: Surface.h:38
Definition: GraphSubset.h:32
This is surface argument to ShaderDraw.
Definition: ShaderDrawHelper.h:60
This is scalar argument to ShaderDraw.
Definition: ShaderDrawHelper.h:43
ShaderBase(std::vector< Uint8 > &f, int max_x, int max_y)
create surface using vector f as data source.
Definition: ShaderDrawHelper.h:272
ShaderBase(const Surface *s)
create surface using surface s as data source.
Definition: ShaderDrawHelper.h:356
Definition: ShaderDrawHelper.h:562
void mod_range(GraphSubset &g)
function used only when SurfaceType is used as source surface.
ShaderBase(const std::vector< Uint8 > &f, int max_x, int max_y)
create surface using vector f as data source.
Definition: ShaderDrawHelper.h:375
Definition: BaseInfoState.cpp:40