GCC Middle and Back End API Reference
|
#include <ruler.h>
Data Structures | |
class | label |
Public Types | |
enum class | label_dir { ABOVE , BELOW } |
enum class | label_kind { TEXT , TEXT_WITH_BORDER } |
Public Member Functions | |
x_ruler (label_dir dir) | |
void | add_label (const canvas::range_t &r, styled_string text, style::id_t style_id, label_kind kind=label_kind::TEXT) |
canvas::size_t | get_size () |
void | paint_to_canvas (canvas &canvas, canvas::coord_t offset, const theme &theme) |
void | debug (const style_manager &sm) |
Private Member Functions | |
void | ensure_layout () |
void | update_layout () |
int | get_canvas_y (int rel_y) const |
Private Attributes | |
label_dir | m_label_dir |
std::vector< label > | m_labels |
canvas::size_t | m_size |
bool | m_has_layout = false |
A way to annotate a series of ranges of canvas coordinates with text labels either above or, in this example, below: ├───────┬───────┼───────┬───────┼───────┬───────┤ │ │ │ label A label B label C with logic to ensure that the text labels don't overlap when printed.
|
strong |
|
strong |
|
inline |
References false, m_has_layout, m_label_dir, and m_size.
void x_ruler::add_label | ( | const canvas::range_t & | r, |
styled_string | text, | ||
style::id_t | style_id, | ||
label_kind | kind = label_kind::TEXT ) |
References m_has_layout, m_labels, and r.
DEBUG_FUNCTION void x_ruler::debug | ( | const style_manager & | sm | ) |
References get_size(), and paint_to_canvas().
|
private |
References m_has_layout, and update_layout().
Referenced by get_size(), and paint_to_canvas().
|
private |
References ABOVE, BELOW, gcc_assert, gcc_unreachable, m_label_dir, and m_size.
Referenced by paint_to_canvas().
|
inline |
References ensure_layout(), and m_size.
Referenced by debug().
void x_ruler::paint_to_canvas | ( | canvas & | canvas, |
canvas::coord_t | offset, | ||
const theme & | theme ) |
References ABOVE, BELOW, ensure_layout(), text_art::canvas::fill(), gcc_unreachable, get_canvas_y(), text_art::theme::get_cell(), text_art::range< CoordinateSystem >::get_max(), text_art::rect< CoordinateSystem >::get_max_y(), text_art::range< CoordinateSystem >::get_min(), text_art::rect< CoordinateSystem >::get_min_x(), text_art::rect< CoordinateSystem >::get_min_y(), text_art::rect< CoordinateSystem >::get_x_range(), text_art::x_ruler::label::m_connector_x, text_art::x_ruler::label::m_kind, m_label_dir, m_labels, text_art::x_ruler::label::m_range, m_size, text_art::x_ruler::label::m_style_id, text_art::x_ruler::label::m_text, text_art::x_ruler::label::m_text_rect, text_art::range< CoordinateSystem >::next, text_art::canvas::paint(), text_art::canvas::paint_text(), text_art::range< CoordinateSystem >::start, TEXT, text_art::theme::TEXT_BORDER_BOTTOM_LEFT, text_art::theme::TEXT_BORDER_BOTTOM_RIGHT, text_art::theme::TEXT_BORDER_HORIZONTAL, text_art::theme::TEXT_BORDER_TOP_LEFT, text_art::theme::TEXT_BORDER_TOP_RIGHT, text_art::theme::TEXT_BORDER_VERTICAL, TEXT_WITH_BORDER, text_art::theme::X_RULER_CONNECTOR_TO_LABEL_ABOVE, text_art::theme::X_RULER_CONNECTOR_TO_LABEL_BELOW, text_art::theme::X_RULER_INTERNAL_EDGE, text_art::theme::X_RULER_LEFT_EDGE, text_art::theme::X_RULER_MIDDLE, text_art::theme::X_RULER_RIGHT_EDGE, and text_art::theme::X_RULER_VERTICAL_CONNECTOR.
Referenced by debug().
|
private |
References text_art::rect< CoordinateSystem >::get_min_x(), text_art::rect< CoordinateSystem >::get_width(), text_art::x_ruler::label::m_connector_x, m_labels, m_size, text_art::x_ruler::label::m_text_rect, text_art::rect< CoordinateSystem >::m_top_left, text_art::coord< CoordinateSystem >::x, and text_art::coord< CoordinateSystem >::y.
Referenced by ensure_layout().
Referenced by add_label(), ensure_layout(), and x_ruler().
|
private |
Referenced by get_canvas_y(), paint_to_canvas(), and x_ruler().
|
private |
Referenced by add_label(), paint_to_canvas(), and update_layout().
|
private |
Referenced by get_canvas_y(), get_size(), paint_to_canvas(), update_layout(), and x_ruler().