#include "cru/ui/controls/IconButton.h" #include "../Helper.h" #include "cru/platform/graphics/Factory.h" #include "cru/platform/graphics/Geometry.h" #include "cru/ui/ThemeManager.h" namespace cru::ui::controls { IconButton::IconButton() : container_render_object_(new render::BorderRenderObject()), geometry_render_object_(new render::GeometryRenderObject()), click_detector_(this) { container_render_object_->SetChild(geometry_render_object_.get()); container_render_object_->SetAttachedControl(this); geometry_render_object_->SetAttachedControl(this); container_render_object_->SetBorderEnabled(true); GetStyleRuleSet()->SetParent( ThemeManager::GetInstance()->GetResourceStyleRuleSet( "icon-button.style")); } IconButton::IconButton(std::string_view icon_svg_path_data_string, const Rect& view_port) : IconButton() { SetIconWithSvgPathDataString(icon_svg_path_data_string, view_port); } IconButton::~IconButton() {} void IconButton::SetIconFillColor(const Color& color) { SetIconFillBrush(GetGraphicsFactory()->CreateSolidColorBrush(color)); } void IconButton::SetIconWithSvgPathDataString( std::string_view icon_svg_path_data_string, const Rect& view_port) { SetIconGeometry(platform::graphics::CreateGeometryFromSvgPathData( GetGraphicsFactory(), icon_svg_path_data_string), view_port); } void IconButton::SetIconWithSvgPathDataStringResourceKey( std::string_view icon_svg_path_data_string_resource_key, const Rect& view_port) { SetIconWithSvgPathDataString(ThemeManager::GetInstance()->GetResourceString( icon_svg_path_data_string_resource_key), view_port); } } // namespace cru::ui::controls