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

The abstraction for drawing to a display. More...

#include <device.h>

Inheritance diagram for roo_display::DisplayOutput:
[legend]

Data Structures

class  ColorFormat
 

Public Member Functions

virtual ~DisplayOutput ()
 
virtual void begin ()
 Enter a write transaction.
 
virtual void end ()
 Finalize the previously entered write transaction, flushing any pending writes.
 
virtual void flush ()
 Wait until pending asynchronous drawing operations complete.
 
void setAddress (const Box &bounds, BlendingMode blending_mode)
 Convenience overload for setAddress() using a Box.
 
virtual void setAddress (uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, BlendingMode blending_mode)=0
 Set a rectangular window filled by subsequent calls to write().
 
virtual void write (Color *color, uint32_t pixel_count)=0
 Write pixels into the current address window.
 
virtual void fill (Color color, uint32_t pixel_count)
 Write pixel_count copies of the same color into the current address window.
 
virtual void writePixels (BlendingMode blending_mode, Color *color, int16_t *x, int16_t *y, uint16_t pixel_count)=0
 Draw the specified pixels (per-pixel colors). Invalidates the address window.
 
virtual void fillPixels (BlendingMode blending_mode, Color color, int16_t *x, int16_t *y, uint16_t pixel_count)=0
 Draw the specified pixels using the same color. Invalidates the address window.
 
virtual void writeRects (BlendingMode blending_mode, Color *color, int16_t *x0, int16_t *y0, int16_t *x1, int16_t *y1, uint16_t count)=0
 Draw the specified rectangles (per-rectangle colors). Invalidates the address window.
 
virtual void fillRects (BlendingMode blending_mode, Color color, int16_t *x0, int16_t *y0, int16_t *x1, int16_t *y1, uint16_t count)=0
 Draw the specified rectangles using the same color. Invalidates the address window.
 
void fillRect (BlendingMode blending_mode, const Box &rect, Color color)
 Fill a single rectangle. Invalidates the address window.
 
void fillRect (BlendingMode blending_mode, int16_t x0, int16_t y0, int16_t x1, int16_t y1, Color color)
 Fill a single rectangle. Invalidates the address window.
 
void fillRect (int16_t x0, int16_t y0, int16_t x1, int16_t y1, Color color)
 Fill a single rectangle using BlendingMode::kSource.
 
virtual const ColorFormatgetColorFormat () const =0
 Return the native color format used by this device for direct drawing.
 
virtual void drawDirectRect (const roo::byte *data, size_t row_width_bytes, int16_t src_x0, int16_t src_y0, int16_t src_x1, int16_t src_y1, int16_t dst_x0, int16_t dst_y0)
 Draw a rectangle represented in the device's native color format.
 
virtual void drawDirectRectAsync (const roo::byte *data, size_t row_width_bytes, int16_t src_x0, int16_t src_y0, int16_t src_x1, int16_t src_y1, int16_t dst_x0, int16_t dst_y0)
 Asynchronous variant of drawDirectRect().
 

Detailed Description

The abstraction for drawing to a display.

Definition at line 15 of file device.h.

Constructor & Destructor Documentation

◆ ~DisplayOutput()

virtual roo_display::DisplayOutput::~DisplayOutput ( )
inlinevirtual

Definition at line 19 of file device.h.

Member Function Documentation

◆ begin()

virtual void roo_display::DisplayOutput::begin ( )
inlinevirtual

◆ drawDirectRect()

void roo_display::DisplayOutput::drawDirectRect ( const roo::byte *  data,
size_t  row_width_bytes,
int16_t  src_x0,
int16_t  src_y0,
int16_t  src_x1,
int16_t  src_y1,
int16_t  dst_x0,
int16_t  dst_y0 
)
virtual

Draw a rectangle represented in the device's native color format.

Source data pointer correspond to the (0, 0) point in the source coordinate system, with stride of row_width_bytes. The source rectangle at (src_x0, src_y0, src_x1, src_y1) relative to the data pointer, gets copied to the destination rectangle with top-left corner at (dst_x0, dst_y0). The caller must ensure that the destination rectangle fits within the device's bounds.

The default implementation processes the rectangle by small tiles, converting the data to an array of regular colors, and calling regular window functions to draw them. Specific devices can override this method to provide a more efficient implementation that draws directly from the source data.

