roo_display
API Documentation for roo_display
Loading...
Searching...
No Matches
roo_display::Rasterizable Class Referenceabstract

Drawable that can provide a color for any point within its extents. More...

#include <rasterizable.h>

Inheritance diagram for roo_display::Rasterizable:
[legend]
Collaboration diagram for roo_display::Rasterizable:
[legend]

Public Member Functions

virtual void readColors (const int16_t *x, const int16_t *y, uint32_t count, Color *result) const =0
 Read colors for the given points.
 
void readColorsMaybeOutOfBounds (const int16_t *x, const int16_t *y, uint32_t count, Color *result, Color out_of_bounds_color=color::Transparent) const
 Read colors for points that may be out of bounds.
 
virtual bool readColorRect (int16_t xMin, int16_t yMin, int16_t xMax, int16_t yMax, Color *result) const
 Read colors for a rectangle.
 
std::unique_ptr< PixelStreamcreateStream () const override
 Default createStream() using readColors().
 
std::unique_ptr< PixelStreamcreateStream (const Box &bounds) const override
 Default createStream() for a clipped box using readColors().
 
- Public Member Functions inherited from roo_display::Streamable
virtual TransparencyMode getTransparencyMode () const
 Return the transparency mode for pixels in this stream.
 
- Public Member Functions inherited from roo_display::Drawable
virtual ~Drawable ()
 
virtual Box extents () const =0
 Return the bounding box encompassing all pixels that need to be drawn.
 
virtual Box anchorExtents () const
 Return the bounds used for alignment.
 

Protected Member Functions

void drawTo (const Surface &s) const override
 Default drawTo() using readColors().
 

Additional Inherited Members

- Static Public Member Functions inherited from roo_display::Drawable
static const DrawableEmpty ()
 A singleton representing a no-op drawable with no bounding box.
 

Detailed Description

Drawable that can provide a color for any point within its extents.

Rasterizables can be used as overlays, backgrounds, and filters. A Rasterizable is also a Streamable. The minimum requirement is to implement readColors(). If your class can stream pixels or draw more efficiently than per-pixel access, override createStream() and/or drawTo(). If large areas share the same color, override readColorRect() to improve performance.

Definition at line 19 of file rasterizable.h.

Member Function Documentation

◆ createStream() [1/2]

std::unique_ptr< PixelStream > roo_display::Rasterizable::createStream ( ) const
overridevirtual

Default createStream() using readColors().

Implements roo_display::Streamable.

Definition at line 134 of file rasterizable.cpp.

References roo_display::Drawable::extents().

◆ createStream() [2/2]

std::unique_ptr< PixelStream > roo_display::Rasterizable::createStream ( const Box bounds) const
overridevirtual

Default createStream() for a clipped box using readColors().

Implements roo_display::Streamable.

Definition at line 138 of file rasterizable.cpp.

◆ drawTo()

void roo_display::Rasterizable::drawTo ( const Surface s) const
overrideprotectedvirtual

◆ readColorRect()

◆ readColors()

◆ readColorsMaybeOutOfBounds()

void roo_display::Rasterizable::readColorsMaybeOutOfBounds ( const int16_t x,
const int16_t y,
uint32_t  count,
Color result,
Color  out_of_bounds_color = color::Transparent 
) const

Read colors for points that may be out of bounds.

Out-of-bounds points are set to out_of_bounds_color.

Definition at line 59 of file rasterizable.cpp.

References roo_display::Box::contains(), roo_display::Drawable::extents(), and readColors().

Referenced by roo_display::BlendingFilter< Blender >::fill(), and roo_display::BlendingFilter< Blender >::write().


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