12#ifndef LAYOUT_TNG_SCANLINE_MAKER_H
13#define LAYOUT_TNG_SCANLINE_MAKER_H
Keep track of font metrics.
std::vector< ScanRun > makeScanline(Layout::FontMetrics const &line_height) override
Returns a single infinite run at the current location.
double yCoordinate() override
Returns the y coordinate of the top of the scanline that will be returned by the next call to makeSca...
void setNewYCoordinate(double new_y) override
Just changes y.
void setLineHeight(Layout::FontMetrics const &line_height) override
Sets current line block height.
bool _negative_block_progression
bool canExtendCurrentScanline(Layout::FontMetrics const &line_height) override
Always true, but has to save the new height.
~InfiniteScanlineMaker() override
Layout::FontMetrics _current_line_height
void completeLine() override
Increments the current y by the current line height.
virtual ~ScanlineMaker()=default
virtual void completeLine()=0
Indicates that the caller has successfully filled the current line and hence that the next call to ma...
virtual bool canExtendCurrentScanline(Layout::FontMetrics const &line_height)=0
Tests whether the caller can fit a new line with the given metrics into exactly the space returned by...
virtual void setLineHeight(Layout::FontMetrics const &line_height)=0
Sets current line block height.
virtual void setNewYCoordinate(double new_y)=0
Forces an arbitrary change in the stored y coordinate of the object.
virtual std::vector< ScanRun > makeScanline(Layout::FontMetrics const &line_height)=0
Returns a list of chunks on the current line which can fit text with the given properties.
virtual double yCoordinate()=0
Returns the y coordinate of the top of the scanline that will be returned by the next call to makeSca...
void setLineHeight(Layout::FontMetrics const &line_height) override
Sets current line block height.
std::vector< ScanRun > makeScanline(Layout::FontMetrics const &line_height) override
Returns a list of chunks on the current line which can fit text with the given properties.
float _current_line_height
bool _negative_block_progression
int _current_rasterization_point
~ShapeScanlineMaker() override
bool canExtendCurrentScanline(Layout::FontMetrics const &line_height) override
never true
double yCoordinate() override
Returns the y coordinate of the top of the scanline that will be returned by the next call to makeSca...
float _bounding_box_bottom
void setNewYCoordinate(double new_y) override
Forces an arbitrary change in the stored y coordinate of the object.
bool _shape_needs_freeing
see #rotated_shape;
void completeLine() override
Indicates that the caller has successfully filled the current line and hence that the next call to ma...
Shape * _rotated_shape
To generate scanlines for top-to-bottom text it is easiest if we simply rotate the given shape by a m...
Direction
Used to specify any particular text direction required.
A class to store/manipulate directed graphs.
Helper class to stream background task notifications as a series of messages.
double x_start
that's the top of the scan run, not the baseline