Reimplemented in roo_display::OffscreenDevice< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >, roo_display::OffscreenDevice< ColorMode, ColorPixelOrder::kMsbFirst, roo_io::kBigEndian, ColorTraits< ColorMode >::pixels_per_byte, ColorStorageType< ColorMode > >, roo_display::OffscreenDevice< Monochrome, ColorPixelOrder::kMsbFirst, roo_io::kBigEndian, ColorTraits< Monochrome >::pixels_per_byte, ColorStorageType< Monochrome > >, roo_display::OffscreenDevice< typename Target::ColorMode >, roo_display::AddrWindowDevice< Target >, roo_display::AddrWindowDevice< pinLcdCs, pinLcdDc, -1 >, roo_display::BufferedAddrWindowDevice< Target >, roo_display::BackgroundFillOptimizer, roo_display::BackgroundFillOptimizerDevice, roo_display::BlendingFilter< Blender >, roo_display::RectUnionFilter, roo_display::ClipMaskFilter, roo_display::ColorFilter< Filter >, and roo_display::ColorFilter< Erasure >.

Definition at line 33 of file device.cpp.

References getColorFormat(), roo_display::kSource, setAddress(), and write().

Referenced by roo_display::AddrWindowDevice< Target >::drawDirectRect(), roo_display::BackgroundFillOptimizer::drawDirectRect(), roo_display::BlendingFilter< Blender >::drawDirectRect(), roo_display::RectUnionFilter::drawDirectRect(), roo_display::ClipMaskFilter::drawDirectRect(), roo_display::ColorFilter< Filter >::drawDirectRect(), roo_display::ColorFilter< Erasure >::drawDirectRect(), and drawDirectRectAsync().

◆ drawDirectRectAsync()

void roo_display::DisplayOutput::drawDirectRectAsync ( const roo::byte *  data,
size_t  row_width_bytes,
int16_t  src_x0,
int16_t  src_y0,
int16_t  src_x1,
int16_t  src_y1,
int16_t  dst_x0,
int16_t  dst_y0 
)
virtual

◆ end()

◆ fill()

void roo_display::DisplayOutput::fill ( Color  color,
uint32_t  pixel_count 
)
virtual

◆ fillPixels()

virtual void roo_display::DisplayOutput::fillPixels ( BlendingMode  blending_mode,
Color  color,
int16_t x,
int16_t y,
uint16_t  pixel_count 
)
pure virtual

Draw the specified pixels using the same color. Invalidates the address window.

Parameters
blending_modeBlending mode used for drawing.
colorThe color to use for all pixels.
xPointer to x-coordinates for each pixel.
yPointer to y-coordinates for each pixel.
pixel_countNumber of pixels.

Implemented in roo_display::ColorFilter< Filter >, roo_display::ColorFilter< Erasure >, roo_display::AddrWindowDevice< Target >, roo_display::AddrWindowDevice< pinLcdCs, pinLcdDc, -1 >, roo_display::OffscreenDevice< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >, roo_display::OffscreenDevice< ColorMode, ColorPixelOrder::kMsbFirst, roo_io::kBigEndian, ColorTraits< ColorMode >::pixels_per_byte, ColorStorageType< ColorMode > >, roo_display::OffscreenDevice< Monochrome, ColorPixelOrder::kMsbFirst, roo_io::kBigEndian, ColorTraits< Monochrome >::pixels_per_byte, ColorStorageType< Monochrome > >, roo_display::OffscreenDevice< typename Target::ColorMode >, roo_display::BackgroundFillOptimizer, roo_display::BackgroundFillOptimizerDevice, roo_display::BlendingFilter< Blender >, roo_display::RectUnionFilter, roo_display::ClipMaskFilter, roo_display::FrontToBackWriter, roo_display::TransformedDisplayOutput, and roo_display::BufferedAddrWindowDevice< Target >.

Referenced by roo_display::ColorFilter< Filter >::fillPixels(), roo_display::ColorFilter< Erasure >::fillPixels(), roo_display::BackgroundFillOptimizer::fillPixels(), roo_display::RectUnionFilter::fillPixels(), roo_display::ClipMaskFilter::fillPixels(), roo_display::TransformedDisplayOutput::fillPixels(), roo_display::BufferedPixelFiller::flush(), and roo_display::ColorFilter< Erasure >::writePixels().

