10class FilledWaveformBuilder;
124 glm::vec4 color { 0.65F, 0.65F, 0.65F, 1.F };
125 uint8_t decimal_places { 2 };
126 float label_h { 0.055F };
127 float label_w { 0.12F };
128 std::string name_prefix {
"tick" };
140 m_x.push_back({ .roles = { role }, .range = std::move(range), .palette = {} });
149 m_x.push_back({ .roles = { role }, .range = std::move(range), .palette = palette });
158 m_x.push_back({ .roles = std::move(roles), .range = std::move(range), .palette = {} });
165 Series&
x(std::vector<Role> roles,
AxisRange range, std::initializer_list<glm::vec3> palette)
167 m_x.push_back({ .roles = std::move(roles), .range = std::move(range), .palette = palette });
176 m_y.push_back({ .roles = { role }, .range = std::move(range), .palette = {} });
185 m_y.push_back({ .roles = { role }, .range = std::move(range), .palette = palette });
194 m_y.push_back({ .roles = std::move(roles), .range = std::move(range), .palette = {} });
201 Series&
y(std::vector<Role> roles,
AxisRange range, std::initializer_list<glm::vec3> palette)
203 m_y.push_back({ .roles = std::move(roles), .range = std::move(range), .palette = palette });
212 m_z.push_back({ .roles = { role }, .range = std::move(range), .palette = {} });
221 m_z.push_back({ .roles = { role }, .range = std::move(range), .palette = palette });
230 m_z.push_back({ .roles = std::move(roles), .range = std::move(range), .palette = {} });
237 Series&
z(std::vector<Role> roles,
AxisRange range, std::initializer_list<glm::vec3> palette)
239 m_z.push_back({ .roles = std::move(roles), .range = std::move(range), .palette = palette });
255 m_palette.insert(m_palette.end(), colors.begin(), colors.end());
261 m_palette.push_back(c);
276 m_background_bounds = bounds;
277 m_background_color = color;
278 m_has_background =
true;
295 m_plot_bounds = bounds;
305 glm::vec4 color = { 0.85F, 0.85F, 0.85F, 1.F },
306 std::string name = {})
308 m_labels.push_back(plot_label(std::move(text), bounds, color, std::move(name)));
317 m_labels.push_back(std::move(spec));
328 uint8_t decimal_places = 2,
329 glm::vec4 color = { 0.65F, 0.65F, 0.65F, 1.F })
331 m_ticks.push_back(TickRequest {
333 .range = std::nullopt,
337 .decimal_places = decimal_places,
338 .name_prefix =
"x_tick",
350 uint8_t decimal_places = 2,
351 glm::vec4 color = { 0.65F, 0.65F, 0.65F, 1.F })
353 m_ticks.push_back(TickRequest {
355 .range = std::move(range),
359 .decimal_places = decimal_places,
360 .name_prefix =
"x_tick",
372 uint8_t decimal_places = 2,
373 glm::vec4 color = { 0.65F, 0.65F, 0.65F, 1.F })
375 m_ticks.push_back(TickRequest {
377 .range = std::nullopt,
381 .decimal_places = decimal_places,
382 .name_prefix =
"y_tick",
394 uint8_t decimal_places = 2,
395 glm::vec4 color = { 0.65F, 0.65F, 0.65F, 1.F })
397 m_ticks.push_back(TickRequest {
399 .range = std::move(range),
403 .decimal_places = decimal_places,
404 .name_prefix =
"y_tick",
416 uint8_t decimal_places = 2,
417 glm::vec4 color = { 0.65F, 0.65F, 0.65F, 1.F })
419 m_ticks.push_back(TickRequest {
420 .axis = TickAxis::Explicit,
421 .range = std::move(range),
425 .decimal_places = decimal_places,
426 .name_prefix =
"tick",
447 Series&
legend(glm::vec2 origin, std::initializer_list<LegendEntry> entries)
453 m_legend = std::move(spec);
462 m_legend = std::move(spec);
479 [[nodiscard]]
const std::vector<AxisMapping>&
x_mappings()
const {
return m_x; }
480 [[nodiscard]]
const std::vector<AxisMapping>&
y_mappings()
const {
return m_y; }
481 [[nodiscard]]
const std::vector<AxisMapping>&
z_mappings()
const {
return m_z; }
482 [[nodiscard]]
const std::vector<glm::vec3>&
palette()
const {
return m_palette; }
487 [[nodiscard]]
const std::optional<Kinesis::AABB2D>&
plot_bounds()
const {
return m_plot_bounds; }
488 [[nodiscard]]
const std::vector<LabelSpec>&
labels()
const {
return m_labels; }
489 [[nodiscard]]
const std::optional<LegendSpec>&
legend_spec()
const {
return m_legend; }
494 [[nodiscard]] std::vector<TickLabelsSpec> resolved_tick_labels()
const;
497 std::vector<AxisMapping>
m_x;
498 std::vector<AxisMapping>
m_y;
499 std::vector<AxisMapping>
m_z;
501 glm::vec3 m_background_color {};
502 bool m_has_background {};
536 : m_state(
std::move(state))
551 float m_thickness { 1.5F };
567 : m_state(
std::move(state))
582 float m_point_size { 4.F };
599 : m_state(
std::move(state))
628 : m_state(
std::move(state))
648 float m_baseline { 0.F };
PrimitiveTopology
Vertex assembly primitive topology.
Role
Semantic role of the dimension.
Axis-aligned bounding rectangle in a 2D coordinate space.