10 #include <gmargin.hpp>
14 class GBorderValue :
public GMarginValue {
16 enum Kind {None=0, Squared=1<<0, Rounded=1<<2, Oval=1<<3, Polygon=1<<4, TextEdit=1<<5};
19 GBorderValue() =
default;
20 GBorderValue(Kind type,
float left,
float right,
float top,
float bottom,
21 GColor& idle_color, GColor& active_color);
22 GBorderValue(GPoints
const& polygon, GColor& idle, GColor& selected);
23 GBorderValue(GBorderValue
const&);
25 GBorderValue& operator=(GBorderValue
const&);
26 bool operator==(
const GBorderValue&)
const;
27 bool operator!=(
const GBorderValue&)
const;
28 friend std::ostream& operator<<(std::ostream& out,
const GBorderValue&);
30 bool hasDrawShape(Gadget&);
31 bool hasPickShape(Gadget&);
32 void drawBorder(GRenderGraphics&, GRender&);
33 bool pickBorder(Gadget&, GRect
const&, GPoint
const&);
36 gptr<GColor> idlecolor, activecolor;
40 inline bool gconvert(GBorderValue
const& from, GBorderValue& to) {to = from;
return true;}
41 bool gconvert(GString
const& from, GBorderValue& to);
42 bool gconvert(GBorderValue
const& from, GString& to);
57 enum Kind {None=0, Squared=1<<0, Rounded=1<<2, Oval=1<<3, Polygon=1<<4, TextEdit=1<<5};
60 static GBorder none, squared, rounded, oval, polygon, textedit;
73 GBorder(Kind,
float left_right_padding,
float top_bottom_padding,
80 GBorder(
GBorder const& from,
float left_right_padding,
float top_bottom_padding,
83 GBorder*
clone(
bool copy_value)
const override;
85 using GType = GPropType_<GBorder,GProp>;
87 GType& type()
const override {
return Type();}
91 void apply(Gadget*, GRender&,
Specif) final;
92 void updateGadget(Gadget&) override;
98 inline GBorder& Border() {
return *
new GBorder();}
99 inline GBorder& Border(GString
const&
value) {
return *
new GBorder(value);}