diff options
| author | Matthias Melcher <github@matthiasm.com> | 2024-08-27 15:13:32 +0200 |
|---|---|---|
| committer | Matthias Melcher <github@matthiasm.com> | 2024-08-27 15:13:32 +0200 |
| commit | ec05f78d98d8e38ea34eb1bd73647fa5b8b35f81 (patch) | |
| tree | 64768c2ff44f44200e3d9d8463924fc9450be973 /src/fl_labeltype.cxx | |
| parent | 5879e7fae7d34c037f2ac02c6c7fca86c42a186d (diff) | |
Adding horiizonatl and vertical label margin
- sizeof(Fl_Widget) not increased
- label positions can be adjusted
- try it out in test/label app
- full support in FLUD
Diffstat (limited to 'src/fl_labeltype.cxx')
| -rw-r--r-- | src/fl_labeltype.cxx | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/fl_labeltype.cxx b/src/fl_labeltype.cxx index 9f5c5f20e..991bc5e56 100644 --- a/src/fl_labeltype.cxx +++ b/src/fl_labeltype.cxx @@ -82,6 +82,29 @@ void Fl::set_labeltype(Fl_Labeltype t,Fl_Label_Draw_F* f,Fl_Label_Measure_F*m) /** Draws a label with arbitrary alignment in an arbitrary box. */ void Fl_Label::draw(int X, int Y, int W, int H, Fl_Align align) const { if (!value && !image) return; + const Fl_Align FL_ALIGN_CENTER = 0x0000; + const Fl_Align FL_ALIGN_TOP = 0x0001; + const Fl_Align FL_ALIGN_BOTTOM = 0x0002; + const Fl_Align FL_ALIGN_LEFT = 0x0004; + const Fl_Align FL_ALIGN_RIGHT = 0x0008; + const Fl_Align FL_ALIGN_TOP_LEFT = FL_ALIGN_TOP | FL_ALIGN_LEFT; + const Fl_Align FL_ALIGN_TOP_RIGHT = FL_ALIGN_TOP | FL_ALIGN_RIGHT; + const Fl_Align FL_ALIGN_BOTTOM_LEFT = FL_ALIGN_BOTTOM | FL_ALIGN_LEFT; + const Fl_Align FL_ALIGN_BOTTOM_RIGHT = FL_ALIGN_BOTTOM | FL_ALIGN_RIGHT; + const Fl_Align FL_ALIGN_LEFT_TOP = 0x0007; + const Fl_Align FL_ALIGN_RIGHT_TOP = 0x000b; + const Fl_Align FL_ALIGN_LEFT_BOTTOM = 0x000d; + const Fl_Align FL_ALIGN_RIGHT_BOTTOM = 0x000e; + switch (align&(FL_ALIGN_TOP|FL_ALIGN_BOTTOM)) { + case 0: Y += v_margin_; H -= 2*v_margin_; break; + case FL_ALIGN_TOP: Y += v_margin_; H -= v_margin_; break; + case FL_ALIGN_BOTTOM: H -= v_margin_; break; + } + switch (align&(FL_ALIGN_LEFT|FL_ALIGN_RIGHT)) { + case 0: X += h_margin_; W -= 2*h_margin_; break; + case FL_ALIGN_LEFT: X += h_margin_; W -= h_margin_; break; + case FL_ALIGN_RIGHT: W -= h_margin_; break; + } table[type](this, X, Y, W, H, align); } /** @@ -95,6 +118,7 @@ void Fl_Label::measure(int& W, int& H) const { return; } +// if (W > 0) W -= h_margin_; Fl_Label_Measure_F* f = ::measure[type]; if (!f) f = fl_normal_measure; f(this, W, H); } |