◆ fillRect() [1/3]

void roo_display::DisplayOutput::fillRect ( BlendingMode  blending_mode,
const Box rect,
Color  color 
)
inline

Fill a single rectangle. Invalidates the address window.

Parameters
blending_modeBlending mode used for drawing.
rectThe rectangle to fill.
colorThe fill color.

Definition at line 135 of file device.h.

References blending_mode, color, and fillRects().

Referenced by roo_display::SmoothFont::drawGlyph(), roo_display::SmoothFontV2::drawGlyph(), roo_display::BufferedAddrWindowDevice< Target >::fillPixels(), roo_display::FrontToBackWriter::fillRects(), and roo_display::FrontToBackWriter::writeRects().

◆ fillRect() [2/3]

void roo_display::DisplayOutput::fillRect ( BlendingMode  blending_mode,
int16_t  x0,
int16_t  y0,
int16_t  x1,
int16_t  y1,
Color  color 
)
inline

Fill a single rectangle. Invalidates the address window.

Parameters
blending_modeBlending mode used for drawing.
x0Left coordinate (inclusive).
y0Top coordinate (inclusive).
x1Right coordinate (inclusive).
y1Bottom coordinate (inclusive).
colorThe fill color.

Definition at line 159 of file device.h.

References blending_mode, color, and fillRects().

◆ fillRect() [3/3]

void roo_display::DisplayOutput::fillRect ( int16_t  x0,
int16_t  y0,
int16_t  x1,
int16_t  y1,
Color  color 
)
inline

Fill a single rectangle using BlendingMode::kSource.

Invalidates the address window.

Parameters
x0Left coordinate (inclusive).
y0Top coordinate (inclusive).
x1Right coordinate (inclusive).
y1Bottom coordinate (inclusive).
colorThe fill color.

Definition at line 173 of file device.h.

References color, fillRects(), and roo_display::kSource.

◆ fillRects()

virtual void roo_display::DisplayOutput::fillRects ( BlendingMode  blending_mode,
Color  color,
int16_t x0,
int16_t y0,
int16_t x1,
int16_t y1,
uint16_t  count 
)
pure virtual

Draw the specified rectangles using the same color. Invalidates the address window.

Parameters
blending_modeBlending mode used for drawing.
colorThe color to use for all rectangles.
x0Pointer to left coordinates for each rectangle.
y0Pointer to top coordinates for each rectangle.
x1Pointer to right coordinates for each rectangle.
y1Pointer to bottom coordinates for each rectangle.
countNumber of rectangles.

Implemented in roo_display::AddrWindowDevice< Target >, roo_display::AddrWindowDevice< pinLcdCs, pinLcdDc, -1 >, roo_display::ColorFilter< Filter >, roo_display::ColorFilter< Erasure >, roo_display::OffscreenDevice< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >, roo_display::OffscreenDevice< ColorMode, ColorPixelOrder::kMsbFirst, roo_io::kBigEndian, ColorTraits< ColorMode >::pixels_per_byte, ColorStorageType< ColorMode > >, roo_display::OffscreenDevice< Monochrome, ColorPixelOrder::kMsbFirst, roo_io::kBigEndian, ColorTraits< Monochrome >::pixels_per_byte, ColorStorageType< Monochrome > >, roo_display::OffscreenDevice< typename Target::ColorMode >, roo_display::BufferedAddrWindowDevice< Target >, roo_display::BackgroundFillOptimizer, roo_display::BackgroundFillOptimizerDevice, roo_display::BlendingFilter< Blender >, roo_display::RectUnionFilter, roo_display::ClipMaskFilter, roo_display::FrontToBackWriter, and roo_display::TransformedDisplayOutput.

Referenced by roo_display::drawHLine(), roo_display::drawVLine(), fillRect(), fillRect(), fillRect(), roo_display::ColorFilter< Filter >::fillRects(), roo_display::ColorFilter< Erasure >::fillRects(), roo_display::BufferedHLineFiller::flush(), roo_display::BufferedVLineFiller::flush(), roo_display::BufferedRectFiller::flush(), and roo_display::ColorFilter< Erasure >::writeRects().

