38#ifndef DRAIN_ALIGN_ADAPTER_SVG
39#define DRAIN_ALIGN_ADAPTER_SVG
91 AnchorElem(
const std::string & s=
"") : std::string(s){
99 const std::string & str()
const {
104 std::string & str() {
108 void set(
const std::string & s);
110 void set(
const AnchorElem::Anchor & anchor);
120 bool isCollective()
const {
125 bool isPrevious()
const {
130 bool isNone()
const {
136 bool isSpecific()
const {
137 return isSet() && (!isCollective()) && (!isPrevious()) && (!isNone());
149DRAIN_ENUM_DICT(image::AnchorElem::Anchor);
150DRAIN_ENUM_OSTREAM(image::AnchorElem::Anchor);
164 void setMyAlignAnchor(
const T & value){
165 adjustAnchor(myAnchorHorz, value);
166 myAnchorVert = myAnchorHorz;
170 template <AlignBase::Axis AX,
class T>
172 void setMyAlignAnchor(
const T & value){
173 adjustAnchor(getMyAlignAnchor<AX>(), value);
179 void setDefaultAlignAnchor(
const T & value){
180 adjustAnchor(defaultAnchorHorz, value);
181 defaultAnchorVert = defaultAnchorHorz;
185 template <AlignBase::Axis AX,
class T>
187 void setDefaultAlignAnchor(
const T & value){
188 AnchorElem & defaultAnchor = getDefaultAlignAnchor<AX>();
189 adjustAnchor(defaultAnchor, value);
190 if (defaultAnchor.isPrevious()){
191 Logger(__FILE__, __FUNCTION__, __LINE__).
suspicious(
"Removing explicit ", AnchorElem::Anchor::PREVIOUS,
" as non-informative for group default");
193 adjustAnchor(defaultAnchor, AnchorElem::Anchor::DEFAULT);
200 template <AlignBase::Axis AX>
204 template <AlignBase::Axis AX>
205 const anchor_t & getDefaultAlignAnchor()
const;
208 template <AlignBase::Axis AX>
212 template <AlignBase::Axis AX>
227 void adjustAnchor(
AnchorElem & anchor,
const std::string & value){
228 anchor.assign(value);
232 void adjustAnchor(
AnchorElem & anchor,
const char * value){
233 anchor.assign(value);
237 void adjustAnchor(AnchorElem & anchor,
const AnchorElem & elem){
243 void adjustAnchor(AnchorElem & anchor,
const T & value){
278 return defaultAnchorHorz;
284 return defaultAnchorVert;
289AlignAnchorSVG::anchor_t & AlignAnchorSVG::getMyAlignAnchor<AlignBase::Axis::HORZ>() {
295AlignAnchorSVG::anchor_t & AlignAnchorSVG::getMyAlignAnchor<AlignBase::Axis::VERT>() {
303 return defaultAnchorHorz;
309 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 Enum.h:51
static const std::string & getKey(const std::string &s, bool lenient=true)
Convenience for object.set(...) like commands.
Definition Enum.h:144
Adapter designed for NodeSVG.
Definition AlignAnchorSVG.h:155
const anchor_t & getMyAlignAnchor() const
Store anchor object/symbol for aligning this object.
virtual void updateAlign()=0
Redefined in NodeSVG.
Definition AlignAnchorSVG.h:77
bool isSet() const
If not set, use default.
Definition AlignAnchorSVG.h:114