roo_display
API Documentation for roo_display
Loading...
Searching...
No Matches
roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order > Class Template Reference

Non-owning raster view over a pixel buffer. More...

#include <raster.h>

Inheritance diagram for roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >:
[legend]
Collaboration diagram for roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >:
[legend]

Public Types

using ColorMode = ColorModeT
 
using PtrType = typename internal::PtrTypeResolver< PtrTypeT >::PtrType
 
using StreamType = RasterPixelStream< roo_io::UnsafeGenericMemoryIterable< PtrType >, ColorMode, pixel_order, byte_order >
 
using Reader = internal::Reader< ColorMode, pixel_order, byte_order >
 

Public Member Functions

 Raster (int16_t width, int16_t height, PtrTypeT ptr, const ColorMode &color_mode=ColorMode())
 Construct a raster for a width/height buffer.
 
 Raster (int16_t width, int16_t height, Box extents, PtrTypeT ptr, const ColorMode &color_mode=ColorMode())
 Construct a raster with custom extents and buffer dimensions.
 
 Raster (Box extents, PtrTypeT ptr, const ColorMode &color_mode=ColorMode())
 Construct a raster with extents and a buffer pointer.
 
 Raster (Box extents, Box anchor_extents, PtrTypeT ptr, const ColorMode &color_mode=ColorMode())
 Construct a raster with extents and anchor extents.
 
Box extents () const override
 Return the bounding box encompassing all pixels that need to be drawn.
 
Box anchorExtents () const override
 Return the bounds used for alignment.
 
ColorModecolor_mode ()
 
const ColorModecolor_mode () const
 
std::unique_ptr< StreamTypecreateRawStream () const
 
std::unique_ptr< PixelStreamcreateStream () const override
 Create a stream covering the full extents().
 
std::unique_ptr< PixelStreamcreateStream (const Box &bounds) const override
 Create a stream for the given clipped bounds.
 
void readColors (const int16_t *x, const int16_t *y, uint32_t count, Color *result) const override
 Read colors for the given points.
 
bool readColorRect (int16_t xMin, int16_t yMin, int16_t xMax, int16_t yMax, Color *result) const override
 Read colors for a rectangle.
 
TransparencyMode getTransparencyMode () const override
 Return the transparency mode for pixels in this stream.
 
TransparencyMode transparency () const
 
Color get (int16_t x, int16_t y) const
 
const PtrType buffer () const
 
- Public Member Functions inherited from roo_display::Rasterizable
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.
 
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::Drawable
virtual ~Drawable ()
 

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.
 
- Protected Member Functions inherited from roo_display::Rasterizable
void drawTo (const Surface &s) const override
 Default drawTo() using readColors().
 

Detailed Description

template<typename PtrTypeT, typename ColorModeT, ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
class roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >

Non-owning raster view over a pixel buffer.

The raster representation is small and can be passed by value. Prefer using DramRaster, ConstDramRaster, or ProgMemRaster aliases instead of this template directly.

Definition at line 220 of file raster.h.

Member Typedef Documentation

◆ ColorMode

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
using roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::ColorMode = ColorModeT

Definition at line 222 of file raster.h.

◆ PtrType

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
using roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::PtrType = typename internal::PtrTypeResolver<PtrTypeT>::PtrType

Definition at line 223 of file raster.h.

◆ Reader

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
using roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::Reader = internal::Reader<ColorMode, pixel_order, byte_order>

Definition at line 229 of file raster.h.

◆ StreamType

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
using roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::StreamType = RasterPixelStream<roo_io::UnsafeGenericMemoryIterable<PtrType>, ColorMode, pixel_order, byte_order>

Definition at line 225 of file raster.h.

Constructor & Destructor Documentation

◆ Raster() [1/4]

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::Raster ( int16_t  width,
int16_t  height,
PtrTypeT  ptr,
const ColorMode color_mode = ColorMode() 
)
inline

Construct a raster for a width/height buffer.

Definition at line 232 of file raster.h.

◆ Raster() [2/4]

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::Raster ( int16_t  width,
int16_t  height,
Box  extents,
PtrTypeT  ptr,
const ColorMode color_mode = ColorMode() 
)
inline

Construct a raster with custom extents and buffer dimensions.

Definition at line 238 of file raster.h.

