From c77072d586bf7aca58e6465ceab3d11a0be0021f Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Mon, 15 Dec 2025 21:27:33 +0800 Subject: Clean up mapper codes. --- include/cru/ui/mapper/style/ConditionMapper.h | 41 +++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 include/cru/ui/mapper/style/ConditionMapper.h (limited to 'include/cru/ui/mapper/style/ConditionMapper.h') diff --git a/include/cru/ui/mapper/style/ConditionMapper.h b/include/cru/ui/mapper/style/ConditionMapper.h new file mode 100644 index 00000000..a7bddefb --- /dev/null +++ b/include/cru/ui/mapper/style/ConditionMapper.h @@ -0,0 +1,41 @@ +#pragma once +#include "../../Base.h" +#include "../../style/Condition.h" +#include "../Mapper.h" + +#include +#include + +namespace cru::ui::mapper::style { +using ui::style::Condition; + +struct CRU_UI_API IConditionMapper : virtual Interface { + virtual bool XmlElementIsOfThisType(xml::XmlElementNode* node) = 0; + virtual ClonePtr MapConditionFromXml( + xml::XmlElementNode* node) = 0; +}; + +#define CRU_DECLARE_CONDITION_MAPPER(condition_name) \ + using ui::style::condition_name##Condition; \ + class CRU_UI_API condition_name##ConditionMapper \ + : public BasicClonePtrMapper, \ + public virtual IConditionMapper { \ + CRU_UI_DECLARE_CAN_MAP_FROM_XML_ELEMENT_TAG( \ + condition_name##Condition, ClonePtr) \ + \ + ClonePtr MapConditionFromXml( \ + xml::XmlElementNode* node) override { \ + return MapFromXml(node); \ + } \ + }; + +CRU_DECLARE_CONDITION_MAPPER(No) +CRU_DECLARE_CONDITION_MAPPER(And) +CRU_DECLARE_CONDITION_MAPPER(Or) +CRU_DECLARE_CONDITION_MAPPER(ClickState) +CRU_DECLARE_CONDITION_MAPPER(Checked) +CRU_DECLARE_CONDITION_MAPPER(Focus) +CRU_DECLARE_CONDITION_MAPPER(Hover) + +#undef CRU_DECLARE_CONDITION_MAPPER +} // namespace cru::ui::mapper::style -- cgit v1.2.3