按钮颜色
This commit is contained in:
parent
542949e9f5
commit
28980f8c41
@ -6,7 +6,6 @@
|
||||
#include "widget/panel_widget/mbox.h"
|
||||
|
||||
mbutton::mbutton() {
|
||||
color_ = { 0.2f, 0.2f, 0.2f, 1 };
|
||||
slot_.h_alignment(horizontal_alignment_t::center);
|
||||
slot_.v_alignment(vertical_alignment_t::center);
|
||||
}
|
||||
@ -17,7 +16,14 @@ void mbutton::init() {
|
||||
}
|
||||
|
||||
void mbutton::setup_widget(const button_args& in_args) {
|
||||
mborder<button_args>::setup_widget(in_args);
|
||||
normal_color_ = in_args.normal_color();
|
||||
hover_color_ = in_args.hover_color();
|
||||
pressed_color_ = in_args.pressed_color();
|
||||
|
||||
color_ = normal_color_;
|
||||
slot_.h_alignment(horizontal_alignment_t::center);
|
||||
slot_.v_alignment(vertical_alignment_t::center);
|
||||
set_visibility(visibility_t::visible);
|
||||
}
|
||||
|
||||
void mbutton::on_paint(mirage_paint_context& in_context) {
|
||||
@ -34,7 +40,7 @@ void mbutton::on_paint(mirage_paint_context& in_context) {
|
||||
void mbutton::on_click(const Eigen::Vector2f& in_position, mouse_button in_button) {
|
||||
mborder::on_click(in_position, in_button);
|
||||
std::println(std::cout, "点击 Button: {}, {}", in_position.x(), in_position.y());
|
||||
color_ = {0.2f, 0.2f, 0.2f, 1};
|
||||
color_ = pressed_color_;
|
||||
invalidate(invalidate_reason::paint);
|
||||
}
|
||||
|
||||
@ -47,21 +53,21 @@ void mbutton::on_double_click(const Eigen::Vector2f& in_position, mouse_button i
|
||||
void mbutton::on_mouse_enter() {
|
||||
mborder::on_mouse_enter();
|
||||
std::println(std::cout, "鼠标进入 Button");
|
||||
color_ = {0.2f, 0.2f, 0.2f, 1};
|
||||
color_ = hover_color_;
|
||||
invalidate(invalidate_reason::paint);
|
||||
}
|
||||
|
||||
void mbutton::on_mouse_leave() {
|
||||
mborder::on_mouse_leave();
|
||||
std::println(std::cout, "鼠标离开 Button");
|
||||
color_ = {0.1f, 0.1f, 0.1f, 1};
|
||||
color_ = normal_color_;
|
||||
invalidate(invalidate_reason::paint);
|
||||
}
|
||||
|
||||
hit_test_handle mbutton::on_mouse_button_down(const Eigen::Vector2f& in_position, mouse_button in_button) {
|
||||
mborder::on_mouse_button_down(in_position, in_button);
|
||||
std::println(std::cout, "鼠标按下 Button: {}, {}", in_position.x(), in_position.y());
|
||||
color_ = {0.1f, 0.1f, 0.1f, 1};
|
||||
color_ = pressed_color_;
|
||||
invalidate(invalidate_reason::paint);
|
||||
return hit_test_handle::handled();
|
||||
}
|
||||
@ -69,7 +75,7 @@ hit_test_handle mbutton::on_mouse_button_down(const Eigen::Vector2f& in_position
|
||||
hit_test_handle mbutton::on_mouse_button_up(const Eigen::Vector2f& in_position, mouse_button in_button) {
|
||||
mborder::on_mouse_button_up(in_position, in_button);
|
||||
std::println(std::cout, "鼠标释放 Button: {}, {}", in_position.x(), in_position.y());
|
||||
color_ = {0.2f, 0.2f, 0.2f, 1};
|
||||
color_ = normal_color_;
|
||||
invalidate(invalidate_reason::paint);
|
||||
return hit_test_handle::handled();
|
||||
}
|
||||
|
@ -2,7 +2,9 @@
|
||||
#include "mborder.h"
|
||||
|
||||
struct button_args {
|
||||
WARG(linear_color, color)
|
||||
WARG(linear_color, normal_color, linear_color(0.2f, 0.2f, 0.2f, 1))
|
||||
WARG(linear_color, hover_color, linear_color(0.2f, 0.2f, 0.2f, 1))
|
||||
WARG(linear_color, pressed_color, linear_color(0.1f, 0.1f, 0.1f, 1))
|
||||
};
|
||||
|
||||
class mbutton : public mborder<button_args> {
|
||||
@ -19,5 +21,9 @@ public:
|
||||
virtual hit_test_handle on_mouse_button_down(const Eigen::Vector2f& in_position, mouse_button in_button) override;
|
||||
virtual hit_test_handle on_mouse_button_up(const Eigen::Vector2f& in_position, mouse_button in_button) override;
|
||||
private:
|
||||
linear_color normal_color_;
|
||||
linear_color hover_color_;
|
||||
linear_color pressed_color_;
|
||||
|
||||
linear_color color_;
|
||||
};
|
||||
|
@ -5,10 +5,7 @@
|
||||
void mimage::setup_widget(const image_args& in_args) {
|
||||
set_color(in_args.color());
|
||||
set_image(in_args.image());
|
||||
if (in_args.sampler())
|
||||
set_sampler(in_args.sampler());
|
||||
else
|
||||
set_sampler(texture_sampler_builder::get_sampler(sampler_type::default_));
|
||||
set_sampler(in_args.sampler());
|
||||
}
|
||||
|
||||
void mimage::on_paint(mirage_paint_context& in_context) {
|
||||
|
@ -5,9 +5,9 @@
|
||||
class texture;
|
||||
|
||||
struct image_args {
|
||||
WARG(std::shared_ptr<texture>, image)
|
||||
WARG(linear_color, color)
|
||||
WARG(std::shared_ptr<texture_sampler>, sampler)
|
||||
WARG(std::shared_ptr<texture>, image, {})
|
||||
WARG(linear_color, color, linear_color::white())
|
||||
WARG(std::shared_ptr<texture_sampler>, sampler, texture_sampler_builder::get_sampler(sampler_type::default_))
|
||||
};
|
||||
|
||||
class mimage : public mleaf_widget<image_args> {
|
||||
|
@ -9,9 +9,9 @@
|
||||
void mtext_block::setup_widget(const text_block_args& in_args) {
|
||||
text_ = in_args.text();
|
||||
font_ = in_args.font();
|
||||
font_size_ = in_args.font_size().value_or(15.f);
|
||||
line_spacing_ = in_args.line_spacing().value_or(1.2f);
|
||||
max_width_ = in_args.max_width().value_or(0.f);
|
||||
font_size_ = in_args.font_size();
|
||||
line_spacing_ = in_args.line_spacing();
|
||||
max_width_ = in_args.max_width();
|
||||
update_layout();
|
||||
}
|
||||
|
||||
|
@ -5,11 +5,11 @@
|
||||
class font_face_interface;
|
||||
|
||||
struct text_block_args {
|
||||
WARG(std::u32string, text)
|
||||
WARG(std::shared_ptr<font_face_interface>, font)
|
||||
WARG(std::optional<float>, font_size)
|
||||
WARG(std::optional<float>, line_spacing)
|
||||
WARG(std::optional<float>, max_width)
|
||||
WARG(std::u32string, text, {})
|
||||
WARG(std::shared_ptr<font_face_interface>, font, {})
|
||||
WARG(float, font_size, 24.f)
|
||||
WARG(float, line_spacing, 1.2f)
|
||||
WARG(float, max_width, 0.f)
|
||||
};
|
||||
|
||||
class mtext_block : public mleaf_widget<text_block_args> {
|
||||
|
@ -134,9 +134,9 @@ public:
|
||||
virtual void setup_widget(const ConstructArgs& in_args) {}
|
||||
};
|
||||
|
||||
#define WARG(type, name) \
|
||||
#define WARG(type, name, default_value) \
|
||||
protected: \
|
||||
type name##_{}; \
|
||||
type name##_ = default_value; \
|
||||
public: \
|
||||
const auto& name() const { return name##_; } \
|
||||
auto& name(const type& in_value) { \
|
||||
|
Loading…
x
Reference in New Issue
Block a user