◆ Raster() [3/4]

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::Raster ( Box  extents,
PtrTypeT  ptr,
const ColorMode color_mode = ColorMode() 
)
inline

Construct a raster with extents and a buffer pointer.

Definition at line 244 of file raster.h.

◆ Raster() [4/4]

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::Raster ( Box  extents,
Box  anchor_extents,
PtrTypeT  ptr,
const ColorMode color_mode = ColorMode() 
)
inline

Construct a raster with extents and anchor extents.

Definition at line 248 of file raster.h.

Member Function Documentation

◆ anchorExtents()

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
Box roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::anchorExtents ( ) const
inlineoverridevirtual

Return the bounds used for alignment.

Defaults to extents(). Some drawables (notably text labels) may want different alignment bounds.

This method is called during a transaction and must not block or perform I/O.

Reimplemented from roo_display::Drawable.

Definition at line 258 of file raster.h.

◆ buffer()

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
const PtrType roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::buffer ( ) const
inline

Definition at line 330 of file raster.h.

◆ color_mode() [1/2]

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
ColorMode & roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::color_mode ( )
inline

Definition at line 260 of file raster.h.

Referenced by roo_display::MakeTiledRaster(), and roo_display::MakeTiledRaster().

◆ color_mode() [2/2]

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
const ColorMode & roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::color_mode ( ) const
inline

Definition at line 261 of file raster.h.

◆ createRawStream()

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
std::unique_ptr< StreamType > roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::createRawStream ( ) const
inline

Definition at line 263 of file raster.h.

◆ createStream() [1/2]

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
std::unique_ptr< PixelStream > roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::createStream ( ) const
inlineoverridevirtual

Create a stream covering the full extents().

Implements roo_display::Streamable.

Definition at line 268 of file raster.h.

◆ createStream() [2/2]

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
std::unique_ptr< PixelStream > roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::createStream ( const Box clip_box) const
inlineoverridevirtual

Create a stream for the given clipped bounds.

Implements roo_display::Streamable.

Definition at line 273 of file raster.h.

References roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::extents(), and roo_display::SubRectangle().

◆ extents()

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
Box roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::extents ( ) const
inlineoverridevirtual

Return the bounding box encompassing all pixels that need to be drawn.

This method is called during a transaction and must not block or perform I/O.

Implements roo_display::Drawable.

Definition at line 256 of file raster.h.

Referenced by roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::createStream(), roo_display::MakeTiledRaster(), and roo_display::MakeTiledRaster().

◆ get()

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
Color roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::get ( int16_t  x,
int16_t  y 
) const
inline

Definition at line 324 of file raster.h.

References roo_display::Box::xMin(), and roo_display::Box::yMin().

◆ getTransparencyMode()

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
TransparencyMode roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::getTransparencyMode ( ) const
inlineoverridevirtual

Return the transparency mode for pixels in this stream.

This is an optimization hint. The default is TransparencyMode::kFull, which is always safe. If pixels are guaranteed fully opaque or 1-bit alpha, return TransparencyMode::kNone or TransparencyMode::kCrude to enable faster blending paths.

Reimplemented from roo_display::Streamable.

Definition at line 318 of file raster.h.

References roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::transparency().

◆ readColorRect()

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
bool roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::readColorRect ( int16_t  xMin,
int16_t  yMin,
int16_t  xMax,
int16_t  yMax,
Color result 
) const
inlineoverridevirtual

Read colors for a rectangle.

Returns true if all colors are identical (then only result[0] is valid). The caller must ensure the rectangle is within bounds.

Reimplemented from roo_display::Rasterizable.

Definition at line 290 of file raster.h.

References roo_display::Box::xMin(), and roo_display::Box::yMin().

◆ readColors()

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
void roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::readColors ( const int16_t x,
const int16_t y,
uint32_t  count,
Color result 
) const
inlineoverridevirtual

Read colors for the given points.

The caller must ensure all points are within bounds.

Implements roo_display::Rasterizable.

Definition at line 280 of file raster.h.

References roo_display::Box::xMin(), and roo_display::Box::yMin().

◆ transparency()

template<typename PtrTypeT , typename ColorModeT , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian>
TransparencyMode roo_display::Raster< PtrTypeT, ColorModeT, pixel_order, byte_order >::transparency ( ) const
inline

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