67 const std::string&
text()
const {
return text_; }
73 attributed_runs_ = std::move(
a);
74 has_attributed_ = !attributed_runs_.spans().empty();
78 cached_line_boxes_.clear();
79 shaped_cache_valid_ =
false;
83 has_attributed_ =
false;
84 cached_line_boxes_.clear();
85 shaped_cache_valid_ =
false;
109 if (has_own_font_size_ && font_size_ == size)
112 has_own_font_size_ =
true;
121 if (font_family_ == family)
123 font_family_ = std::move(family);
130 if (has_own_font_weight_ && font_weight_ == weight)
132 font_weight_ = weight;
133 has_own_font_weight_ =
true;
141 if (font_style_ == style)
149 if (has_own_letter_spacing_ && letter_spacing_ == sp)
151 letter_spacing_ = sp;
152 has_own_letter_spacing_ =
true;
161 if (font_smoothing_ == smoothing)
163 font_smoothing_ = smoothing;
167 return font_smoothing_;
171 if (line_height_ == lh)
189 if (multi_line_ == ml)
228 if (text_transform_ ==
t)
389 float basis_width, std::string basis_face,
390 bool wrap_on_cache_miss =
false);
395 cached_line_boxes_.clear();
396 cached_line_metrics_.reset();
397 shaped_cache_valid_ =
false;
407 return cached_line_boxes_;
466 std::string_view edit_text)
const;
487 edit_trigger_ = trigger;
541 if (selection_policy_ == policy)
543 selection_policy_ = policy;
549 return selection_policy_;
573 return selection_layout_;
583 int selection_start_utf8_ = 0;
584 int selection_end_utf8_ = 0;
606 int click_count_ = 0;
607 double last_click_time_ = 0.0;
616 struct ResolvedTextStyle {
625 ResolvedTextStyle resolve_text_style()
const;
626 std::string apply_text_transform(
const std::string& in)
const;
632 std::vector<canvas::Canvas::FontFeature> resolved_font_features()
const;
639 Rect own_text_box_{0.0f, 0.0f, -1.0f, -1.0f};
640 std::string font_family_;
641 float font_size_ = 14.0f;
642 int font_weight_ = 400;
644 float letter_spacing_ = 0;
646 float line_height_ = 0;
648 bool multi_line_ =
false;
652 canvas::Color decoration_color_{};
653 bool has_decoration_color_ =
false;
660 canvas::Color text_color_{};
661 bool has_own_text_color_ =
false;
662 canvas::AttributedString attributed_runs_;
663 bool has_attributed_ =
false;
667 void paint_text_(canvas::Canvas& canvas, Rect text_box);
669 void paint_decoration_(canvas::Canvas& canvas,
float x,
float width,
671 const canvas::Color&
color);
672 void paint_attributed_lines_(canvas::Canvas& canvas,
673 const canvas::ShapedLayout& layout,
675 int visible_lines,
bool append_ellipsis,
676 bool single_line_ellipsis,
677 bool captured_positions);
679 resolve_effective_align_()
const;
680 bool has_own_font_size_ =
false;
681 bool has_own_font_weight_ =
false;
682 bool has_own_letter_spacing_ =
false;
683 bool has_own_text_align_ =
false;
694 struct ShapedLayoutKey {
695 std::string display_text;
697 std::string font_variant;
698 float font_size = 0.0f;
699 int font_weight = 400;
701 float letter_spacing = 0.0f;
703 float line_height = 0.0f;
710 bool captured_positions =
false;
711 std::uint64_t font_gen = 0;
712 bool operator==(
const ShapedLayoutKey&
o)
const {
713 return display_text ==
o.display_text && family ==
o.family &&
714 font_variant ==
o.font_variant &&
715 font_size ==
o.font_size && font_weight ==
o.font_weight &&
716 font_style ==
o.font_style &&
717 letter_spacing ==
o.letter_spacing &&
718 width ==
o.width && line_height ==
o.line_height &&
719 break_mode ==
o.break_mode && max_lines ==
o.max_lines &&
720 captured_positions ==
o.captured_positions &&
721 font_gen ==
o.font_gen;
731 struct ShapingSetup {
732 std::string display_text;
733 float line_height = 0.0f;
734 float font_size = 0.0f;
735 float letter_spacing = 0.0f;
736 float shaping_line_height = 0.0f;
739 ShapingSetup shaping_setup()
const;
744 canvas::PreparedText prepare_shaped(
const ShapingSetup& setup)
const;
748 canvas::ShapedLayout shaper_layout_for(
const canvas::PreparedText& prepared,
749 const ShapingSetup& setup,
750 float available_width)
const;
758 bool cached_line_layout_usable(
const std::string& display_text,
759 float effective_font_size,
760 float effective_letter_spacing,
761 float layout_width)
const;
771 canvas::ShapedLayout layout_from_cached_lines(
const std::string&
text,
float line_height,
772 const std::string& family,
773 float effective_font_size,
774 float effective_letter_spacing)
const;
775 canvas::ShapedLayout layout_attributed_from_cached_lines(
778 std::vector<CachedLineBox> cached_line_boxes_;
779 bool captured_wrap_fallback_ =
false;
783 struct MeasureBasis {
786 std::string font_variant;
787 float font_size = 0.0f;
788 float letter_spacing = 0.0f;
789 int font_weight = 400;
791 int text_direction = 0;
793 bool multi_line =
false;
794 bool wrap_fallback =
false;
795 std::uint64_t font_gen = 0;
801 float line_height = 0.0f;
802 int text_transform = 0;
803 std::string word_break;
804 std::vector<canvas::Canvas::FontFeature> font_features;
805 bool operator==(
const MeasureBasis&)
const =
default;
809 bool sync_measure_basis()
const;
810 float compute_intrinsic_width()
const;
811 float compute_max_content_width()
const;
819 bool paints_as_lines()
const {
return soft_wraps() || captured_wrap_fallback_; }
820 float compute_intrinsic_height()
const;
821 float compute_measured_height(
float available_width)
const;
822 mutable MeasureBasis measure_basis_;
823 mutable bool measure_basis_valid_ =
false;
824 mutable float measure_width_ = -1.0f;
825 mutable float measure_height_ = -1.0f;
826 mutable float measure_wrapped_for_width_ = -1.0f;
827 mutable float measure_wrapped_height_ = -1.0f;
829 float cached_line_basis_width_ = 0.0f;
830 std::optional<LineMetrics> cached_line_metrics_;
831 std::string cached_line_basis_face_;
832 std::string cached_line_basis_text_;
835 bool cached_line_basis_retired_ =
false;
836 std::string cached_line_basis_font_variant_;
837 float cached_line_basis_font_size_ = 0.0f;
838 float cached_line_basis_letter_spacing_ = 0.0f;
839 int cached_line_basis_font_weight_ = 400;
840 int cached_line_basis_font_style_ = 0;
842 ShapedLayoutKey shaped_cache_key_;
843 canvas::ShapedLayout shaped_cache_layout_;
844 bool shaped_cache_valid_ =
false;
848 canvas::AttributedString attributed_prepare_source_;
849 std::vector<canvas::Canvas::FontFeature> attributed_prepare_features_;
850 canvas::PreparedText attributed_prepare_cache_;
851 std::uint64_t attributed_prepare_font_gen_ = 0;
852 bool attributed_prepare_valid_ =
false;
870 float descent = 0.0f;
872 float typographic_descent = 0.0f;
875 FaceMetrics face_metrics(
const std::string& family,
float font_size,
877 mutable std::string face_metrics_family_;
878 mutable float face_metrics_font_size_ = 0.0f;
879 mutable int face_metrics_font_weight_ = 400;
880 mutable int face_metrics_font_style_ = 0;
881 mutable std::uint64_t face_metrics_font_gen_ = 0;
882 mutable FaceMetrics face_metrics_cache_;
883 mutable bool face_metrics_valid_ =
false;
909 core_.set_drag_sensitivity(150);
926 void set_range(
double min_value,
double max_value,
double interval = 0.0) {
927 core_.set_range(min_value, max_value, interval);
929 value_ =
static_cast<float>(core_.normalized());
936 return store_normalized(
static_cast<float>(core_.normalized()), notify);
942 const float prev = value_;
951 return format_ ? format_(value_)
977 float value()
const {
return value_; }
980 default_value_ = std::clamp(
v, 0.0f, 1.0f);
981 core_.set_default_value(core_.value_for_normalized(default_value_));
991 float skew()
const {
return static_cast<float>(core_.skew()); }
995 core_.set_skew_from_midpoint(
996 core_.value_for_normalized(std::clamp(mid_normalized, 1e-4f, 1.0f - 1e-4f)));
999 const float s =
skew();
1000 return s == 1.0f ? value_ : std::pow(value_,
s);
1003 p = std::clamp(
p, 0.0f, 1.0f);
1004 const float s =
skew();
1005 return s == 1.0f ?
p : std::pow(
p, 1.0f /
s);
1009 if (label_ ==
text)
return;
1010 label_ = std::move(
text);
1014 const std::string&
label()
const {
return label_; }
1017 if (show_label_ == show)
return;
1027 if (show_value_ == show)
return;
1037 format_ = std::move(fmt);
1086 mod_rings_ = std::move(rings);
1096 float c = std::clamp(
p, -1.0f, 1.0f);
1131 const float v = std::isfinite(normalized) ? std::clamp(normalized, 0.0f, 1.0f) : value_;
1132 if (has_modulated_ &&
v == modulated_)
1134 has_modulated_ =
true;
1139 if (!has_modulated_)
1141 has_modulated_ =
false;
1145 return has_modulated_;
1149 return has_modulated_ ? modulated_ : value_;
1173 if (core_.interval() > 0.0) {
1174 const double step = (delta_y < 0.0f ? 1.0 : -1.0) * core_.interval();
1178 store_normalized(value_ + (-delta_y) * 0.004f,
Notify::sync);
1187 static constexpr float kModulatedMarkerHalo = 6.0f;
1190 bool has_modulated_ =
false;
1191 float modulated_ = 0.0f;
1192 std::vector<ModulationRing> mod_rings_;
1193 float mod_phase_ = 0.0f;
1194 int mod_drag_ring_ = -1;
1195 bool mod_drag_is_high_ =
true;
1196 float mod_drag_last_angle_ = 0.0f;
1200 float value_ = 0.0f;
1202 float default_value_ = 0.5f;
1204 std::function<std::string(
float)> format_;
1206 float drag_start_y_ = 0;
1207 float drag_start_proportion_ = 0;
1208 float drag_last_y_ = 0;
1209 bool gesture_active_ =
false;
1215 bool store_normalized(
float n,
Notify notify) {
1217 const float snapped =
static_cast<float>(core_.
normalized());
1218 if (snapped == value_)
1227 const float v = value_;
1232 bool show_label_ =
true;
1233 bool show_value_ =
true;
1234 std::string widget_schema_;
1235 std::string lottie_json_;
1237 float lottie_time_ = 0;
1247 void set_sprite_strip(std::shared_ptr<SpriteStrip> strip) { sprite_strip_ = std::move(strip); }
1248 const std::shared_ptr<SpriteStrip>&
sprite_strip()
const {
return sprite_strip_; }
1259 sprite_core_x_ =
x; sprite_core_y_ =
y;
1260 sprite_core_w_ =
w; sprite_core_h_ =
h;
1268 captured_raster_origin_x_ =
x;
1269 captured_raster_origin_y_ =
y;
1270 captured_raster_scale_ =
scale > 0.0f ?
scale : 0.0f;
1287 bool color_authored =
true) {
1288 ind_r_in_ = r_in; ind_r_out_ = r_out;
1289 ind_width_ = width_px; ind_color_ =
color;
1290 ind_phase_rad_ = phase_rad;
1291 ind_color_authored_ = color_authored;
1292 has_captured_indicator_ =
true;
1300 return ind_color_authored_;
1305 ind_outline_color_ =
color;
1306 ind_outline_width_ = std::max(0.0f, width_px);
1311 return ind_outline_color_;
1315 std::shared_ptr<SpriteStrip> sprite_strip_;
1316 float sprite_core_x_ = 0.0f;
1317 float sprite_core_y_ = 0.0f;
1318 float sprite_core_w_ = 0.0f;
1319 float sprite_core_h_ = 0.0f;
1320 float captured_raster_origin_x_ = 0.0f;
1321 float captured_raster_origin_y_ = 0.0f;
1322 float captured_raster_scale_ = 0.0f;
1323 bool has_captured_indicator_ =
false;
1324 float ind_r_in_ = 0.0f;
1325 float ind_r_out_ = 0.0f;
1326 float ind_width_ = 0.0f;
1327 float ind_phase_rad_ = 0.0f;
1329 bool ind_color_authored_ =
true;
1331 float ind_outline_width_ = 0.0f;
1351 const float prev = value_;
1365 float clamped = std::clamp(
v, 0.0f, 1.0f);
1366 if (clamped == value_)
return;
1379 float clamped = std::clamp(
v, 0.0f, 1.0f);
1380 if (clamped == value_)
return false;
1387 const float nv = value_;
1401 const float v = std::isfinite(normalized) ? std::clamp(normalized, 0.0f, 1.0f) : value_;
1402 if (has_modulated_ &&
v == modulated_)
1404 has_modulated_ =
true;
1409 if (!has_modulated_)
1411 has_modulated_ =
false;
1415 return has_modulated_;
1418 return has_modulated_ ? modulated_ : value_;
1424 float nv = std::clamp(value_ + (-delta_y) * 0.004f, 0.0f, 1.0f);
1435 if (thumb_shape_ == shape)
return;
1436 thumb_shape_ = shape;
1442 thumb_width_ = std::max(0.0f,
width);
1443 thumb_height_ = std::max(0.0f,
height);
1450 thumb_corner_radius_ = std::max(0.0f, radius);
1456 if (label_ ==
text)
return;
1457 label_ = std::move(
text);
1461 const std::string&
label()
const {
return label_; }
1485 float skew()
const {
return skew_; }
1487 float p = std::clamp(mid_normalized, 1e-4f, 1.0f - 1e-4f);
1488 skew_ = std::max(0.0001f, std::log(0.5f) / std::log(
p));
1494 p = std::clamp(
p, 0.0f, 1.0f);
1495 return skew_ == 1.0f ?
p : std::pow(
p, 1.0f / skew_);
1508 static constexpr float kModulatedMarkerHalo = 6.0f;
1512 bool has_modulated_ =
false;
1513 float modulated_ = 0.0f;
1514 float value_ = 0.0f;
1520 float thumb_width_ = 0.0f;
1521 float thumb_height_ = 0.0f;
1522 float thumb_corner_radius_ = 0.0f;
1523 bool has_skin_thumb_style_ =
false;
1525 float pre_skin_thumb_width_ = 0.0f;
1526 float pre_skin_thumb_height_ = 0.0f;
1527 float pre_skin_thumb_corner_radius_ = 0.0f;
1530 bool dragging_ =
false;
1531 std::string widget_schema_;
1532 std::string lottie_json_;
1533 float lottie_time_ = 0.0f;
1538 void set_sprite_strip(std::shared_ptr<SpriteStrip> strip) { sprite_strip_ = std::move(strip); }
1539 const std::shared_ptr<SpriteStrip>&
sprite_strip()
const {
return sprite_strip_; }
1547 std::shared_ptr<SpriteStrip> indicator,
1548 float indicator_cross = 0.5f,
1549 float body_origin_x = 0.0f,
1550 float body_origin_y = 0.0f,
1551 float control_natural_w = 0.0f,
1552 float control_natural_h = 0.0f,
1553 bool body_includes_static_track =
false) {
1554 captured_body_ = std::move(body);
1555 captured_indicator_ = std::move(indicator);
1556 captured_indicator_cross_ = std::clamp(indicator_cross, 0.0f, 1.0f);
1557 captured_body_origin_x_ = body_origin_x;
1558 captured_body_origin_y_ = body_origin_y;
1559 captured_control_natural_w_ = control_natural_w;
1560 captured_control_natural_h_ = control_natural_h;
1561 captured_body_includes_static_track_ = body_includes_static_track;
1565 captured_raster_origin_x_ =
x;
1566 captured_raster_origin_y_ =
y;
1567 captured_raster_scale_ =
scale > 0.0f ?
scale : 0.0f;
1573 return captured_indicator_ && captured_indicator_->loaded();
1577 return captured_body_includes_static_track_;
1595 if (has_skin_thumb_style_)
return;
1596 pre_skin_thumb_shape_ = thumb_shape_;
1597 pre_skin_thumb_width_ = thumb_width_;
1598 pre_skin_thumb_height_ = thumb_height_;
1599 pre_skin_thumb_corner_radius_ = thumb_corner_radius_;
1600 has_skin_thumb_style_ =
true;
1605 thumb_fallback_color_ =
c;
1606 has_skin_thumb_fallback_ =
true;
1610 has_skin_thumb_ =
false;
1616 has_skin_thumb_ =
false;
1617 has_skin_thumb_fallback_ =
false;
1625 has_skin_thumb_border_ =
false;
1626 if (has_skin_thumb_style_) {
1627 thumb_shape_ = pre_skin_thumb_shape_;
1628 thumb_width_ = pre_skin_thumb_width_;
1629 thumb_height_ = pre_skin_thumb_height_;
1630 thumb_corner_radius_ = pre_skin_thumb_corner_radius_;
1631 has_skin_thumb_style_ =
false;
1644 if (
w > 0.0f) { skin_track_width_ =
w; has_skin_track_width_ =
true;
request_repaint(); }
1650 has_skin_track_ = has_skin_fill_ =
false;
1651 has_skin_track_border_ =
false;
1652 has_skin_track_width_ =
false;
1656 return has_skin_track_ || has_skin_fill_ || has_skin_thumb_ ||
1657 has_skin_thumb_border_ || has_skin_track_border_;
1663 return has_skin_thumb_fallback_;
1671 return thumb_fallback_color_;
1677 std::shared_ptr<SpriteStrip> sprite_strip_;
1678 std::shared_ptr<SpriteStrip> captured_body_;
1679 std::shared_ptr<SpriteStrip> captured_indicator_;
1680 float captured_indicator_cross_ = 0.5f;
1681 float captured_body_origin_x_ = 0.0f;
1682 float captured_body_origin_y_ = 0.0f;
1683 float captured_control_natural_w_ = 0.0f;
1684 float captured_control_natural_h_ = 0.0f;
1685 bool captured_body_includes_static_track_ =
false;
1686 float captured_raster_origin_x_ = 0.0f;
1687 float captured_raster_origin_y_ = 0.0f;
1688 float captured_raster_scale_ = 0.0f;
1691 canvas::Color thumb_color_{};
1692 canvas::Color thumb_fallback_color_{};
1693 canvas::Color thumb_border_color_{};
1694 canvas::Color track_border_color_{};
1695 bool has_skin_track_ =
false;
1696 bool has_skin_fill_ =
false;
1697 bool has_skin_thumb_ =
false;
1698 bool has_skin_thumb_fallback_ =
false;
1699 bool has_skin_thumb_border_ =
false;
1700 bool has_skin_track_border_ =
false;
1701 float skin_track_width_ = 0.0f;
1702 bool has_skin_track_width_ =
false;
1714 return std::clamp(cross_extent * 0.5f, 8.0f, 24.0f);
1777 const float prev = value_;
1803 float step()
const {
return step_; }
1819 float prev = value_;
1821 clamp_and_quantize_(notify);
1834 std::isfinite(normalized) ? std::clamp(normalized, 0.0f, 1.0f) : value_to_position_();
1835 if (has_modulated_ &&
v == modulated_)
1837 has_modulated_ =
true;
1842 if (!has_modulated_)
1844 has_modulated_ =
false;
1848 return has_modulated_;
1858 float prev = value_;
1859 set_value(value_ + (-delta_y) * 0.004f * (max_ - min_));
1874 has_accent_color_ =
true;
1900 if (color_scheme_ == scheme)
1902 color_scheme_ = scheme;
1906 return color_scheme_;
1936 static ChromiumRefreshParts
1938 ColorScheme scheme, std::optional<canvas::Color> accent = std::nullopt,
1939 float device_scale = 1.0f);
1962 float skew()
const {
return skew_; }
1999 float position_to_value_(
float t)
const;
2008 void update_from_position_(Point pos);
2012 float value_to_position_()
const;
2017 float value_ = 0.0f;
2018 bool has_modulated_ =
false;
2019 float modulated_ = 0.0f;
2020 static constexpr float kModulatedMarkerHalo = 2.0f;
2023 bool dragging_ =
false;
2024 float track_thickness_ = 5.0f;
2026 bool has_accent_color_ =
false;
2027 Skin skin_ = Skin::platform;
2030 void paint_chromium_refresh_(canvas::Canvas& canvas);
2038 Toggle() : thumb_position_(0.0f), hover_opacity_(0.0f) {
2066 label_ = std::move(
text);
2069 const std::string&
label()
const {
return label_; }
2102 std::string widget_schema_;
2103 std::string lottie_json_;
2104 float lottie_time_ = 0.0f;
2105 bool designed_overlay_ =
false;
2128 if (checked_ ==
v)
return;
2142 if (checked_ ==
v)
return false;
2150 const bool nv = checked_;
2175 return radio_group_;
2181 if (indeterminate_ ==
v)
2188 return indeterminate_;
2206 if (color_scheme_ == scheme)
2208 color_scheme_ = scheme;
2212 return color_scheme_;
2219 accent_color_.reset();
2223 return accent_color_;
2256 std::optional<canvas::Color> accent = std::nullopt);
2269 bool checked_ =
false;
2270 bool indeterminate_ =
false;
2272 int radio_group_ = 0;
2273 Skin skin_ = Skin::platform;
2275 std::optional<canvas::Color> accent_color_;
2303 if (color_scheme_ == scheme)
2305 color_scheme_ = scheme;
2309 return color_scheme_;
2325 if (focus_visible_ ==
visible)
2331 return focus_visible_;
2367 float device_scale = 1.0f);
2376 bool pressed_ =
false;
2377 bool focus_visible_ =
false;
2394 if (on_ ==
v)
return;
2408 if (on_ ==
v)
return false;
2416 const bool nv = on_;
2424 if (label_ ==
text)
return;
2425 label_ = std::move(
text);
2429 const std::string&
label()
const {
return label_; }
2472 int radio_group_ = 0;
2474 std::optional<canvas::Color> on_background_color_;
2475 std::optional<canvas::Color> off_background_color_;
2476 std::optional<canvas::Color> on_text_color_;
2477 std::optional<canvas::Color> off_text_color_;
2478 std::optional<canvas::Color> on_border_color_;
2479 std::optional<canvas::Color> off_border_color_;
2480 std::optional<float> corner_radius_;
2481 std::optional<float> font_size_;
2482 bool designed_overlay_ =
false;
2528 cached_data_.clear();
2529 cached_data_key_.clear();
2530 cached_data_width_ = 0.0f;
2531 cached_data_height_ = 0.0f;
2532 inline_decode_failed_ =
false;
2551 fill_value_ =
value;
2556 fill_color_ =
color;
2571 fill_gradient_ = std::move(stops);
2574 const std::vector<canvas::Color>&
fill_gradient()
const {
return fill_gradient_; }
2584 bool loaded_ =
false;
2585 std::vector<uint8_t> cached_data_;
2586 std::string cached_data_key_;
2587 float cached_data_width_ = 0.0f;
2588 float cached_data_height_ = 0.0f;
2589 bool inline_decode_failed_ =
false;
2591 float fill_value_ = -1.0f;
2593 std::vector<canvas::Color> fill_gradient_;
2615 set_modulated_axis(has_mod_x_, mod_x_, x_, normalized);
2618 set_modulated_axis(has_mod_y_, mod_y_, y_, normalized);
2621 clear_modulated_axis(has_mod_x_);
2624 clear_modulated_axis(has_mod_y_);
2627 return has_mod_x_ || has_mod_y_;
2631 return has_mod_x_ ? mod_x_ : x_;
2634 return has_mod_y_ ? mod_y_ : y_;
2654 void update_from_pos(
Point pos);
2655 void set_modulated_axis(
bool& has,
float& slot,
float base,
float normalized) {
2656 const float v = std::isfinite(normalized) ? std::clamp(normalized, 0.0f, 1.0f) : base;
2657 if (has &&
v == slot)
2663 void clear_modulated_axis(
bool& has) {
2669 static constexpr float kModulatedMarkerHalo = 2.0f;
2670 float x_ = 0.5f, y_ = 0.5f;
2671 bool has_mod_x_ =
false, has_mod_y_ =
false;
2672 float mod_x_ = 0.0f, mod_y_ = 0.0f;
2673 std::string x_label_, y_label_;
2674 bool dragging_ =
false;
2700 std::string bg_token_ =
"bg.surface";
2701 std::string border_token_ =
"control.border";
2702 float border_width_ = 1.0f;
2717 const std::string&
title()
const {
return title_; }
2739 void apply_child_visibility();
2741 bool collapsible_ =
false;
2742 bool collapsed_ =
false;
2754 void set_range(
float min,
float max) { min_ = min; max_ = std::max(min, max); clamp_(); }
2757 float low()
const {
return low_; }
2758 float high()
const {
return high_; }
2779 float pos_for_(
float v)
const;
2780 float value_for_pos_(
float t)
const;
2781 float pointer_t_(
Point pos)
const;
2782 void apply_(
Point pos);
2784 float min_ = 0.0f, max_ = 1.0f, low_ = 0.25f, high_ = 0.70f;
2785 bool enabled_ =
true;
2786 bool no_cross_ =
false;
2802 void set_range(
double min,
double max) { min_ = min; max_ = max; }
2823 caret_blink_.set_config(config);
2841 std::string display_()
const;
2842 void subscribe_caret_blink_();
2843 void unsubscribe_caret_blink_();
2844 double value_ = 0.0, min_ = -1e9, max_ = 1e9;
2846 std::string suffix_;
2847 bool enabled_ =
true, editing_ =
false, invalid_ =
false;
2848 std::string edit_buffer_;
2851 int caret_blink_sub_ = -1;
2894 waveform_ = std::move(samples);
2897 const std::vector<float>&
waveform()
const {
return waveform_; }
2901 float c = std::clamp(
level, 0.0f, 1.0f);
2902 if (
c == level_)
return;
2912 if (
c == threshold_)
return;
2932 Rect meter_rect_()
const;
2934 Rect waveform_rect_()
const;
2935 float transport_radius_()
const;
2936 Point transport_center_()
const;
2939 void advance_state_();
2941 void update_threshold_from_x_(
float x);
2944 std::vector<float> waveform_;
2945 float level_ = 0.0f;
2946 float threshold_ = 0.5f;
2947 bool dragging_threshold_ =
false;
2953#if defined(PULP_VIEW_HAS_AUDIO_WIDGETS)
Text-caret appearance and blink policy, shared by every editable widget.
Attributed string — a sequence of styled text spans.
Definition attributed_string.hpp:40
Definition canvas.hpp:240
Interface for accessible values (sliders, knobs, progress bars).
Definition accessibility.hpp:16
virtual std::string get_value_string() const
Value as a human-readable string (e.g., "50%" or "-6 dB").
virtual double get_step_size() const
Step increment for keyboard navigation.
Definition accessibility.hpp:36
The "solid while moving, blinking while still" state machine.
Definition caret.hpp:102
Kind
checkbox toggles on click.
Definition widgets.hpp:2160
@ checkbox
Definition widgets.hpp:2160
@ radio
Definition widgets.hpp:2160
UaControlState ControlState
Definition widgets.hpp:2195
Skin skin() const
Definition widgets.hpp:2202
void set_radio_group(int id)
Definition widgets.hpp:2171
int radio_group() const
Definition widgets.hpp:2174
Kind kind() const
Definition widgets.hpp:2168
void set_indeterminate(bool v)
HTML indeterminate (checkbox only): painted as a dash, reported as "mixed".
Definition widgets.hpp:2180
UaColorScheme ColorScheme
Definition widgets.hpp:2194
void set_skin(Skin s)
Definition widgets.hpp:2196
std::function< void(bool)> on_change
Definition widgets.hpp:2262
bool is_indeterminate() const
Definition widgets.hpp:2187
void clear_accent_color()
Definition widgets.hpp:2218
static ChromiumRefreshParts chromium_refresh_parts(Rect bounds, Kind kind, bool checked, bool indeterminate, ControlState state, ColorScheme scheme, std::optional< canvas::Color > accent=std::nullopt)
Pure layout + palette of Chromium's checkbox / radio for bounds.
ChromiumRefreshParts chromium_refresh_parts() const
void set_kind(Kind k)
Definition widgets.hpp:2161
std::optional< canvas::Color > accent_color() const
Definition widgets.hpp:2222
Checkbox()
Definition widgets.hpp:2119
void set_accent_color(canvas::Color c)
Definition widgets.hpp:2214
ControlState control_state() const
Disabled when not enabled, hovered under the pointer, otherwise normal.
UaSkin Skin
Skin, colour scheme and CSS accent-color; see UaSkin.
Definition widgets.hpp:2193
bool is_checked() const
Definition widgets.hpp:2155
void paint(canvas::Canvas &canvas) override
void set_color_scheme(ColorScheme scheme)
Definition widgets.hpp:2205
void set_checked(bool v)
Definition widgets.hpp:2127
ColorScheme color_scheme() const
Definition widgets.hpp:2211
void on_mouse_down(Point pos) override
bool set_checked(bool v, Notify notify)
Notifying overload.
Definition widgets.hpp:2141
bool wants_mouse_input() const override
True if this widget handles mouse down/drag through virtual methods even when it does not expose JS p...
Definition widgets.hpp:2266
Mixin for widgets whose body can be painted by a custom SkSL shader.
Definition custom_shader_host.hpp:27
Definition widgets.hpp:2750
void set_orientation(Orientation o)
Definition widgets.hpp:2753
bool enabled() const
Definition widgets.hpp:2762
void paint(canvas::Canvas &canvas) override
void on_mouse_up(Point pos) override
void on_mouse_down(Point pos) override
float max_value() const
Definition widgets.hpp:2760
void on_mouse_drag(Point pos) override
bool no_cross() const
Definition widgets.hpp:2766
void set_high(float v)
Definition widgets.hpp:2756
std::function< void(float low, float high)> on_change
Definition widgets.hpp:2769
float min_value() const
Definition widgets.hpp:2759
float high() const
Definition widgets.hpp:2758
void set_no_cross(bool b)
Definition widgets.hpp:2765
void set_low(float v)
Definition widgets.hpp:2755
void set_enabled(bool e)
Definition widgets.hpp:2761
void set_range(float min, float max)
Definition widgets.hpp:2754
float low() const
Definition widgets.hpp:2757
Orientation
Definition widgets.hpp:2752
@ horizontal
Definition widgets.hpp:2752
@ vertical
Definition widgets.hpp:2752
bool wants_mouse_input() const override
True if this widget handles mouse down/drag through virtual methods even when it does not expose JS p...
Definition widgets.hpp:2775
Orientation
Definition widgets.hpp:1339
@ horizontal
Definition widgets.hpp:1339
@ vertical
Definition widgets.hpp:1339
void clear_skin_thumb_style()
Retire every scripted thumb-specific override while leaving authored track/fill styling intact.
Definition widgets.hpp:1623
void clear_skin_thumb_colors()
Return thumb colour authority entirely to the live theme.
Definition widgets.hpp:1615
bool has_skin_track_border_color() const
Definition widgets.hpp:1666
void set_widget_schema(std::string json)
Definition widgets.hpp:1499
bool has_skin_fill_color() const
Definition widgets.hpp:1660
const std::string & lottie_json() const
Definition widgets.hpp:1502
bool wants_wheel_value() const override
True if this widget adjusts its VALUE on a scroll-wheel over it (knobs, faders, sliders,...
Definition widgets.hpp:1422
float thumb_height() const
Definition widgets.hpp:1447
void set_modulated_value(float normalized)
Display-only played value while a modulator moves this parameter around value().
Definition widgets.hpp:1400
void set_skew(float s)
Skew / response curve (see RangeSlider::set_skew).
Definition widgets.hpp:1484
void set_render_style(WidgetRenderStyle s)
Definition widgets.hpp:1358
void on_mouse_up(Point pos) override
bool has_skin_thumb_color() const
Definition widgets.hpp:1661
Orientation orientation() const
Definition widgets.hpp:1432
void set_skew_from_midpoint(float mid_normalized)
Definition widgets.hpp:1486
bool is_gesture_active() const override
True while the user is actively manipulating this widget's value with a pointer drag (knob turn,...
Definition widgets.hpp:1429
void set_sprite_strip(std::shared_ptr< SpriteStrip > strip)
Sprite strip: designer-created filmstrip for fader appearance.
Definition widgets.hpp:1538
bool has_skin_track_color() const
Definition widgets.hpp:1659
std::function< void(float)> on_change
Called when the value changes.
Definition widgets.hpp:1464
void set_skin_track_width(float w)
Definition widgets.hpp:1643
void on_mouse_drag(Point pos) override
void set_lottie_time(float t)
Definition widgets.hpp:1503
bool wants_mouse_input() const override
True if this widget handles mouse down/drag through virtual methods even when it does not expose JS p...
Definition widgets.hpp:1475
float value_for_position(float p) const
Definition widgets.hpp:1493
bool has_skin_thumb_border_color() const
Definition widgets.hpp:1665
void on_mouse_enter() override
void set_label(std::string text)
Definition widgets.hpp:1455
void set_thumb_shape(ThumbShape shape)
Definition widgets.hpp:1434
bool set_value(float v, Notify notify)
Notifying overload.
Definition widgets.hpp:1378
bool has_captured_indicator_art() const
Definition widgets.hpp:1572
void set_orientation(Orientation o)
Definition widgets.hpp:1431
void set_skin_fill_color(canvas::Color c)
Definition widgets.hpp:1588
void clear_modulated_value()
Definition widgets.hpp:1408
void set_current_value(double v) override
Set the value (if editable).
Definition widgets.hpp:1350
void set_skin_track_border_color(canvas::Color c)
Definition widgets.hpp:1639
float position_for_value() const
Track position [0,1] (skew-mapped) for the current value, and the inverse used while dragging.
Definition widgets.hpp:1492
WidgetRenderStyle render_style() const
Definition widgets.hpp:1359
canvas::Color skin_thumb_fallback_color() const
Definition widgets.hpp:1670
Fader()
Definition widgets.hpp:1342
float lottie_time() const
Definition widgets.hpp:1504
float hover_scale() const
Definition widgets.hpp:1478
float value() const
Definition widgets.hpp:1392
bool captured_body_includes_static_track() const
Definition widgets.hpp:1576
bool has_skin_thumb_fallback_color() const
Definition widgets.hpp:1662
float captured_raster_origin_x() const
Definition widgets.hpp:1570
void set_skin_track_color(canvas::Color c)
Definition widgets.hpp:1587
float captured_raster_origin_y() const
Definition widgets.hpp:1571
canvas::Color skin_track_color() const
Definition widgets.hpp:1667
void set_thumb_size(float width, float height)
Definition widgets.hpp:1441
canvas::Color skin_thumb_border_color() const
Definition widgets.hpp:1673
float thumb_corner_radius() const
Definition widgets.hpp:1453
float captured_indicator_cross() const
Definition widgets.hpp:1575
void on_mouse_down(Point pos) override
void on_wheel(float delta_y) override
Adjust the widget's value by a scroll-wheel delta (delta_y positive = scrolled down).
Definition widgets.hpp:1423
canvas::Color skin_thumb_color() const
Definition widgets.hpp:1669
void set_skin_thumb_color(canvas::Color c)
Definition widgets.hpp:1589
ThumbShape thumb_shape() const
Definition widgets.hpp:1439
canvas::Color skin_fill_color() const
Definition widgets.hpp:1668
const std::string & widget_schema() const
Definition widgets.hpp:1500
bool has_modulated_value() const
Definition widgets.hpp:1414
void begin_skin_thumb_style()
Snapshot the non-skin thumb geometry before a scripted skin takes ownership.
Definition widgets.hpp:1594
void set_value(float v)
Definition widgets.hpp:1364
bool has_skin() const
Definition widgets.hpp:1655
double get_minimum_value() const override
Minimum value.
Definition widgets.hpp:1355
std::function< void()> on_gesture_begin
Definition widgets.hpp:1465
float captured_raster_scale() const
Definition widgets.hpp:1569
ThumbShape
Definition widgets.hpp:1340
@ circle
Definition widgets.hpp:1340
@ rectangle
Definition widgets.hpp:1340
canvas::Color skin_track_border_color() const
Definition widgets.hpp:1674
double get_current_value() const override
Current value as a number.
Definition widgets.hpp:1349
bool has_skin_track_width() const
Definition widgets.hpp:1647
void on_mouse_event(const MouseEvent &event) override
Mouse down with full event context.
void advance_animations(float dt) override
Advance any per-widget non-CSS animation state (hover glows, thumb tweens, spinner phase) by dt secon...
std::function< void()> on_gesture_end
Definition widgets.hpp:1466
const std::shared_ptr< SpriteStrip > & sprite_strip() const
Definition widgets.hpp:1539
void clear_skin()
Definition widgets.hpp:1648
float modulated_display_value() const
Definition widgets.hpp:1417
void on_mouse_leave() override
float thumb_width() const
Definition widgets.hpp:1446
void set_skin_thumb_fallback_color(canvas::Color c)
Panel-wide fallback for a thumb.
Definition widgets.hpp:1604
void set_skin_thumb_border_color(canvas::Color c)
Definition widgets.hpp:1635
double get_maximum_value() const override
Maximum value.
Definition widgets.hpp:1356
float skin_track_width() const
Definition widgets.hpp:1646
void set_captured_raster_origin(float x, float y, float scale)
Definition widgets.hpp:1564
void set_thumb_corner_radius(float radius)
Definition widgets.hpp:1449
void set_lottie_json(std::string json)
Definition widgets.hpp:1501
float skew() const
Definition widgets.hpp:1485
void set_captured_art(std::shared_ptr< SpriteStrip > body, std::shared_ptr< SpriteStrip > indicator, float indicator_cross=0.5f, float body_origin_x=0.0f, float body_origin_y=0.0f, float control_natural_w=0.0f, float control_natural_h=0.0f, bool body_includes_static_track=false)
Browser-captured fader art.
Definition widgets.hpp:1546
void paint(canvas::Canvas &canvas) override
const std::string & label() const
Definition widgets.hpp:1461
Definition frame_clock.hpp:14
Definition widgets.hpp:2712
void on_mouse_event(const MouseEvent &event) override
Mouse down with full event context.
static constexpr float header_height
Definition widgets.hpp:2714
bool wants_mouse_input() const override
True if this widget handles mouse down/drag through virtual methods even when it does not expose JS p...
Definition widgets.hpp:2736
void set_collapsed(bool c, Notify notify=Notify::sync)
const std::string & title() const
Definition widgets.hpp:2717
void set_title(std::string t)
Definition widgets.hpp:2716
float content_top() const
Definition widgets.hpp:2730
void set_collapsible(bool c)
Definition widgets.hpp:2719
void paint(canvas::Canvas &canvas) override
bool collapsed() const
Definition widgets.hpp:2727
std::function< void(bool collapsed)> on_toggle
Definition widgets.hpp:2732
bool collapsible() const
Definition widgets.hpp:2720
void paint(canvas::Canvas &canvas) override
Icon()
Definition widgets.hpp:2492
Type type() const
Definition widgets.hpp:2496
Type
Definition widgets.hpp:2490
@ image_upload
Definition widgets.hpp:2490
@ search
Definition widgets.hpp:2490
@ send
Definition widgets.hpp:2490
@ close
Definition widgets.hpp:2490
Icon(Type t)
Definition widgets.hpp:2493
void set_type(Type t)
Definition widgets.hpp:2495
Definition image_cache.hpp:55
void set_fill_value(float value)
Value-driven silhouette fill (design-import shape-fill, e.g.
Definition widgets.hpp:2550
bool has_fill() const
Definition widgets.hpp:2559
const std::string & image_path() const
Definition widgets.hpp:2518
ImageCache * image_cache() const
Definition widgets.hpp:2542
void set_fill_color(canvas::Color color)
Definition widgets.hpp:2555
void set_image_cache(ImageCache *cache)
Attach an ImageCache.
Definition widgets.hpp:2541
const std::vector< canvas::Color > & fill_gradient() const
Definition widgets.hpp:2574
const std::string & image_source() const
Definition widgets.hpp:2535
void paint(canvas::Canvas &canvas) override
ImageView()
Definition widgets.hpp:2511
void set_image_path(const std::string &path)
Legacy API: filesystem path.
Definition widgets.hpp:2515
void set_image_source(const std::string &uri)
URI-keyed image source.
Definition widgets.hpp:2524
float fill_value() const
Definition widgets.hpp:2554
bool has_fill_gradient() const
Definition widgets.hpp:2575
void set_fill_gradient(std::vector< canvas::Color > stops)
Per-shape gradient fill (design-import shape-fill enhancement).
Definition widgets.hpp:2570
std::function< void(double)> on_change
Definition widgets.hpp:2811
void on_mouse_down(Point pos) override
void set_range(double min, double max)
Definition widgets.hpp:2802
const CaretBlinkConfig & caret_blink() const
Definition widgets.hpp:2826
void set_caret_blink(const CaretBlinkConfig &config)
Blink timing. Defaults to the process-wide config.
Definition widgets.hpp:2822
double value() const
Definition widgets.hpp:2801
void set_value(double v)
Definition widgets.hpp:2800
bool enabled() const
Definition widgets.hpp:2806
void on_frame_clock_changed() override
Re-home the caret-blink subscription when the tree's FrameClock changes — same dangling-cached-clock ...
void set_decimals(int d)
Definition widgets.hpp:2804
InlineValueEditor()
Definition widgets.hpp:2798
void set_enabled(bool e)
Definition widgets.hpp:2805
void set_suffix(std::string s)
Definition widgets.hpp:2803
bool editing() const
Definition widgets.hpp:2807
void on_text_input(const TextInputEvent &event) override
Text input from keyboard/IME (separate from key events).
void set_caret_style(CaretStyle style)
Caret shape. Defaults to the process-wide style (CaretStyle::ibeam).
Definition widgets.hpp:2818
void on_focus_changed(bool gained) override
Called when this view gains or loses focus.
bool on_key_event(const KeyEvent &event) override
Key event with modifiers and up/down state.
void paint(canvas::Canvas &canvas) override
CaretStyle caret_style() const
Definition widgets.hpp:2819
bool invalid() const
Definition widgets.hpp:2808
bool wants_mouse_input() const override
True if this widget handles mouse down/drag through virtual methods even when it does not expose JS p...
Definition widgets.hpp:2838
~InlineValueEditor() override
void set_captured_indicator_outline(canvas::Color color, float width_px)
Optional authored CSS border around a captured HTML pointer.
Definition widgets.hpp:1304
bool has_modulated_value() const
Definition widgets.hpp:1144
bool show_value() const
Definition widgets.hpp:1031
void set_captured_raster_origin(float x, float y, float scale)
A browser crop records an exact device-pixel origin and DPR.
Definition widgets.hpp:1267
static constexpr float end_angle
Definition widgets.hpp:1061
float captured_raster_origin_y() const
Definition widgets.hpp:1274
float captured_indicator_outline_width() const
Definition widgets.hpp:1309
std::pair< float, float > modulation_range(size_t ring) const
bool has_sprite_core() const
Definition widgets.hpp:1262
void set_label(std::string text)
Definition widgets.hpp:1008
void set_render_style(WidgetRenderStyle s)
Definition widgets.hpp:955
double real_value() const
Definition widgets.hpp:932
void set_sprite_core(float x, float y, float w, float h)
Opaque-core rectangle of the sprite body frame, in the FRAME's own pixel space (x,...
Definition widgets.hpp:1258
void set_show_label(bool show)
Definition widgets.hpp:1016
void set_format(std::function< std::string(float)> fmt)
Definition widgets.hpp:1036
std::function< void(int ring, float lo, float hi)> on_modulation_change
Definition widgets.hpp:1162
float value() const
Definition widgets.hpp:977
void set_modulation_phase(float p)
Definition widgets.hpp:1095
float captured_indicator_phase_rad() const
Definition widgets.hpp:1298
void advance_animations(float dt) override
Advance any per-widget non-CSS animation state (hover glows, thumb tweens, spinner phase) by dt secon...
const std::shared_ptr< SpriteStrip > & sprite_strip() const
Definition widgets.hpp:1248
void set_default_value(float v)
Definition widgets.hpp:979
static constexpr float start_angle
Definition widgets.hpp:1060
void set_current_value(double v) override
Set the value (if editable).
Definition widgets.hpp:941
SliderCore & slider()
Definition widgets.hpp:921
const SliderCore & slider() const
Definition widgets.hpp:922
const std::string & label() const
Definition widgets.hpp:1014
void set_captured_indicator(float r_in, float r_out, float width_px, canvas::Color color, float phase_rad=0.0f, bool color_authored=true)
Geometry of the design's OWN pointer (e.g.
Definition widgets.hpp:1285
const std::vector< ModulationRing > & modulation_rings() const
Definition widgets.hpp:1089
bool is_gesture_active() const override
True while the user is actively manipulating this widget's value with a pointer drag (knob turn,...
Definition widgets.hpp:1183
double get_maximum_value() const override
Maximum value.
Definition widgets.hpp:947
float lottie_time() const
Definition widgets.hpp:1243
void set_sprite_strip(std::shared_ptr< SpriteStrip > strip)
Sprite strip: designer-created filmstrip for knob appearance.
Definition widgets.hpp:1247
void on_mouse_up(Point pos) override
void set_widget_schema(std::string json)
Definition widgets.hpp:1068
double get_current_value() const override
Current value as a number.
Definition widgets.hpp:940
void paint(canvas::Canvas &canvas) override
float captured_raster_origin_x() const
Definition widgets.hpp:1273
void set_lottie_time(float t)
Definition widgets.hpp:1242
std::string get_value_string() const override
Prefer the widget's own display formatter ("-6.0 dB") over the generic percentage — it is the string ...
Definition widgets.hpp:950
double get_minimum_value() const override
Minimum value.
Definition widgets.hpp:946
void set_lottie_json(std::string json)
Definition widgets.hpp:1240
const std::string & widget_schema() const
Definition widgets.hpp:1069
void set_value(float v)
Definition widgets.hpp:968
bool dragging_modulation() const
Definition widgets.hpp:1164
void set_skew(float s)
Skew / response curve (see RangeSlider::set_skew).
Definition widgets.hpp:990
float captured_indicator_r_out() const
Definition widgets.hpp:1297
bool wants_wheel_value() const override
True if this widget adjusts its VALUE on a scroll-wheel over it (knobs, faders, sliders,...
Definition widgets.hpp:1167
float position_for_value() const
Definition widgets.hpp:998
bool set_value(float v, Notify notify)
Notifying overload.
Definition widgets.hpp:975
float modulated_value(size_t ring) const
void on_mouse_enter() override
void set_modulation_rings(std::vector< ModulationRing > rings)
Definition widgets.hpp:1085
void on_mouse_event(const MouseEvent &event) override
Mouse down with full event context.
void set_show_value(bool show)
Controls only the formatter text painted inside the dial.
Definition widgets.hpp:1026
float hover_glow() const
Definition widgets.hpp:1056
float modulation_phase() const
Definition widgets.hpp:1100
void on_wheel(float delta_y) override
Adjust the widget's value by a scroll-wheel delta (delta_y positive = scrolled down).
Definition widgets.hpp:1168
bool has_captured_indicator() const
Definition widgets.hpp:1295
float value_for_position(float p) const
Definition widgets.hpp:1002
canvas::Color captured_indicator_outline_color() const
Definition widgets.hpp:1310
bool show_label() const
Definition widgets.hpp:1021
void on_mouse_down(Point pos) override
Knob()
Definition widgets.hpp:903
float modulated_display_value() const
The played value while one is set, else value().
Definition widgets.hpp:1148
bool set_real_value(double v, Notify notify=Notify::sync)
Write in real-world units. Snapped to the interval, clamped to the range.
Definition widgets.hpp:934
void set_modulated_value(float normalized)
Definition widgets.hpp:1130
std::function< void()> on_gesture_end
Definition widgets.hpp:1044
std::function< void()> on_gesture_begin
Definition widgets.hpp:1043
float captured_indicator_r_in() const
Definition widgets.hpp:1296
void clear_modulated_value()
Definition widgets.hpp:1138
void on_mouse_drag(Point pos) override
const std::string & lottie_json() const
Definition widgets.hpp:1241
bool wants_mouse_input() const override
True if this widget handles mouse down/drag through virtual methods even when it does not expose JS p...
Definition widgets.hpp:1053
float skew() const
Definition widgets.hpp:991
void on_mouse_leave() override
float captured_raster_scale() const
Definition widgets.hpp:1272
std::function< void(float)> on_change
Called when the value changes (from user interaction or programmatic).
Definition widgets.hpp:1042
bool captured_indicator_color_authored() const
Definition widgets.hpp:1299
void set_skew_from_midpoint(float mid_normalized)
mid_normalized is in the knob's NORMALIZED space (see value()), so this call means the same thing wit...
Definition widgets.hpp:994
WidgetRenderStyle render_style() const
Definition widgets.hpp:956
void set_range(double min_value, double max_value, double interval=0.0)
Real-world range and quantization interval.
Definition widgets.hpp:926
float default_value() const
Definition widgets.hpp:983
const std::string & text() const
Definition widgets.hpp:67
TextTransform text_transform() const
Definition widgets.hpp:233
static LineBreakPathCounts line_break_path_counts()
float measured_height(float available_width) const
Width-aware height: shaper-true line count × line-height for a multi_line Label given the parent's av...
canvas::Color text_decoration_color() const
Definition widgets.hpp:240
bool selection_highlight(int &start_utf8, int &end_utf8) const override
The current highlight. Returns false when nothing is highlighted.
TextDecorationStyle
CSS text-decoration-style: solid, double, dotted, dashed, wavy.
Definition widgets.hpp:249
@ double_
Definition widgets.hpp:249
@ dashed
Definition widgets.hpp:249
@ wavy
Definition widgets.hpp:249
@ dotted
Definition widgets.hpp:249
@ solid
Definition widgets.hpp:249
LabelAlign text_align() const
Definition widgets.hpp:179
Rect own_text_box() const
Layout slot for this Label's own text when it also has element children.
Definition widgets.hpp:261
SelectionPolicy selection_policy() const
Definition widgets.hpp:548
bool is_selectable() const
Resolved answer for this Label right now.
Definition widgets.hpp:561
bool multi_line() const
Definition widgets.hpp:194
float max_content_width() const
Widest this label can be if nothing soft-wrapped — CSS max-content.
float intrinsic_width() const override
Intrinsic width — measured text width.
TextDecoration
CSS text-decoration: none, underline, line-through, overline.
Definition widgets.hpp:236
@ overline
Definition widgets.hpp:236
@ none
Definition widgets.hpp:236
@ line_through
Definition widgets.hpp:236
@ underline
Definition widgets.hpp:236
Label()
Definition widgets.hpp:58
EditTrigger editable() const
Definition widgets.hpp:490
void set_own_text_box(Rect box)
Definition widgets.hpp:263
SelectableLayout selectable_layout() const override
Where the glyphs landed at the last paint. See SelectableLayout.
Definition widgets.hpp:572
void set_multi_line(bool ml)
Definition widgets.hpp:188
EditTrigger
Definition widgets.hpp:480
@ none
not editable
Definition widgets.hpp:481
@ single_click
Definition widgets.hpp:482
@ double_click
Definition widgets.hpp:483
int font_style() const
Definition widgets.hpp:146
void set_font_size(float size)
Definition widgets.hpp:108
void clear_own_text_box()
Definition widgets.hpp:264
Label(std::string text)
Definition widgets.hpp:59
std::size_t attributed_span_count() const
Definition widgets.hpp:89
void set_text_decoration_color(canvas::Color c)
Definition widgets.hpp:239
void clear_attributed_string()
Definition widgets.hpp:82
int font_weight() const
Definition widgets.hpp:136
void set_selection_highlight(int start_utf8, int end_utf8) override
Paint this byte range as selected. start >= end clears the highlight.
std::function< void(const std::string &text)> on_text_change
Fires when an edit is COMMITTED with new text (not on every keystroke, and not at all when the edit i...
Definition widgets.hpp:494
void hide_editor(bool commit)
Close the inline editor. commit false discards the edit.
float measured_width(float available_width) const
Width-aware painted width: how far this Label's glyphs actually reach at available_width,...
bool has_own_text_box() const
Definition widgets.hpp:262
bool has_own_text_align() const
Definition widgets.hpp:180
void set_editable(EditTrigger trigger)
Definition widgets.hpp:486
bool has_text_decoration_color() const
Definition widgets.hpp:241
int effective_font_weight() const
The CSS numeric weight this Label will actually be painted at — its own when it was given one,...
int line_clamp() const
Definition widgets.hpp:223
void set_line_clamp(int n)
CSS line-clamp / -webkit-line-clamp.
Definition widgets.hpp:222
void set_font_smoothing(canvas::FontSmoothing smoothing)
CSS -webkit-font-smoothing this text was authored with.
Definition widgets.hpp:160
void set_text_color(canvas::Color c)
Definition widgets.hpp:184
bool has_own_font_weight() const
Definition widgets.hpp:137
bool soft_wraps() const
Whether this Label soft-wraps once CSS white-space inheritance is applied: it is multi-line AND no an...
Definition widgets.hpp:208
TextDecoration text_decoration() const
Definition widgets.hpp:238
TextDecorationStyle text_decoration_style() const
Definition widgets.hpp:251
void set_text(std::string text)
PaintedTextExtents painted_text_extents(float available_width) const
float baseline_y() const
Baseline offset from the top of the Label's measured box, used by Yoga's YGNodeSetBaselineFunc to hon...
float intrinsic_height() const override
Intrinsic height based on font size and line height.
void set_attributed_string(canvas::AttributedString a)
Definition widgets.hpp:72
std::string_view selectable_text() const override
The widget's text, in UTF-8.
Definition widgets.hpp:569
SelectionPolicy
Whether this Label takes part in text selection.
Definition widgets.hpp:539
@ inherit
Definition widgets.hpp:539
@ never
Definition widgets.hpp:539
@ always
Definition widgets.hpp:539
void set_text_transform(TextTransform t)
Definition widgets.hpp:227
void set_cached_line_boxes(std::vector< CachedLineBox > boxes, float basis_width, std::string basis_face, bool wrap_on_cache_miss=false)
Adopt a browser's own line breaking for this text.
float line_height() const
Definition widgets.hpp:176
void set_font_family(std::string family)
CSS font-family string (e.g.
Definition widgets.hpp:120
void set_vertical_align(canvas::TextVerticalAlign a)
Set vertical text alignment within the label's bounds.
Definition widgets.hpp:890
void set_text_decoration_style(TextDecorationStyle s)
Definition widgets.hpp:250
void set_text_direction(canvas::TextDirection d)
Set text direction (LTR, RTL, vertical top-to-bottom, vertical bottom-to-top).
Definition widgets.hpp:886
void clear_cached_line_boxes()
Drop browser-captured line geometry when a responsive layout intentionally changes typography.
Definition widgets.hpp:394
static void reset_line_break_path_counts()
SelectableText * as_selectable_text() override
This view's painted text can join a cross-widget selection; null for the vast majority of views,...
Definition widgets.hpp:523
void show_editor()
Open the inline editor now, regardless of the click trigger.
std::function< void()> on_editor_hide
Definition widgets.hpp:499
TextTransform
CSS text-transform: uppercase, lowercase, capitalize, none.
Definition widgets.hpp:226
@ uppercase
Definition widgets.hpp:226
@ none
Definition widgets.hpp:226
@ capitalize
Definition widgets.hpp:226
@ lowercase
Definition widgets.hpp:226
canvas::TextVerticalAlign vertical_align() const
Definition widgets.hpp:891
const std::vector< CachedLineBox > & cached_line_boxes() const
Definition widgets.hpp:406
void set_selection_policy(SelectionPolicy policy)
Definition widgets.hpp:540
bool wants_mouse_input() const override
True if this widget handles mouse down/drag through virtual methods even when it does not expose JS p...
Definition widgets.hpp:513
std::string effective_font_family() const
The font family this Label paints with: its own font_family() if set, else the nearest ancestor's inh...
canvas::TextDirection text_direction() const
Definition widgets.hpp:887
void set_text_decoration(TextDecoration d)
Definition widgets.hpp:237
void paint(canvas::Canvas &canvas) override
float letter_spacing() const
Definition widgets.hpp:155
const std::string & font_family() const
Definition widgets.hpp:126
void on_mouse_down(Point pos) override
void set_letter_spacing(float sp)
Definition widgets.hpp:148
void set_cached_line_metrics(LineMetrics metrics)
The primary font's ascent and descent the browser laid the cached lines out with.
bool has_own_letter_spacing() const
Definition widgets.hpp:156
bool has_own_font_size() const
Definition widgets.hpp:116
canvas::FontSmoothing font_smoothing() const
Definition widgets.hpp:166
std::function< void()> on_editor_show
Fires when the inline editor opens / closes, for owners that need to suppress a hover highlight or a ...
Definition widgets.hpp:498
float font_size() const
Definition widgets.hpp:115
bool has_attributed_string() const
Definition widgets.hpp:88
bool editor_active() const
Definition widgets.hpp:507
void set_text_align(LabelAlign align)
Definition widgets.hpp:178
TextEditMetrics text_edit_metrics(canvas::Canvas &canvas, std::string_view edit_text) const
View * selectable_view() override
The View this capability is mixed into. Never null.
Definition widgets.hpp:577
void set_font_style(int style)
Definition widgets.hpp:140
bool has_own_text_color() const
Definition widgets.hpp:185
canvas::Color text_color() const
Definition widgets.hpp:186
void set_font_weight(int weight)
Definition widgets.hpp:129
bool captured_wrap_fallback() const
Definition widgets.hpp:409
bool inherits_nowrap() const
True when this Label's own mode is normal and its nearest ancestor with a non-normal mode is nowrap.
void set_line_height(float lh)
Definition widgets.hpp:170
TextEditor * editor() const
The live inline editor, or null.
Definition widgets.hpp:510
Panel()
Definition widgets.hpp:2683
float border_width() const
Definition widgets.hpp:2695
const std::string & background_token() const
Definition widgets.hpp:2692
void set_border_width(float w)
Definition widgets.hpp:2690
const std::string & border_token() const
Definition widgets.hpp:2693
void set_border_token(std::string token)
Definition widgets.hpp:2686
void set_background_token(std::string token)
Definition widgets.hpp:2685
void set_corner_radius(float r)
Definition widgets.hpp:2689
float corner_radius() const
Definition widgets.hpp:2694
void paint(canvas::Canvas &canvas) override
void set_track_thickness(float t)
Track thickness in pixels (default 5).
Definition widgets.hpp:1952
void set_color_scheme(ColorScheme scheme)
The page colour scheme the chromium_refresh skin resolves its palette from (CSS color-scheme).
Definition widgets.hpp:1899
float position_for_value() const
Track position [0,1] (skew-mapped) the thumb is drawn at for the value.
Definition widgets.hpp:1967
void on_mouse_leave() override
UaSkin Skin
Which control skin paints the slider.
Definition widgets.hpp:1884
Skin skin() const
Definition widgets.hpp:1893
Orientation
Definition widgets.hpp:1752
@ horizontal
Definition widgets.hpp:1752
@ vertical
Definition widgets.hpp:1752
bool has_accent_color() const
Definition widgets.hpp:1877
double get_minimum_value() const override
Minimum value.
Definition widgets.hpp:1781
float max_value() const
Definition widgets.hpp:1796
std::function< void()> on_gesture_begin
Fired when an interactive drag begins / ends, so a binding can bracket the edit in a host automation ...
Definition widgets.hpp:1976
float modulated_display_value() const
The played fraction of [min, max] while one is set.
Definition widgets.hpp:1851
void set_skin(Skin s)
Definition widgets.hpp:1887
void set_value(float v, Notify notify=Notify::sync)
Set the current value.
Definition widgets.hpp:1818
void set_skew_from_midpoint(float mid_value)
Choose skew so mid_value lands at the middle of the track (position 0.5).
ChromiumRefreshParts chromium_refresh_parts(float device_scale=1.0f) const
chromium_refresh_parts() for this slider's current box, value, orientation, state,...
void set_current_value(double v) override
Set the value (if editable).
Definition widgets.hpp:1776
bool wants_wheel_value() const override
True if this widget adjusts its VALUE on a scroll-wheel over it (knobs, faders, sliders,...
Definition widgets.hpp:1856
std::function< void(float)> on_change
Fired when the value changes — from drag, click, or set_value().
Definition widgets.hpp:1972
void set_min(float v)
Inclusive lower bound (default 0).
Definition widgets.hpp:1790
static ChromiumRefreshParts chromium_refresh_parts(Rect bounds, float position, bool vertical, ControlState state, ColorScheme scheme, std::optional< canvas::Color > accent=std::nullopt, float device_scale=1.0f)
Pure layout + palette of the chromium_refresh skin for a box of bounds (local coordinates) with the t...
void set_orientation(Orientation o)
Definition widgets.hpp:1866
void on_mouse_enter() override
bool is_gesture_active() const override
True while the user is actively manipulating this widget's value with a pointer drag (knob turn,...
Definition widgets.hpp:1864
void set_step(float v)
Step size for quantisation.
Definition widgets.hpp:1802
float min_value() const
Definition widgets.hpp:1791
UaColorScheme ColorScheme
Definition widgets.hpp:1885
static constexpr float kMinorAxisExtent
The thumb's minor-axis extent at rest, in points.
Definition widgets.hpp:1772
float step() const
Definition widgets.hpp:1803
bool wants_mouse_input() const override
True if this widget handles mouse down/drag through virtual methods even when it does not expose JS p...
Definition widgets.hpp:1991
void set_accent_color(canvas::Color c)
Override the accent color for the active fill.
Definition widgets.hpp:1872
void set_skew(float s)
Skew / response curve, shaping the mapping between track position and value.
Definition widgets.hpp:1961
ControlState control_state() const
The state the chromium_refresh palette resolves for this slider now: disabled when not enabled,...
canvas::Color accent_color() const
Definition widgets.hpp:1878
double get_maximum_value() const override
Maximum value.
Definition widgets.hpp:1782
double get_step_size() const override
Step increment for keyboard navigation.
Definition widgets.hpp:1783
float track_thickness() const
Definition widgets.hpp:1953
RangeSlider()
Definition widgets.hpp:1754
void on_mouse_event(const MouseEvent &event) override
Mouse down with full event context.
float value() const
Definition widgets.hpp:1824
float skew() const
Definition widgets.hpp:1962
void paint(canvas::Canvas &canvas) override
ColorScheme color_scheme() const
Definition widgets.hpp:1905
void on_wheel(float delta_y) override
Adjust the widget's value by a scroll-wheel delta (delta_y positive = scrolled down).
Definition widgets.hpp:1857
void set_max(float v)
Inclusive upper bound (default 1).
Definition widgets.hpp:1795
void clear_accent_color()
Definition widgets.hpp:1876
double get_current_value() const override
Current value as a number.
Definition widgets.hpp:1775
void set_modulated_value(float normalized)
Display-only played value while a modulator moves this parameter around value() (same contract as Kno...
Definition widgets.hpp:1832
UaControlState ControlState
Definition widgets.hpp:1886
void clear_modulated_value()
Definition widgets.hpp:1841
float intrinsic_height() const override
The control's own default box height.
Definition widgets.hpp:1986
Orientation orientation() const
Definition widgets.hpp:1867
void on_mouse_drag(Point pos) override
bool has_modulated_value() const
Definition widgets.hpp:1847
void advance_animations(float dt) override
Advance any per-widget non-CSS animation state (hover glows, thumb tweens, spinner phase) by dt secon...
Definition widgets.hpp:1992
float hover_scale() const
Definition widgets.hpp:1993
std::function< void()> on_gesture_end
Definition widgets.hpp:1977
A widget whose painted text can join a document-level selection.
Definition selectable_text.hpp:58
Definition slider_core.hpp:77
double normalized() const
LINEAR position of the value in the range, in [0,1], with NO response curve applied.
Definition slider_core.hpp:135
bool set_normalized(double n, Notify notify=Notify::sync)
Definition slider_core.hpp:139
Text editing widget with comprehensive keyboard/mouse interaction.
Definition text_editor.hpp:47
std::function< void(bool)> on_toggle
Called when the toggle state changes.
Definition widgets.hpp:2072
void on_mouse_enter() override
float lottie_time() const
Definition widgets.hpp:2094
void set_label(std::string text)
Definition widgets.hpp:2065
const std::string & label() const
Definition widgets.hpp:2069
bool wants_mouse_input() const override
True if this widget handles mouse down/drag through virtual methods even when it does not expose JS p...
Definition widgets.hpp:2078
void advance_animations(float dt) override
Advance any per-widget non-CSS animation state (hover glows, thumb tweens, spinner phase) by dt secon...
void on_mouse_leave() override
const std::string & widget_schema() const
Definition widgets.hpp:2090
const std::string & lottie_json() const
Definition widgets.hpp:2092
bool set_on(bool v, Notify notify, bool animate=true)
Notifying overload.
void on_mouse_down(Point pos) override
void set_lottie_json(std::string json)
Definition widgets.hpp:2091
void set_widget_schema(std::string json)
Definition widgets.hpp:2089
float hover_opacity() const
Definition widgets.hpp:2082
Toggle()
Definition widgets.hpp:2038
void set_on(bool v, bool animate=true)
Set the on/off state.
void set_lottie_time(float t)
Definition widgets.hpp:2093
bool designed_overlay() const
Definition widgets.hpp:2086
void set_designed_overlay(bool enabled)
Definition widgets.hpp:2085
bool is_on() const
Definition widgets.hpp:2054
float thumb_position() const
Definition widgets.hpp:2081
void paint(canvas::Canvas &canvas) override
Lightweight, embeddable value animator for widget members.
Definition animation.hpp:293
void request_repaint_self(float halo=4.0f)
Invalidate only THIS view's own rect, overscanned by halo so a glow, focus ring or modulation arc pai...
void set_hit_slop(float uniform)
Definition view.hpp:764
Position position() const
Definition view.hpp:1767
void request_repaint()
Request that this view's host invalidate and schedule a repaint.
void set_border_radius(float r)
Definition view.hpp:1202
const std::string & id() const
Definition view.hpp:1059
void set_cursor(CursorStyle c)
Definition view.hpp:2760
@ slider
Definition view.hpp:989
@ toggle
Definition view.hpp:989
@ checkbox
Definition view.hpp:990
@ radio
Definition view.hpp:990
@ button
Definition view.hpp:990
@ label
Definition view.hpp:989
@ group
Definition view.hpp:989
float corner_radius() const
Definition view.hpp:1183
bool visible() const
Definition view.hpp:333
void set_derived_access_label(std::string label)
The CONTENT-DERIVED accessible name: a widget's visible text (Label::set_text, Knob/Fader/Toggleset_l...
Definition view.hpp:1020
void mark_runtime_view_kind(RuntimeViewKind kind)
Definition view.hpp:2379
@ default_
Definition view.hpp:2742
@ text
Definition view.hpp:2742
void invalidate_layout()
Mark layout as needing recalculation (auto-invalidation).
Definition view.hpp:898
int animate(std::function< void(float)> apply, float from, float to, float duration_s, std::function< float(float)> ease={}, std::function< void()> on_done={}, const std::string &tag={})
float top() const
Definition view.hpp:1798
void set_access_role(AccessRole role)
Definition view.hpp:995
const std::shared_ptr< WidgetMetrics > & metrics() const
Definition view.hpp:251
void set_access_checked(std::string s)
Definition view.hpp:1044
bool enabled() const
CSS :disabled equivalent — blocks input, reduces opacity.
Definition view.hpp:715
void set_focusable(bool f)
Definition view.hpp:669
Rect bounds() const
Definition view.hpp:84
float scale() const
Definition view.hpp:1902
void on_mouse_up(Point pos) override
float y_value() const
Definition widgets.hpp:2606
bool wants_mouse_input() const override
True if this widget handles mouse down/drag through virtual methods even when it does not expose JS p...
Definition widgets.hpp:2648
void set_y(float v)
Definition widgets.hpp:2604
bool is_gesture_active() const override
True while the user is actively manipulating this widget's value with a pointer drag (knob turn,...
Definition widgets.hpp:2651
void on_mouse_down(Point pos) override
bool has_modulated_value() const
Definition widgets.hpp:2626
void set_x_label(std::string l)
Definition widgets.hpp:2637
float modulated_display_y() const
Definition widgets.hpp:2633
void clear_modulated_x()
Definition widgets.hpp:2620
void set_modulated_y(float normalized)
Definition widgets.hpp:2617
float modulated_display_x() const
The played position on each axis while one is set, else the base.
Definition widgets.hpp:2630
void set_modulated_x(float normalized)
Display-only played position on either axis while a modulator moves that parameter around the base (s...
Definition widgets.hpp:2614
float x_value() const
Definition widgets.hpp:2605
void set_x(float v)
Definition widgets.hpp:2603
std::function< void(float, float)> on_change
Definition widgets.hpp:2640
void clear_modulated_y()
Definition widgets.hpp:2623
void set_y_label(std::string l)
Definition widgets.hpp:2638
void paint(canvas::Canvas &canvas) override
void on_mouse_drag(Point pos) override
std::function< void()> on_gesture_end
Definition widgets.hpp:2642
std::function< void()> on_gesture_begin
Definition widgets.hpp:2641
Single authoritative time source for the view system.
Device-appropriate target sizing shared by pointer-driven hit tests.
Definition affine_transform.hpp:24
TextVerticalAlign
Definition canvas.hpp:222
@ top
Definition canvas.hpp:222
FontSmoothing
CSS -webkit-font-smoothing as it affects glyph rasterization on macOS.
Definition text_raster_policy.hpp:40
@ auto_smoothing
Definition text_raster_policy.hpp:41
TextDirection
Definition canvas.hpp:231
@ left_to_right
Definition canvas.hpp:231
BreakMode
CSS overflow-wrap / word-break break opportunity mode.
Definition text_shaper.hpp:162
@ normal
Definition text_shaper.hpp:163
SequencerStateChannel is the audio-safe transport for a plugin's structured NON-parameter state: the ...
Definition audio_device_manager.hpp:48
Hover-cursor tracking for platform window hosts.
Definition fwd.hpp:27
@ path
Definition anchor_strategy.hpp:42
void queue_async_notification(std::function< void()> fn)
Queue a callback for the next flush.
CaretStyle default_caret_style() noexcept
Process-wide caret defaults.
View * enclosing_text_selection_region(View &from)
The nearest enclosing text-content region of from (itself included), or null when it is not inside on...
@ normal
Definition design_ir.hpp:450
@ right
Definition border_style.hpp:31
@ left
Definition border_style.hpp:31
UaControlState
Interaction state a chromium_refresh palette is keyed on.
Definition widgets.hpp:1731
@ disabled
Definition widgets.hpp:1731
@ pressed
Definition widgets.hpp:1731
@ hovered
Definition widgets.hpp:1731
LabelAlign
Text alignment for Label.
Definition widgets.hpp:54
@ left
Definition widgets.hpp:54
@ justify
Definition widgets.hpp:54
@ match_parent
Definition widgets.hpp:54
UaSkin
Which skin a form-control widget paints with.
Definition widgets.hpp:1725
@ chromium_refresh
Definition widgets.hpp:1725
CaretStyle
Caret shape. All three anchor at the same caret x.
Definition caret.hpp:63
@ light
Definition appearance_tracker.hpp:11
@ dark
Definition appearance_tracker.hpp:11
@ touch
Direct touch (finger).
Definition input_events.hpp:77
UaColorScheme ua_scheme_for_accent(canvas::Color accent, UaColorScheme scheme, canvas::Color contrast_light, canvas::Color contrast_dark)
The scheme Chromium actually paints a control in when an author accent is set: it flips scheme to the...
Notify
Whether a value write notifies listeners, and when.
Definition slider_core.hpp:60
@ async
fire listeners at the next flush_async_notifications()
Definition slider_core.hpp:63
@ none
change the value silently
Definition slider_core.hpp:61
@ sync
fire listeners before returning
Definition slider_core.hpp:62
@ value
the widget's primary value (Knob, Fader, RangeSlider, Toggle, ProgressBar)
Definition binding_diagnostics.hpp:19
float fader_chart_track_thickness(float cross_extent)
Height of the stadium a Fader's chart is drawn in, given the fader's extent across its track: half of...
Definition widgets.hpp:1713
@ s
Definition input_events.hpp:41
@ a
Definition input_events.hpp:39
@ h
Definition input_events.hpp:39
@ l
Definition input_events.hpp:40
@ y
Definition input_events.hpp:42
@ c
Definition input_events.hpp:39
@ r
Definition input_events.hpp:41
@ n
Definition input_events.hpp:40
@ d
Definition input_events.hpp:39
@ p
Definition input_events.hpp:40
@ k
Definition input_events.hpp:40
@ b
Definition input_events.hpp:39
@ x
Definition input_events.hpp:41
@ v
Definition input_events.hpp:41
@ o
Definition input_events.hpp:40
@ e
Definition input_events.hpp:39
@ t
Definition input_events.hpp:41
@ w
Definition input_events.hpp:41
WidgetRenderStyle
Rendering style for widgets.
Definition data_display.hpp:20
@ standard
Definition data_display.hpp:20
@ auto_
Definition geometry.hpp:370
@ baseline
Definition geometry.hpp:370
@ fader
Definition view.hpp:47
@ toggle
Definition view.hpp:47
@ knob
Definition view.hpp:47
@ color
Definition css_animation.hpp:121
@ height
Definition css_animation.hpp:128
@ width
Definition css_animation.hpp:127
UaColorScheme
The CSS color-scheme a chromium_refresh palette resolves against.
Definition widgets.hpp:1728
@ center
Definition design_ir.hpp:57
std::optional< canvas::Canvas::SDFShape > widget_chart_shape(const View &view)
The SDF shape a widget's chart shader is drawn on: flat_arc for a Knob's value arc,...
The value engine shared by Pulp's continuous controls.
static constexpr Color rgba(float r, float g, float b, float a=1.0f)
Construct from float channels [0,1] (>1.0 allowed for HDR).
Definition canvas.hpp:56
Blink timing. The defaults are the values Pulp has always used.
Definition caret.hpp:78
Everything the chromium_refresh skin paints, in local coordinates, in paint order: lighten (disabled ...
Definition widgets.hpp:2231
float check_width
Definition widgets.hpp:2244
ColorScheme scheme
palette used, after the accent flip
Definition widgets.hpp:2234
canvas::Color background
Definition widgets.hpp:2237
Rect box
the largest centred square in the bounds
Definition widgets.hpp:2232
std::array< Point, 3 > check
Definition widgets.hpp:2243
std::optional< canvas::Color > lighten
disabled lighten layer on background_rect
Definition widgets.hpp:2235
canvas::Color mark
check / dash colour, or the radio dot colour
Definition widgets.hpp:2241
std::optional< Rect > dash
indeterminate dash, rounded by radius
Definition widgets.hpp:2245
std::optional< canvas::Color > border
stroked 1px on box inset 0.5px
Definition widgets.hpp:2238
std::optional< Rect > dot
checked radio dot (box inset 20%)
Definition widgets.hpp:2246
Rect background_rect
box inset 0.2px
Definition widgets.hpp:2236
Rect border_rect
Definition widgets.hpp:2239
float radius
2px for a checkbox, half the side for a radio
Definition widgets.hpp:2233
std::optional< canvas::Color > accent_fill
filled on box
Definition widgets.hpp:2240
bool has_check
polyline check[0..2], check_width wide
Definition widgets.hpp:2242
static constexpr float default_min_target_pt(PointerType type) noexcept
Minimum comfortable target extent for a pointer type, in points.
Definition hit_metrics.hpp:33
Rich key event with key code, modifiers, and repeat state.
Definition input_events.hpp:193
Definition widgets.hpp:1075
canvas::Color color
per-source color
Definition widgets.hpp:1083
float lo
low-end offset from base (−1..1)
Definition widgets.hpp:1081
float hi
high-end offset from base (−1..1)
Definition widgets.hpp:1082
One captured line of text: where it sits in this Label's box, and which slice of the text it holds (U...
Definition widgets.hpp:349
float top
Definition widgets.hpp:351
int start
Definition widgets.hpp:354
int length
Definition widgets.hpp:355
float width
Definition widgets.hpp:352
float height
Definition widgets.hpp:353
float left
Definition widgets.hpp:350
How many Labels took each line-breaking path since the last reset.
Definition widgets.hpp:366
int cached
captured layout used verbatim
Definition widgets.hpp:367
int reflowed
captured layout present but rejected
Definition widgets.hpp:368
int uncached
no captured layout at all
Definition widgets.hpp:369
The extents of the glyphs this Label will actually paint, given the content width it has been laid ou...
Definition widgets.hpp:334
float height
total painted height (line clamp applied)
Definition widgets.hpp:337
float width
widest painted line
Definition widgets.hpp:336
int line_count
Definition widgets.hpp:338
bool measured
Definition widgets.hpp:335
Rect ink
Local box of the pixels paint() covers.
Definition widgets.hpp:343
WYSIWYG text-edit metrics — the geometry an inspector edit overlay needs to draw a caret + selection ...
Definition widgets.hpp:458
float band_height
Definition widgets.hpp:462
float local_text_left
local x where text starts (handles center/right align)
Definition widgets.hpp:460
std::vector< float > caret_x_by_byte
size == display_text.size()+1
Definition widgets.hpp:463
float local_band_y
local y of the caret/selection band (top of text)
Definition widgets.hpp:461
std::string display_text
Definition widgets.hpp:459
A text run's primary-font ascent and descent in CSS px, as the browser rounded and adjusted them when...
Definition design_line_metrics.hpp:13
Rich mouse/pointer event with position, modifiers, button state, pointer ID, and stylus properties.
Definition input_events.hpp:104
Definition geometry.hpp:20
Everything the chromium_refresh skin paints, in local coordinates.
Definition widgets.hpp:1912
ColorScheme scheme
palette used, after the accent flip
Definition widgets.hpp:1920
Rect track
rounded track, shortened one device pixel per end
Definition widgets.hpp:1913
float border_radius
corner radius of border
Definition widgets.hpp:1917
Rect thumb
the circle's bounds (16px part inset half a device pixel)
Definition widgets.hpp:1919
Rect value_clip
clip for the value bar; the thumb covers its open end
Definition widgets.hpp:1915
Rect border
track inset by half the border width
Definition widgets.hpp:1916
canvas::Color value_fill
Definition widgets.hpp:1922
canvas::Color track_fill
Definition widgets.hpp:1921
float border_width
Definition widgets.hpp:1918
canvas::Color border_color
Definition widgets.hpp:1923
float track_radius
corner radius of track (half its thickness)
Definition widgets.hpp:1914
canvas::Color thumb_fill
Definition widgets.hpp:1924
Axis-aligned rectangle in continuous (float) coordinates.
Definition geometry.hpp:52
The painted line geometry of one widget.
Definition selectable_text.hpp:52
Text input from IME or keyboard composition (separate from KeyEvent).
Definition input_events.hpp:210
Source-compatible spelling of <pulp/dataplane/value_source.hpp>.