GCC Middle and Back End API Reference
text_art::x_ruler Class Reference

#include <ruler.h>

Collaboration diagram for text_art::x_ruler:

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< labelm_labels
canvas::size_t m_size
bool m_has_layout = false

Detailed Description

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.   

Member Enumeration Documentation

◆ label_dir

enum class text_art::x_ruler::label_dir
strong
Enumerator
ABOVE 
BELOW 

◆ label_kind

enum class text_art::x_ruler::label_kind
strong
Enumerator
TEXT 
TEXT_WITH_BORDER 

Constructor & Destructor Documentation

◆ x_ruler()

text_art::x_ruler::x_ruler ( label_dir dir)
inline

References false, m_has_layout, m_label_dir, and m_size.

Member Function Documentation

◆ add_label()

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()

DEBUG_FUNCTION void x_ruler::debug ( const style_manager & sm)

References get_size(), and paint_to_canvas().

◆ ensure_layout()

void x_ruler::ensure_layout ( )
private

References m_has_layout, and update_layout().

Referenced by get_size(), and paint_to_canvas().

◆ get_canvas_y()

int x_ruler::get_canvas_y ( int rel_y) const
private

◆ get_size()

canvas::size_t text_art::x_ruler::get_size ( )
inline

References ensure_layout(), and m_size.

Referenced by debug().

◆ paint_to_canvas()

void x_ruler::paint_to_canvas ( canvas & canvas,
canvas::coord_t offset,
const theme & theme )

◆ update_layout()

Field Documentation

◆ m_has_layout

bool text_art::x_ruler::m_has_layout = false
private

Referenced by add_label(), ensure_layout(), and x_ruler().

◆ m_label_dir

label_dir text_art::x_ruler::m_label_dir
private

◆ m_labels

std::vector<label> text_art::x_ruler::m_labels
private

◆ m_size

canvas::size_t text_art::x_ruler::m_size
private

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