◆ flush()

◆ getColorFormat()

virtual const ColorFormat & roo_display::DisplayOutput::getColorFormat ( ) const
pure virtual

Return the native color format used by this device for direct drawing.

Implemented in roo_display::OffscreenDevice< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >, roo_display::OffscreenDevice< ColorMode, ColorPixelOrder::kMsbFirst, roo_io::kBigEndian, ColorTraits< ColorMode >::pixels_per_byte, ColorStorageType< ColorMode > >, roo_display::OffscreenDevice< Monochrome, ColorPixelOrder::kMsbFirst, roo_io::kBigEndian, ColorTraits< Monochrome >::pixels_per_byte, ColorStorageType< Monochrome > >, roo_display::OffscreenDevice< typename Target::ColorMode >, roo_display::AddrWindowDevice< Target >, roo_display::AddrWindowDevice< pinLcdCs, pinLcdDc, -1 >, roo_display::BufferedAddrWindowDevice< Target >, roo_display::BackgroundFillOptimizer, roo_display::BackgroundFillOptimizerDevice, roo_display::BlendingFilter< Blender >, roo_display::RectUnionFilter, roo_display::ClipMaskFilter, roo_display::ColorFilter< Filter >, roo_display::ColorFilter< Erasure >, roo_display::FrontToBackWriter, and roo_display::TransformedDisplayOutput.

Referenced by drawDirectRect(), roo_display::BackgroundFillOptimizer::getColorFormat(), roo_display::BackgroundFillOptimizerDevice::getColorFormat(), roo_display::BlendingFilter< Blender >::getColorFormat(), roo_display::RectUnionFilter::getColorFormat(), roo_display::ClipMaskFilter::getColorFormat(), roo_display::ColorFilter< Filter >::getColorFormat(), roo_display::ColorFilter< Erasure >::getColorFormat(), and roo_display::TransformedDisplayOutput::getColorFormat().

◆ setAddress() [1/2]

◆ setAddress() [2/2]

◆ write()

virtual void roo_display::DisplayOutput::write ( Color color,
uint32_t  pixel_count 
)
pure virtual

Write pixels into the current address window.

The address must be set via setAddress() and not invalidated by any of the write* / fill* methods. Otherwise, the behavior is undefined.

Parameters
colorPointer to source pixels.
pixel_countNumber of pixels to write.

Implemented in roo_display::OffscreenDevice< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >, roo_display::OffscreenDevice< ColorMode, ColorPixelOrder::kMsbFirst, roo_io::kBigEndian, ColorTraits< ColorMode >::pixels_per_byte, ColorStorageType< ColorMode > >, roo_display::OffscreenDevice< Monochrome, ColorPixelOrder::kMsbFirst, roo_io::kBigEndian, ColorTraits< Monochrome >::pixels_per_byte, ColorStorageType< Monochrome > >, roo_display::OffscreenDevice< typename Target::ColorMode >, roo_display::AddrWindowDevice< Target >, roo_display::AddrWindowDevice< pinLcdCs, pinLcdDc, -1 >, roo_display::BufferedAddrWindowDevice< Target >, roo_display::BackgroundFillOptimizer, roo_display::BackgroundFillOptimizerDevice, roo_display::BlendingFilter< Blender >, roo_display::RectUnionFilter, roo_display::ClipMaskFilter, roo_display::ColorFilter< Filter >, roo_display::ColorFilter< Erasure >, roo_display::FrontToBackWriter, and roo_display::TransformedDisplayOutput.

Referenced by roo_display::BufferedColorWriter::advance_buffer_ptr(), drawDirectRect(), fill(), roo_display::BlendingFilter< Blender >::fill(), roo_display::internal::fillPaintRectOverBg(), roo_display::internal::fillPaintRectOverOpaqueBg(), roo_display::internal::fillReplaceRect(), roo_display::BlendingFilter< Blender >::write(), roo_display::ColorFilter< Filter >::write(), roo_display::ColorFilter< Erasure >::write(), roo_display::TransformedDisplayOutput::write(), roo_display::BufferedColorWriter::writeColorN(), roo_display::BufferedColorWriter::writeColors(), and roo_display::BufferedColorWriter::writeColorsAligned().

