MCPcopy Create free account
hub / github.com/ZDoom/Raze / DrawLayout

Method DrawLayout

libraries/ZWidget/src/core/span_layout.cpp:46–90  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44}
45
46void SpanLayout::DrawLayout(Canvas* canvas)
47{
48 double x = position.x;
49 double y = position.y;
50 for (std::vector<Line>::size_type line_index = 0; line_index < lines.size(); line_index++)
51 {
52 Line& line = lines[line_index];
53 for (std::vector<LineSegment>::size_type segment_index = 0; segment_index < line.segments.size(); segment_index++)
54 {
55 LineSegment& segment = line.segments[segment_index];
56 switch (segment.type)
57 {
58 case object_text:
59 DrawLayoutText(canvas, line, segment, x, y);
60 break;
61 case object_image:
62 DrawLayoutImage(canvas, line, segment, x, y);
63 break;
64 case object_component:
65 break;
66 }
67
68 }
69
70 if (line_index + 1 == lines.size() && !line.segments.empty())
71 {
72 LineSegment& segment = line.segments.back();
73 if (cursor_visible && segment.end <= cursor_pos)
74 {
75 switch (segment.type)
76 {
77 case object_text:
78 {
79 double cursor_x = x + segment.x_position + canvas->measureText(segment.font, text.substr(segment.start, segment.end - segment.start)).width;
80 double cursor_width = 1;
81 canvas->fillRect(Rect::ltrb(cursor_x, y + line.ascender - segment.ascender, cursor_width, y + line.ascender + segment.descender), cursor_color);
82 }
83 break;
84 }
85 }
86 }
87
88 y += line.height;
89 }
90}
91
92void SpanLayout::DrawLayoutEllipsis(Canvas* canvas, const Rect& content_rect)
93{

Callers 2

OnPaintMethod · 0.80
OnPaintMethod · 0.80

Calls 4

fillRectMethod · 0.80
sizeMethod · 0.45
emptyMethod · 0.45
measureTextMethod · 0.45

Tested by

no test coverage detected