diff --git a/src/app/commands/cmd_about.cpp b/src/app/commands/cmd_about.cpp index 3cf335a06..657038358 100644 --- a/src/app/commands/cmd_about.cpp +++ b/src/app/commands/cmd_about.cpp @@ -91,11 +91,11 @@ void AboutCommand::onExecute(Context* context) box1->addChild(grid); window->addChild(box1); - jwidget_set_border(close_button, - close_button->border_width.l + 16*jguiscale(), - close_button->border_width.t, - close_button->border_width.r + 16*jguiscale(), - close_button->border_width.b); + close_button->setBorder(gfx::Border( + close_button->border_width.l + 16*jguiscale(), + close_button->border_width.t, + close_button->border_width.r + 16*jguiscale(), + close_button->border_width.b)); close_button->Click.connect(Bind(&Window::closeWindow, window.get(), close_button)); diff --git a/src/app/commands/filters/filter_target_buttons.cpp b/src/app/commands/filters/filter_target_buttons.cpp index 40b7e800f..e5e4f5dd7 100644 --- a/src/app/commands/filters/filter_target_buttons.cpp +++ b/src/app/commands/filters/filter_target_buttons.cpp @@ -46,7 +46,7 @@ FilterTargetButtons::FilterTargetButtons(int imgtype, bool withChannels) { #define ADD(box, widget, hook) \ if (widget) { \ - jwidget_set_border(widget, 2 * jguiscale()); \ + widget->setBorder(gfx::Border(2 * jguiscale())); \ box->addChild(widget); \ widget->Click.connect(Bind(&FilterTargetButtons::hook, this, widget)); \ } @@ -62,8 +62,8 @@ FilterTargetButtons::FilterTargetButtons(int imgtype, bool withChannels) hbox = new Box(JI_HORIZONTAL | JI_HOMOGENEOUS); - jwidget_noborders(this); - jwidget_noborders(hbox); + this->noBorderNoChildSpacing(); + hbox->noBorderNoChildSpacing(); if (withChannels) { switch (imgtype) { diff --git a/src/app/ui/button_set.cpp b/src/app/ui/button_set.cpp index 420b2b469..41a3fda10 100644 --- a/src/app/ui/button_set.cpp +++ b/src/app/ui/button_set.cpp @@ -70,12 +70,12 @@ ButtonSet::ButtonSet(int w, int h, int firstSelected, ...) va_start(ap, firstSelected); - jwidget_noborders(this); + this->noBorderNoChildSpacing(); for (y=0; y 1) { hbox = new Box(JI_HORIZONTAL | JI_HOMOGENEOUS); - jwidget_noborders(hbox); + hbox->noBorderNoChildSpacing(); } for (x=0; xget_part(PART_EDITOR_SELECTED_E)->w; int b = theme->get_part(PART_EDITOR_SELECTED_S)->h; - jwidget_set_border(this, l, t, r, b); + setBorder(gfx::Border(l, t, r, b)); } void ColorBar::ScrollableView::onPaint(ui::PaintEvent& ev) diff --git a/src/app/ui/editor/editor_view.cpp b/src/app/ui/editor/editor_view.cpp index 1db19e54f..46bb96fc6 100644 --- a/src/app/ui/editor/editor_view.cpp +++ b/src/app/ui/editor/editor_view.cpp @@ -48,7 +48,7 @@ EditorView::EditorView(EditorView::Type type) int r = theme->get_part(PART_EDITOR_SELECTED_E)->w; int b = theme->get_part(PART_EDITOR_SELECTED_S)->h; - jwidget_set_border(this, l, t, r, b); + setBorder(gfx::Border(l, t, r, b)); setupScrollbars(); UIContext::instance()->settings()->addObserver(this); diff --git a/src/app/ui/status_bar.cpp b/src/app/ui/status_bar.cpp index 8762112f2..85a27a5a6 100644 --- a/src/app/ui/status_bar.cpp +++ b/src/app/ui/status_bar.cpp @@ -183,7 +183,7 @@ StatusBar::StatusBar() // The extra pixel in left and right borders are necessary so // m_commandsBox and m_movePixelsBox do not overlap the upper-left // and upper-right pixels drawn in onPaint() event (see putpixels) - jwidget_set_border(this, 1*jguiscale(), 0, 1*jguiscale(), 0); + setBorder(gfx::Border(1*jguiscale(), 0, 1*jguiscale(), 0)); // Construct the commands box { @@ -209,9 +209,9 @@ StatusBar::StatusBar() m_slider->Change.connect(Bind(&slider_change_hook, m_slider)); jwidget_set_min_size(m_slider, JI_SCREEN_W/5, 0); - jwidget_set_border(box1, 2*jguiscale(), 1*jguiscale(), 2*jguiscale(), 2*jguiscale()); - jwidget_noborders(box2); - jwidget_noborders(box3); + box1->setBorder(gfx::Border(2, 1, 2, 2)*jguiscale()); + box2->noBorderNoChildSpacing(); + box3->noBorderNoChildSpacing(); box3->setExpansive(true); box4->addChild(m_currentFrame); @@ -236,8 +236,8 @@ StatusBar::StatusBar() Box* box1 = new Box(JI_HORIZONTAL); Box* box2 = new Box(JI_VERTICAL); - jwidget_set_border(box1, 2*jguiscale(), 1*jguiscale(), 2*jguiscale(), 2*jguiscale()); - jwidget_noborders(box2); + box1->setBorder(gfx::Border(2, 1, 2, 2)*jguiscale()); + box2->noBorderNoChildSpacing(); box2->setExpansive(true); m_linkLabel = new LinkLabel((std::string(WEBSITE) + "donate/").c_str(), "Support This Project"); diff --git a/src/app/widget_loader.cpp b/src/app/widget_loader.cpp index 5dd6200dc..ede6cb732 100644 --- a/src/app/widget_loader.cpp +++ b/src/app/widget_loader.cpp @@ -430,7 +430,7 @@ Widget* WidgetLoader::convertXmlElementToWidget(const TiXmlElement* elem, Widget widget->setFocusMagnet(true); if (noborders) - jwidget_noborders(widget); + widget->noBorderNoChildSpacing(); if (childspacing) widget->child_spacing = ustrtol(childspacing, NULL, 10); diff --git a/src/she/display.h b/src/she/display.h index 07837136d..0e2901ee3 100644 --- a/src/she/display.h +++ b/src/she/display.h @@ -11,7 +11,7 @@ namespace she { class EventQueue; - class NotDisposableSurface; + class NonDisposableSurface; class Surface; // A display or window to show graphics. @@ -35,7 +35,7 @@ namespace she { // Returns the main surface to draw into this display. // You must not dispose this surface. - virtual NotDisposableSurface* getSurface() = 0; + virtual NonDisposableSurface* getSurface() = 0; // Flips all graphics in the surface to the real display. Returns // false if the flip couldn't be done because the display was diff --git a/src/she/she_alleg4.cpp b/src/she/she_alleg4.cpp index 4aecba4e2..f127786cf 100644 --- a/src/she/she_alleg4.cpp +++ b/src/she/she_alleg4.cpp @@ -318,8 +318,8 @@ public: m_surface = newSurface; } - NotDisposableSurface* getSurface() OVERRIDE { - return static_cast(m_surface); + NonDisposableSurface* getSurface() OVERRIDE { + return static_cast(m_surface); } bool flip() OVERRIDE { diff --git a/src/she/surface.h b/src/she/surface.h index 2046663dc..2ad70d0ef 100644 --- a/src/she/surface.h +++ b/src/she/surface.h @@ -22,9 +22,9 @@ namespace she { virtual void* nativeHandle() = 0; }; - class NotDisposableSurface : public Surface { + class NonDisposableSurface : public Surface { public: - virtual ~NotDisposableSurface() { } + virtual ~NonDisposableSurface() { } private: virtual void dispose() = 0; }; diff --git a/src/ui/alert.cpp b/src/ui/alert.cpp index 78b17905b..4ae034ffb 100644 --- a/src/ui/alert.cpp +++ b/src/ui/alert.cpp @@ -191,8 +191,8 @@ void Alert::processString(char* buf, std::vector& labels, std::vectorsetExpansive(true); box5->setExpansive(true); - jwidget_noborders(box4); - jwidget_noborders(box5); + box4->noBorderNoChildSpacing(); + box5->noBorderNoChildSpacing(); // Setup parent <-> children relationship diff --git a/src/ui/combobox.cpp b/src/ui/combobox.cpp index 6e9993c5e..5ee57af06 100644 --- a/src/ui/combobox.cpp +++ b/src/ui/combobox.cpp @@ -502,7 +502,7 @@ void ComboBox::openListBox() View* view = new View(); m_listbox = new ComboBoxListBox(this); m_window->setOnTop(true); - jwidget_noborders(m_window); + m_window->noBorderNoChildSpacing(); Widget* viewport = view->getViewport(); int size = getItemCount(); diff --git a/src/ui/image_view.cpp b/src/ui/image_view.cpp index 0c04758b8..eff06a88b 100644 --- a/src/ui/image_view.cpp +++ b/src/ui/image_view.cpp @@ -12,8 +12,10 @@ #include #include "ui/draw.h" +#include "ui/graphics.h" #include "ui/image_view.h" #include "ui/message.h" +#include "ui/paint_event.h" #include "ui/preferred_size_event.h" #include "ui/system.h" #include "ui/theme.h" @@ -38,13 +40,18 @@ void ImageView::onPreferredSize(PreferredSizeEvent& ev) void ImageView::onPaint(PaintEvent& ev) { + Graphics* g = ev.getGraphics(); + gfx::Rect bounds = getClientBounds(); gfx::Rect icon; jwidget_get_texticon_info(this, NULL, NULL, &icon, getAlign(), m_bmp->w, m_bmp->h); - jdraw_rectexclude(getBounds(), icon, getBgColor()); + g->fillRect(getBgColor(), bounds); - blit(m_bmp, ji_screen, 0, 0, icon.x, icon.y, icon.w, icon.h); + icon.x -= getBounds().x; + icon.y -= getBounds().y; + + g->blit(m_bmp, 0, 0, icon.x, icon.y, icon.w, icon.h); } } // namespace ui diff --git a/src/ui/popup_window.cpp b/src/ui/popup_window.cpp index df6d92609..4bbef2905 100644 --- a/src/ui/popup_window.cpp +++ b/src/ui/popup_window.cpp @@ -34,7 +34,7 @@ PopupWindow::PopupWindow(const base::string& text, ClickBehavior clickBehavior) removeDecorativeWidgets(); initTheme(); - jwidget_noborders(this); + noBorderNoChildSpacing(); } PopupWindow::~PopupWindow() diff --git a/src/ui/widget.cpp b/src/ui/widget.cpp index db8addbc2..acb84156c 100644 --- a/src/ui/widget.cpp +++ b/src/ui/widget.cpp @@ -617,6 +617,15 @@ void Widget::setBorder(const Border& br) border_width.b = br.bottom(); } +void Widget::noBorderNoChildSpacing() +{ + border_width.l = 0; + border_width.t = 0; + border_width.r = 0; + border_width.b = 0; + child_spacing = 0; +} + void Widget::getRegion(gfx::Region& region) { if (this->type == kWindowWidget) @@ -838,41 +847,6 @@ void jwidget_get_texticon_info(Widget* widget, SETRECT(icon); } -void jwidget_noborders(Widget* widget) -{ - widget->border_width.l = 0; - widget->border_width.t = 0; - widget->border_width.r = 0; - widget->border_width.b = 0; - widget->child_spacing = 0; - - widget->invalidate(); -} - -void jwidget_set_border(Widget* widget, int value) -{ - ASSERT_VALID_WIDGET(widget); - - widget->border_width.l = value; - widget->border_width.t = value; - widget->border_width.r = value; - widget->border_width.b = value; - - widget->invalidate(); -} - -void jwidget_set_border(Widget* widget, int l, int t, int r, int b) -{ - ASSERT_VALID_WIDGET(widget); - - widget->border_width.l = l; - widget->border_width.t = t; - widget->border_width.r = r; - widget->border_width.b = b; - - widget->invalidate(); -} - void jwidget_set_min_size(Widget* widget, int w, int h) { ASSERT_VALID_WIDGET(widget); diff --git a/src/ui/widget.h b/src/ui/widget.h index dafab4fe3..bf639d3eb 100644 --- a/src/ui/widget.h +++ b/src/ui/widget.h @@ -51,9 +51,6 @@ namespace ui { gfx::Rect* icon, int icon_align, int icon_w, int icon_h); - void jwidget_noborders(Widget* widget); - void jwidget_set_border(Widget* widget, int value); - void jwidget_set_border(Widget* widget, int l, int t, int r, int b); void jwidget_set_min_size(Widget* widget, int w, int h); void jwidget_set_max_size(Widget* widget, int w, int h); @@ -277,6 +274,8 @@ namespace ui { gfx::Border getBorder() const; void setBorder(const gfx::Border& border); + void noBorderNoChildSpacing(); + // Flags for getDrawableRegion() enum DrawableRegionFlags { kCutTopWindows = 1, // Cut areas where are windows on top.