◆ writePixels()

virtual void roo_display::DisplayOutput::writePixels ( BlendingMode  blending_mode,
Color color,
int16_t x,
int16_t y,
uint16_t  pixel_count 
)
pure virtual

Draw the specified pixels (per-pixel colors). Invalidates the address window.

Parameters
blending_modeBlending mode used for drawing.
colorPointer to colors for each pixel.
xPointer to x-coordinates for each pixel.
yPointer to y-coordinates for each pixel.
pixel_countNumber of pixels.

Implemented in roo_display::ColorFilter< Filter >, roo_display::ColorFilter< Erasure >, roo_display::OffscreenDevice< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >, roo_display::OffscreenDevice< ColorMode, ColorPixelOrder::kMsbFirst, roo_io::kBigEndian, ColorTraits< ColorMode >::pixels_per_byte, ColorStorageType< ColorMode > >, roo_display::OffscreenDevice< Monochrome, ColorPixelOrder::kMsbFirst, roo_io::kBigEndian, ColorTraits< Monochrome >::pixels_per_byte, ColorStorageType< Monochrome > >, roo_display::OffscreenDevice< typename Target::ColorMode >, roo_display::BackgroundFillOptimizer, roo_display::BackgroundFillOptimizerDevice, roo_display::BlendingFilter< Blender >, roo_display::RectUnionFilter, roo_display::ClipMaskFilter, roo_display::FrontToBackWriter, roo_display::TransformedDisplayOutput, roo_display::AddrWindowDevice< Target >, roo_display::AddrWindowDevice< pinLcdCs, pinLcdDc, -1 >, and roo_display::BufferedAddrWindowDevice< Target >.

Referenced by roo_display::BlendingFilter< Blender >::fillPixels(), roo_display::BufferedPixelWriter::flush(), roo_display::ColorFilter< Filter >::writePixels(), roo_display::BackgroundFillOptimizer::writePixels(), roo_display::BlendingFilter< Blender >::writePixels(), roo_display::RectUnionFilter::writePixels(), roo_display::ClipMaskFilter::writePixels(), and roo_display::TransformedDisplayOutput::writePixels().

◆ writeRects()

virtual void roo_display::DisplayOutput::writeRects ( BlendingMode  blending_mode,
Color color,
int16_t x0,
int16_t y0,
int16_t x1,
int16_t y1,
uint16_t  count 
)
pure virtual

Draw the specified rectangles (per-rectangle colors). Invalidates the address window.

Parameters
blending_modeBlending mode used for drawing.
colorPointer to colors for each rectangle.
x0Pointer to left coordinates for each rectangle.
y0Pointer to top coordinates for each rectangle.
x1Pointer to right coordinates for each rectangle.
y1Pointer to bottom coordinates for each rectangle.
countNumber of rectangles.

Implemented in roo_display::AddrWindowDevice< Target >, roo_display::AddrWindowDevice< pinLcdCs, pinLcdDc, -1 >, roo_display::ColorFilter< Filter >, roo_display::ColorFilter< Erasure >, roo_display::OffscreenDevice< ColorMode, pixel_order, byte_order, pixels_per_byte, storage_type >, roo_display::OffscreenDevice< ColorMode, ColorPixelOrder::kMsbFirst, roo_io::kBigEndian, ColorTraits< ColorMode >::pixels_per_byte, ColorStorageType< ColorMode > >, roo_display::OffscreenDevice< Monochrome, ColorPixelOrder::kMsbFirst, roo_io::kBigEndian, ColorTraits< Monochrome >::pixels_per_byte, ColorStorageType< Monochrome > >, roo_display::OffscreenDevice< typename Target::ColorMode >, roo_display::BufferedAddrWindowDevice< Target >, roo_display::BackgroundFillOptimizer, roo_display::BackgroundFillOptimizerDevice, roo_display::BlendingFilter< Blender >, roo_display::RectUnionFilter, roo_display::ClipMaskFilter, roo_display::FrontToBackWriter, and roo_display::TransformedDisplayOutput.

Referenced by roo_display::BufferedRectWriter::flush(), and roo_display::ColorFilter< Filter >::writeRects().


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