38#ifndef DRAIN_ALIGN_ADAPTER_SVG
39#define DRAIN_ALIGN_ADAPTER_SVG
90 AnchorElem(
const std::string & s=
"") : std::string(s){
98 const std::string & str()
const {
103 std::string & str() {
107 void set(
const std::string & s);
109 void set(
const AnchorElem::Anchor & anchor);
119 bool isCollective()
const {
124 bool isPrevious()
const {
129 bool isNone()
const {
135 bool isSpecific()
const {
136 return isSet() && (!isCollective()) && (!isPrevious()) && (!isNone());
155DRAIN_ENUM_DICT(image::AnchorElem::Anchor);
156DRAIN_ENUM_OSTREAM(image::AnchorElem::Anchor);
170 void setMyAlignAnchor(
const T & value){
171 adjustAnchor(myAnchorHorz, value);
172 myAnchorVert = myAnchorHorz;
176 template <AlignBase::Axis AX,
class T>
178 void setMyAlignAnchor(
const T & value){
179 adjustAnchor(getMyAlignAnchor<AX>(), value);
185 void setDefaultAlignAnchor(
const T & value){
186 adjustAnchor(defaultAnchorHorz, value);
187 defaultAnchorVert = defaultAnchorHorz;
191 template <AlignBase::Axis AX,
class T>
193 void setDefaultAlignAnchor(
const T & value){
194 AnchorElem & defaultAnchor = getDefaultAlignAnchor<AX>();
195 adjustAnchor(defaultAnchor, value);
196 if (defaultAnchor.isPrevious()){
197 Logger(__FILE__, __FUNCTION__, __LINE__).
suspicious(
"Removing explicit ", AnchorElem::Anchor::PREVIOUS,
" as non-informative for group default");
199 adjustAnchor(defaultAnchor, AnchorElem::Anchor::DEFAULT);
206 template <AlignBase::Axis AX>
210 template <AlignBase::Axis AX>
211 const anchor_t & getDefaultAlignAnchor()
const;
214 template <AlignBase::Axis AX>
218 template <AlignBase::Axis AX>
233 void adjustAnchor(
AnchorElem & anchor,
const std::string & value){
234 anchor.assign(value);
238 void adjustAnchor(
AnchorElem & anchor,
const char * value){
239 anchor.assign(value);
243 void adjustAnchor(AnchorElem & anchor,
const AnchorElem & elem){
249 void adjustAnchor(AnchorElem & anchor,
const T & value){
284 return defaultAnchorHorz;
290 return defaultAnchorVert;
295AlignAnchorSVG::anchor_t & AlignAnchorSVG::getMyAlignAnchor<AlignBase::Axis::HORZ>() {
301AlignAnchorSVG::anchor_t & AlignAnchorSVG::getMyAlignAnchor<AlignBase::Axis::VERT>() {
309 return defaultAnchorHorz;
315 return defaultAnchorVert;
LogSourc e is the means for a function or any program segment to "connect" to a Log.
Definition Log.h:312
Logger & suspicious(const TT &... args)
A weak warning about something going possibly wrong.
Definition Log.h:500
Definition DataSelector.cpp:1277
A container for a static dictionary of enumeration values.
Definition EnumFlags.h:69
static const std::string & getKey(const std::string &s, bool lenient=true)
Convenience for object.set(...) like commands.
Definition EnumFlags.h:162
Adapter designed for NodeSVG.
Definition AlignAnchorSVG.h:161
const anchor_t & getMyAlignAnchor() const
Store anchor object/symbol for aligning this object.
virtual void updateAlign()=0
Redefined in NodeSVG.
Definition AlignAnchorSVG.h:76
bool isSet() const
If not set, use default.
Definition AlignAnchorSVG.h:113