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());
148DRAIN_ENUM_DICT(image::AnchorElem::Anchor);
149DRAIN_ENUM_OSTREAM(image::AnchorElem::Anchor);
163 void setMyAlignAnchor(
const T & value){
164 adjustAnchor(myAnchorHorz, value);
165 myAnchorVert = myAnchorHorz;
169 template <AlignBase::Axis AX,
class T>
171 void setMyAlignAnchor(
const T & value){
172 adjustAnchor(getMyAlignAnchor<AX>(), value);
178 void setDefaultAlignAnchor(
const T & value){
179 adjustAnchor(defaultAnchorHorz, value);
180 defaultAnchorVert = defaultAnchorHorz;
184 template <AlignBase::Axis AX,
class T>
186 void setDefaultAlignAnchor(
const T & value){
187 AnchorElem & defaultAnchor = getDefaultAlignAnchor<AX>();
188 adjustAnchor(defaultAnchor, value);
189 if (defaultAnchor.isPrevious()){
190 Logger(__FILE__, __FUNCTION__, __LINE__).
suspicious(
"Removing explicit ", AnchorElem::Anchor::PREVIOUS,
" as non-informative for group default");
192 adjustAnchor(defaultAnchor, AnchorElem::Anchor::DEFAULT);
199 template <AlignBase::Axis AX>
203 template <AlignBase::Axis AX>
204 const anchor_t & getDefaultAlignAnchor()
const;
207 template <AlignBase::Axis AX>
211 template <AlignBase::Axis AX>
226 void adjustAnchor(
AnchorElem & anchor,
const std::string & value){
227 anchor.assign(value);
231 void adjustAnchor(
AnchorElem & anchor,
const char * value){
232 anchor.assign(value);
236 void adjustAnchor(AnchorElem & anchor,
const AnchorElem & elem){
242 void adjustAnchor(AnchorElem & anchor,
const T & value){
277 return defaultAnchorHorz;
283 return defaultAnchorVert;
288AlignAnchorSVG::anchor_t & AlignAnchorSVG::getMyAlignAnchor<AlignBase::Axis::HORZ>() {
294AlignAnchorSVG::anchor_t & AlignAnchorSVG::getMyAlignAnchor<AlignBase::Axis::VERT>() {
302 return defaultAnchorHorz;
308 return defaultAnchorVert;
LogSourc e is the means for a function or any program segment to "connect" to a Log.
Definition Log.h:313
Logger & suspicious(const TT &... args)
A weak warning about something going possibly wrong.
Definition Log.h:501
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:154
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