'fix' input widget size and set back dbg outline to vp boundaries

This commit is contained in:
Andrea Blankenstijn 2021-07-24 22:07:28 +02:00
parent ef294d67fc
commit 369e1c1f1b
5 changed files with 19 additions and 24 deletions

View file

@ -30,7 +30,7 @@ void run_example(std::function<void (W*, core::Font*, int, int)> setup, int w=3,
__FILE__, __FUNCTION__, __LINE__);
const core::Size size_init {854, 480};
auto* font {new core::Font(core::Font::find("Monospace"), 24)};
auto* font {new core::Font(core::Font::find("Monospace"), 16)};
auto* win {SDL_CreateWindow("basic_widgets example",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
size_init.w, size_init.h,
@ -76,7 +76,7 @@ void run_example(std::function<void (W*, core::Font*, int, int)> setup, int w=3,
layout->handle_event(ev);
}
renderer->draw_color({25, 25, 25, SDL_ALPHA_OPAQUE});
renderer->draw_color({50, 60, 70, SDL_ALPHA_OPAQUE});
renderer->clear();
layout->render();

View file

@ -43,7 +43,7 @@ namespace bwidgets::core
Renderer* draw_lines(const std::vector<SDL_Point>);
Renderer* draw_point(const SDL_Point&);
Renderer* draw_points(const std::vector<SDL_Point>);
Renderer* draw_rect(const SDL_Rect&);
Renderer* draw_rect(const SDL_Rect*);
Renderer* draw_rects(const std::vector<SDL_Rect>);
Renderer* fill_rect(const SDL_Rect*);
Renderer* fill_rects(const std::vector<SDL_Rect>);
@ -52,28 +52,27 @@ namespace bwidgets::core
SDL_Rect viewport();
Renderer* viewport(const SDL_Rect*);
inline Renderer* copy(Texture* t, const SDL_Rect* src, const SDL_Rect& dst)
{
inline Renderer* copy(Texture* t, const SDL_Rect* src, const SDL_Rect& dst) {
auto d = dst;
return copy(t, src, &d);
}
inline Renderer* copy(Texture* t, const SDL_Rect& src, const SDL_Rect* dst)
{
inline Renderer* copy(Texture* t, const SDL_Rect& src, const SDL_Rect* dst) {
auto s = src;
return copy(t, &s, dst);
}
inline Renderer* copy(Texture* t, const SDL_Rect& src, const SDL_Rect& dst)
{
inline Renderer* copy(Texture* t, const SDL_Rect& src, const SDL_Rect& dst) {
auto s = src, d = dst;
return copy(t, &s, &d);
}
inline Renderer* fill_rect(const SDL_Rect& r)
{
inline Renderer* draw_rect(const SDL_Rect& r) {
auto rect = r;
return draw_rect(&rect);
}
inline Renderer* fill_rect(const SDL_Rect& r) {
auto rect = r;
return fill_rect(&rect);
}
inline Renderer* viewport(const SDL_Rect& vp)
{
inline Renderer* viewport(const SDL_Rect& vp) {
auto v = vp;
return viewport(&v);
}

View file

@ -120,7 +120,8 @@ namespace bwidgets::widget
(uint8_t)(color_border.g / (i + 1)),
(uint8_t)(color_border.b / (i+ 1)),
color_border.a
})->draw_rect({
})
->draw_rect({
_widget_area.x + i,
_widget_area.y + i,
_widget_area.w - 2 * i,
@ -187,7 +188,7 @@ namespace bwidgets::widget
_font->text_size(
std::string(input_min_width, input_width_unit)
).w + 2 * _border_width,
_font->height + 2 * _border_width
_font->line_skip + 4 * _border_width // _why_ 4 and not 2?…
};
}

View file

@ -109,10 +109,9 @@ core::Renderer* core::Renderer::draw_points(const std::vector<SDL_Point> pts)
return this;
}
core::Renderer* core::Renderer::draw_rect(const SDL_Rect& r)
core::Renderer* core::Renderer::draw_rect(const SDL_Rect* r)
{
const SDL_Rect rect = r;
SDLError::success_or_throw(SDL_RenderDrawRect(c_pod, &rect),
SDLError::success_or_throw(SDL_RenderDrawRect(c_pod, r),
__FILE__, __FUNCTION__, __LINE__);
return this;

View file

@ -49,12 +49,8 @@ widget::Widget* widget::Widget::render()
return this;
#ifndef _NDEBUG
_renderer->viewport(nullptr)
->draw_color({0, 255, 0, SDL_ALPHA_TRANSPARENT})
->draw_rect({
_viewport.x - 1, _viewport.y - 1,
_viewport.w + 2, _viewport.h + 2
});
_renderer->draw_color({0, 255, 0, SDL_ALPHA_TRANSPARENT})
->draw_rect(nullptr);
#endif
_renderer->viewport(_viewport);