'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__); __FILE__, __FUNCTION__, __LINE__);
const core::Size size_init {854, 480}; 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", auto* win {SDL_CreateWindow("basic_widgets example",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
size_init.w, size_init.h, 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); layout->handle_event(ev);
} }
renderer->draw_color({25, 25, 25, SDL_ALPHA_OPAQUE}); renderer->draw_color({50, 60, 70, SDL_ALPHA_OPAQUE});
renderer->clear(); renderer->clear();
layout->render(); layout->render();

View file

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

View file

@ -120,7 +120,8 @@ namespace bwidgets::widget
(uint8_t)(color_border.g / (i + 1)), (uint8_t)(color_border.g / (i + 1)),
(uint8_t)(color_border.b / (i+ 1)), (uint8_t)(color_border.b / (i+ 1)),
color_border.a color_border.a
})->draw_rect({ })
->draw_rect({
_widget_area.x + i, _widget_area.x + i,
_widget_area.y + i, _widget_area.y + i,
_widget_area.w - 2 * i, _widget_area.w - 2 * i,
@ -187,7 +188,7 @@ namespace bwidgets::widget
_font->text_size( _font->text_size(
std::string(input_min_width, input_width_unit) std::string(input_min_width, input_width_unit)
).w + 2 * _border_width, ).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; 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, r),
SDLError::success_or_throw(SDL_RenderDrawRect(c_pod, &rect),
__FILE__, __FUNCTION__, __LINE__); __FILE__, __FUNCTION__, __LINE__);
return this; return this;

View file

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