First impression: 1. Why does HAlign have a Bitmask for horizontal, and VALign a bitmask for Vertical? They are by definition horizontal/vertical. We should get rid of these bitmasks.
2. I made Align an enum class on purpose for type safety - at some parts in the code, people had hacked hard-coded ints in the past, which made the code both fragile and harder to read. Having an enum class prevents people from doing that. I have annotated the first 2000 lines - most of these would have been flagged up by the compiler had you been using enum class. So, please use enum class first and clean up the compiler errors, then I will have another look. Let me know if you need any help with the trickier parts like the tiling in fs_menu. 3. UI::HAlign::kHCenter can now be renamed to UI::HAlign::kCenter - easier to read. 4. Is there a special reason for the hex notation? 5. Finally, we should analyze the remaining uses of Align to see if we still need them. Diff comments: > > === modified file 'src/editor/ui_menus/main_menu_load_or_save_map.cc' > --- src/editor/ui_menus/main_menu_load_or_save_map.cc 2017-01-25 18:55:59 > +0000 > +++ src/editor/ui_menus/main_menu_load_or_save_map.cc 2017-02-21 15:47:40 > +0000 > @@ -57,7 +57,7 @@ > tableh_, > MapDetails::Style::kWui), > directory_info_( > - this, padding_, get_inner_h() - 2 * buth_ - 4 * padding_, "", > UI::Align::kLeft), > + this, padding_, get_inner_h() - 2 * buth_ - 4 * padding_, "", > UI::Align::kTopLeft), UI::HAlign::kLeft > ok_(this, > "ok", > UI::g_fh1->fontset()->is_rtl() ? get_inner_w() / 2 - butw_ - > padding_ : > > === modified file 'src/editor/ui_menus/main_menu_random_map.cc' > --- src/editor/ui_menus/main_menu_random_map.cc 2017-01-25 18:55:59 > +0000 > +++ src/editor/ui_menus/main_menu_random_map.cc 2017-02-21 15:47:40 > +0000 > @@ -182,46 +181,39 @@ > mountains_box_(&box_, 0, 0, UI::Box::Horizontal, 0, 0, margin_), > mountains_label_(&mountains_box_, 0, 0, _("Mountains:")), > mountains_(&mountains_box_, > - 0, > - 0, > + 0, 0, > box_width_ / 3, > resources_label_.get_h(), > (boost::format(_("%i %%")) % mountainsval_).str(), > - UI::Align::kHCenter), > + UI::Align::kTopCenter), UI::HAlign::kCenter > island_mode_(&box_, Vector2i(0, 0), _("Island mode")), > // Geeky stuff > map_number_box_(&box_, 0, 0, UI::Box::Horizontal, 0, 0, margin_), > map_number_label_(&map_number_box_, 0, 0, _("Random Number:")), > map_number_edit_(&map_number_box_, > - 0, > - 0, > + 0, 0, > box_width_ - 2 * margin_ - map_number_label_.get_w(), > - 0, > - 2, > + 0, 2, > g_gr->images().get("images/ui_basic/but1.png")), > map_id_box_(&box_, 0, 0, UI::Box::Horizontal, 0, 0, margin_), > map_id_label_(&map_id_box_, 0, 0, _("Map ID:")), > map_id_edit_(&map_id_box_, > - 0, > - 0, > + 0, 0, > box_width_ - 2 * margin_ - map_id_label_.get_w(), > - 0, > - 2, > + 0, 2, > g_gr->images().get("images/ui_basic/but1.png")), > // Buttons > button_box_(&box_, 0, 0, UI::Box::Horizontal, 0, 0, margin_), > ok_button_(&button_box_, > "generate_map", > - 0, > - 0, > + 0, 0, > box_width_ / 2 - margin_, > 0, > g_gr->images().get("images/ui_basic/but5.png"), > _("Generate Map")), > cancel_button_(&button_box_, > "generate_map", > - 0, > - 0, > + 0, 0, > box_width_ / 2 - margin_, > 0, > g_gr->images().get("images/ui_basic/but1.png"), > > === modified file 'src/editor/ui_menus/tool_noise_height_options_menu.cc' > --- src/editor/ui_menus/tool_noise_height_options_menu.cc 2017-01-25 > 18:55:59 +0000 > +++ src/editor/ui_menus/tool_noise_height_options_menu.cc 2017-02-21 > 15:47:40 +0000 > @@ -95,15 +95,15 @@ > UI::Textarea* label = > new UI::Textarea(&box_, 0, 0, 0, 0, _("Random Height"), > UI::Align::kCenter); > label->set_fixed_width(get_inner_w() - 2 * hmargin()); > - box_.add(label, UI::Align::kLeft); > - box_.add(&upper_, UI::Align::kLeft); > - box_.add(&lower_, UI::Align::kLeft); > + box_.add(label, UI::HAlign::kLeft); > + box_.add(&upper_, UI::HAlign::kLeft); > + box_.add(&lower_, UI::HAlign::kLeft); > > box_.add_space(2 * vspacing()); > label = new UI::Textarea(&box_, 0, 0, 0, 0, _("Fixed Height"), > UI::Align::kCenter); UI::HAlign::kCenter > label->set_fixed_width(get_inner_w() - 2 * hmargin()); > - box_.add(label, UI::Align::kLeft); > - box_.add(&set_to_, UI::Align::kLeft); > + box_.add(label, UI::HAlign::kLeft); > + box_.add(&set_to_, UI::HAlign::kLeft); > > box_.set_size(get_inner_w() - 2 * hmargin(), upper_.get_h() + > lower_.get_h() + set_to_.get_h() + > 2 * label->get_h() + 7 > * vspacing()); > > === modified file 'src/graphic/wordwrap.h' > --- src/graphic/wordwrap.h 2017-01-25 18:55:59 +0000 > +++ src/graphic/wordwrap.h 2017-02-21 15:47:40 +0000 > @@ -51,7 +51,7 @@ > > void draw(RenderTarget& dst, > Vector2i where, > - Align align = UI::Align::kLeft, > + Align align = UI::Align::kTopLeft, UI::HAlign::kLeft > uint32_t caret = std::numeric_limits<uint32_t>::max()); > > void calc_wrapped_pos(uint32_t caret, uint32_t& line, uint32_t& pos) > const; > > === modified file 'src/logic/map_objects/map_object.cc' > --- src/logic/map_objects/map_object.cc 2017-01-25 18:55:59 +0000 > +++ src/logic/map_objects/map_object.cc 2017-02-21 15:47:40 +0000 > @@ -482,7 +482,7 @@ > round(census_pos + Vector2f(0, > rendered_census_info->height() / 2.f + 10 * scale)) > .cast<float>(); > dst->blit(statistics_pos, > - UI::g_fh1->render(as_condensed(statictics, > UI::Align::kLeft, font_size)), > + UI::g_fh1->render(as_condensed(statictics, > UI::HAlign::kLeft, font_size)), > BlendMode::UseAlpha, UI::Align::kCenter); UI::HAlign::kCenter > } > } > > === modified file 'src/ui_basic/box.cc' > --- src/ui_basic/box.cc 2017-02-14 18:11:53 +0000 > +++ src/ui_basic/box.cc 2017-02-21 15:47:40 +0000 > @@ -376,15 +376,15 @@ > maxbreadth = get_inner_w(); > } > switch (it.u.panel.align) { > - case UI::Align::kHCenter: > + case UI::HAlign::kHCenter: > breadth = (maxbreadth - breadth) / 2; > break; > > - case UI::Align::kRight: > + case UI::HAlign::kRight: > breadth = maxbreadth - breadth; > break; > - case UI::Align::kLeft: > - default: > + case UI::HAlign::kLeft: > + case UI::HAlign::kHorizontal: // should not be used but makes > the enum complete Get rid of this in the enum. > breadth = 0; > } > > > === modified file 'src/ui_basic/checkbox.cc' > --- src/ui_basic/checkbox.cc 2017-02-12 09:10:57 +0000 > +++ src/ui_basic/checkbox.cc 2017-02-21 15:47:40 +0000 > @@ -153,7 +153,7 @@ > image_anchor.x = rendered_text_->width() + > kPadding; > image_anchor.y = (get_h() - kStateboxSize) / 2; > } > - dst.blit(text_anchor, rendered_text_, > BlendMode::UseAlpha, UI::Align::kLeft); > + dst.blit(text_anchor, rendered_text_, > BlendMode::UseAlpha, UI::Align::kTopLeft); UI::HAlign::kLeft > } > > dst.blitrect( > > === modified file 'src/ui_basic/fullscreen_window.cc' > --- src/ui_basic/fullscreen_window.cc 2017-01-25 18:55:59 +0000 > +++ src/ui_basic/fullscreen_window.cc 2017-02-21 15:47:40 +0000 > @@ -93,14 +93,14 @@ > } > > // Frame edges > - blit_image(dst, > get_frame_image(FullscreenWindow::Frames::kEdgeLeftTile), UI::Align::kTopLeft, > - UI::Align::kVertical); > - blit_image(dst, > get_frame_image(FullscreenWindow::Frames::kEdgeRightTile), > UI::Align::kTopRight, > - UI::Align::kVertical); > - blit_image(dst, > get_frame_image(FullscreenWindow::Frames::kEdgeTopTile), UI::Align::kTopLeft, > - UI::Align::kHorizontal); > + blit_image(dst, > get_frame_image(FullscreenWindow::Frames::kEdgeLeftTile), > + UI::Align::kTopLeft, UI::VAlign::kVertical); I'll need to take a closer look at these - seems like horizonal/vertical might be needed here after all. We might split this into 2 parameters for HAlign, VAlign instead though. > + blit_image(dst, > get_frame_image(FullscreenWindow::Frames::kEdgeRightTile), > + UI::Align::kTopRight, UI::VAlign::kVertical); > + blit_image(dst, get_frame_image(FullscreenWindow::Frames::kEdgeTopTile), > + UI::Align::kTopLeft, UI::HAlign::kHorizontal); > blit_image(dst, > get_frame_image(FullscreenWindow::Frames::kEdgeBottomTile), > - UI::Align::kBottomLeft, UI::Align::kHorizontal); > + UI::Align::kBottomLeft, UI::HAlign::kHorizontal); > > // Frame corners > blit_image(dst, > get_frame_image(FullscreenWindow::Frames::kCornerTopLeft), > UI::Align::kTopLeft); > > === modified file 'src/ui_basic/multilineeditbox.cc' > --- src/ui_basic/multilineeditbox.cc 2017-01-25 18:55:59 +0000 > +++ src/ui_basic/multilineeditbox.cc 2017-02-21 15:47:40 +0000 > @@ -450,7 +450,7 @@ > > d_->ww.set_draw_caret(has_focus()); > > - d_->ww.draw(dst, Vector2i(0, -int32_t(d_->scrollbar.get_scrollpos())), > UI::Align::kLeft, > + d_->ww.draw(dst, Vector2i(0, -int32_t(d_->scrollbar.get_scrollpos())), > UI::Align::kTopLeft, UI::HAlign::kLeft > has_focus() ? d_->cursor_pos : > std::numeric_limits<uint32_t>::max()); > } > > > === modified file 'src/ui_basic/slider.cc' > --- src/ui_basic/slider.cc 2017-02-18 14:03:02 +0000 > +++ src/ui_basic/slider.cc 2017-02-21 15:47:40 +0000 > @@ -540,8 +539,8 @@ > for (uint32_t i = 0; i < labels.size(); i++) { > dst.blit(Vector2f(gap_1 + i * gap_n, get_h()), > UI::g_fh1->render( > - as_condensed(labels[i], UI::Align::kBottomCenter, > UI_FONT_SIZE_SMALL - 2)), > - BlendMode::UseAlpha, UI::Align::kBottomCenter); > + as_condensed(labels[i], UI::HAlign::kHCenter, > UI_FONT_SIZE_SMALL - 2)), > + BlendMode::UseAlpha, UI::Align::kCenter); UI::HAlign::kCenter > } > } > > > === modified file 'src/ui_basic/spinbox.cc' > --- src/ui_basic/spinbox.cc 2017-01-25 18:55:59 +0000 > +++ src/ui_basic/spinbox.cc 2017-02-21 15:47:40 +0000 > @@ -110,9 +110,9 @@ > box_ = new UI::Box(this, 0, 0, UI::Box::Horizontal, 0, 0, padding_); > > sbi_->label = > - new UI::MultilineTextarea(box_, 0, 0, 0, 0, label_text, > UI::Align::kLeft, button_background, > + new UI::MultilineTextarea(box_, 0, 0, 0, 0, label_text, > UI::HAlign::kLeft, button_background, > > UI::MultilineTextarea::ScrollMode::kNoScrolling); > - box_->add(sbi_->label, UI::Align::kHCenter); > + box_->add(sbi_->label, UI::HAlign::kHCenter); > > sbi_->text = new UI::Textarea(box_, "", UI::Align::kCenter); UI::HAlign::kCenter > > > === modified file 'src/ui_basic/tabpanel.cc' > --- src/ui_basic/tabpanel.cc 2017-02-12 09:10:57 +0000 > +++ src/ui_basic/tabpanel.cc 2017-02-21 15:47:40 +0000 > @@ -302,7 +302,7 @@ > } else { > dst.blit(Vector2f(x + kTabPanelTextMargin, > (kTabPanelButtonHeight - > tabs_[idx]->pic->height()) / 2), > - tabs_[idx]->pic, BlendMode::UseAlpha, > UI::Align::kLeft); > + tabs_[idx]->pic, BlendMode::UseAlpha, > UI::Align::kTopLeft); UI::HAlign::kLeft > } > > // Draw top part of border > > === modified file 'src/ui_fsmenu/campaign_select.cc' > --- src/ui_fsmenu/campaign_select.cc 2017-01-25 18:55:59 +0000 > +++ src/ui_fsmenu/campaign_select.cc 2017-02-21 15:47:40 +0000 > @@ -45,10 +45,10 @@ > table_(this, tablex_, tabley_, tablew_, tableh_), > > // Main Title > - title_(this, get_w() / 2, tabley_ / 3, _("Choose a campaign"), > UI::Align::kHCenter), > + title_(this, get_w() / 2, tabley_ / 3, _("Choose a campaign"), > UI::Align::kTopCenter), UI::HAlign::kCenter > > // Campaign description > - label_campname_(this, right_column_x_, tabley_, "", UI::Align::kLeft), > + label_campname_(this, right_column_x_, tabley_, "", > UI::Align::kTopLeft), UI::HAlign::kLeft > ta_campname_(this, > right_column_x_ + indent_, > get_y_from_preceding(label_campname_) + padding_, -- https://code.launchpad.net/~widelands-dev/widelands/align-align/+merge/317871 Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/align-align into lp:widelands. _______________________________________________ Mailing list: https://launchpad.net/~widelands-dev Post to : widelands-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~widelands-dev More help : https://help.launchpad.net/ListHelp