feat(render): style, GLSL line/text pipelines, staging batches, bitmap font
This commit is contained in:
1 parent
9a086b7d69
commit
7cbc1c9955
22 files changed
+1535
No files matched your search
@@ -0,0 +1,32 @@
|
||||
#pragma once
|
||||
#include <plot/core/types.hpp>
|
||||
|
||||
namespace plot::render {
|
||||
|
||||
/// Text metrics the plot layer lays axes and labels out with. It is a pure
|
||||
/// interface so the layout code never depends on the bitmap font, and so a
|
||||
/// caller can measure with a host toolkit's font instead.
|
||||
///
|
||||
/// Text is passed as UTF-8, not as a byte-per-character string: `plot::format_si`
|
||||
/// emits U+00B5, U+00B0 and U+03A9 for micro, degree and ohm, and an
|
||||
/// implementation that ignores that prints mojibake.
|
||||
class TextBackend {
|
||||
public:
|
||||
TextBackend() noexcept = default;
|
||||
TextBackend(const TextBackend&) = default;
|
||||
TextBackend& operator=(const TextBackend&) = default;
|
||||
virtual ~TextBackend() = default;
|
||||
|
||||
/// Width of `utf8` in the same units as `height()` (pixels for the bitmap
|
||||
/// font). Zero for the empty string.
|
||||
virtual f32 measure(const char* utf8) const = 0;
|
||||
|
||||
/// Line height: the cell a single line of text occupies.
|
||||
virtual f32 height() const = 0;
|
||||
|
||||
/// Distance from the top of the cell to the baseline, so a caller can align
|
||||
/// text bottoms instead of cell bottoms.
|
||||
virtual f32 ascent() const = 0;
|
||||
};
|
||||
|
||||
} // namespace plot::render
|
||||
Reference in new issue
Block a user