roo_display
API Documentation for roo_display
Loading...
Searching...
No Matches
roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type > Class Template Reference

Offscreen rasterizable that writes into a pixel buffer. More...

#include <offscreen.h>

Inheritance diagram for roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >:
[legend]
Collaboration diagram for roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >:
[legend]

Public Types

using RasterType = Raster< const roo::byte *, ColorMode, pixel_order, byte_order >
 

Public Member Functions

 Offscreen (int16_t width, int16_t height, roo::byte *buffer, ColorMode color_mode=ColorMode())
 Create an offscreen with the given geometry and buffer.
 
 Offscreen (int16_t width, int16_t height, uint8_t *buffer, ColorMode color_mode=ColorMode())
 
 Offscreen (Box extents, roo::byte *buffer, ColorMode color_mode=ColorMode())
 
 Offscreen (int16_t width, int16_t height, ColorMode color_mode=ColorMode())
 
 Offscreen (Box extents, ColorMode color_mode=ColorMode())
 
 Offscreen (int16_t width, int16_t height, Color fillColor, ColorMode color_mode=ColorMode())
 
 Offscreen (Box extents, Color fillColor, ColorMode color_mode=ColorMode())
 
 Offscreen (const Drawable &d, ColorMode color_mode=ColorMode())
 
 Offscreen (const Drawable &d, Color bgColor, ColorMode color_mode=ColorMode())
 
virtual ~Offscreen ()
 
 Offscreen (Offscreen &&other) noexcept
 
const RasterTyperaster () const
 
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.
 
void setAnchorExtents (Box anchor_extents)
 
TransparencyMode getTransparencyMode () const override
 Return the transparency mode for pixels in this stream.
 
void readColors (const int16_t *x, const int16_t *y, uint32_t count, Color *result) const override
 Read colors for the given points.
 
const OffscreenDevice< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type > & output () const
 
OffscreenDevice< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type > & output ()
 
roo::byte * buffer ()
 
const roo::byte * buffer () const
 
const ColorMode & color_mode () 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.
 
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::Drawable
virtual ~Drawable ()
 

Protected Member Functions

void set_extents (const Box &extents)
 
- Protected Member Functions inherited from roo_display::Rasterizable
void drawTo (const Surface &s) const override
 Default drawTo() using readColors().
 

Friends

class DrawingContext
 

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

template<typename ColorMode, ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
class roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >

Offscreen rasterizable that writes into a pixel buffer.

Example:

dc.draw(...);
Primary top-level interface for drawing to screens, off-screen buffers, or other devices.

Definition at line 491 of file offscreen.h.

Member Typedef Documentation

◆ RasterType

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
using roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::RasterType = Raster<const roo::byte*, ColorMode, pixel_order, byte_order>

Definition at line 493 of file offscreen.h.

Constructor & Destructor Documentation

◆ Offscreen() [1/10]

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::Offscreen ( int16_t  width,
int16_t  height,
roo::byte *  buffer,
ColorMode  color_mode = ColorMode() 
)
inline

Create an offscreen with the given geometry and buffer.

The buffer must have capacity $(width * height * ColorMode::bits_per_pixel + 7) / 8$ bytes. The buffer is not modified on construction.

Definition at line 501 of file offscreen.h.

◆ Offscreen() [2/10]

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::Offscreen ( int16_t  width,
int16_t  height,
uint8_t buffer,
ColorMode  color_mode = ColorMode() 
)
inline

Definition at line 506 of file offscreen.h.

◆ Offscreen() [3/10]

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::Offscreen ( Box  extents,
roo::byte *  buffer,
ColorMode  color_mode = ColorMode() 
)
inline

Definition at line 514 of file offscreen.h.

◆ Offscreen() [4/10]

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::Offscreen ( int16_t  width,
int16_t  height,
ColorMode  color_mode = ColorMode() 
)
inline

Definition at line 524 of file offscreen.h.

◆ Offscreen() [5/10]

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::Offscreen ( Box  extents,
ColorMode  color_mode = ColorMode() 
)
inline

◆ Offscreen() [6/10]

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::Offscreen ( int16_t  width,
int16_t  height,
Color  fillColor,
ColorMode  color_mode = ColorMode() 
)
inline

Definition at line 547 of file offscreen.h.

◆ Offscreen() [7/10]

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::Offscreen ( Box  extents,
Color  fillColor,
ColorMode  color_mode = ColorMode() 
)
inline

◆ Offscreen() [8/10]

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::Offscreen ( const Drawable d,
ColorMode  color_mode = ColorMode() 
)
inline

Definition at line 560 of file offscreen.h.

References color.

◆ Offscreen() [9/10]

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::Offscreen ( const Drawable d,
Color  bgColor,
ColorMode  color_mode = ColorMode() 
)
inline

◆ ~Offscreen()

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
virtual roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::~Offscreen ( )
inlinevirtual

◆ Offscreen() [10/10]

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::Offscreen ( Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type > &&  other)
inlinenoexcept

Definition at line 581 of file offscreen.h.

Member Function Documentation

◆ anchorExtents()

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
Box roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::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 593 of file offscreen.h.

◆ buffer() [1/2]

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
roo::byte * roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::buffer ( )
inline

◆ buffer() [2/2]

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
const roo::byte * roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::buffer ( ) const
inline

◆ color_mode()

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
const ColorMode & roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::color_mode ( ) const
inline

◆ extents()

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
Box roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::extents ( ) const
inlineoverridevirtual

◆ getTransparencyMode()

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
TransparencyMode roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::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 599 of file offscreen.h.

References roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::raster().

◆ output() [1/2]

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
OffscreenDevice< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type > & roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::output ( )
inline

Definition at line 616 of file offscreen.h.

◆ output() [2/2]

◆ raster()

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
const RasterType & roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::raster ( ) const
inline

◆ readColors()

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
void roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::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 603 of file offscreen.h.

References roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::raster().

◆ set_extents()

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
void roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::set_extents ( const Box extents)
inlineprotected

◆ setAnchorExtents()

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
void roo_display::Offscreen< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >::setAnchorExtents ( Box  anchor_extents)
inline

Friends And Related Symbol Documentation

◆ DrawingContext

template<typename ColorMode , ColorPixelOrder pixel_order = ColorPixelOrder::kMsbFirst, ByteOrder byte_order = roo_io::kBigEndian, int8_t pixels_per_byte = ColorTraits<ColorMode>::pixels_per_byte, typename storage_type = ColorStorageType<ColorMode>>
friend class DrawingContext
friend

Definition at line 632 of file offscreen.h.


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