CVideo: minor cleanup

- Removed overload of set_resolution taking two ints
- Removed get_width and get_height in favor of draw_area
- Removed some dead code
- Minor formatting cleanup
This commit is contained in:
Charles Dang 2022-06-08 02:18:14 -04:00 committed by Tommy
parent bfef561071
commit 43a1ecc8bd
8 changed files with 26 additions and 76 deletions

View File

@ -572,7 +572,7 @@ list_formatter video_settings_report_internal(const std::string& heading = "")
fmt.insert("Window size", geometry_to_string(
video.current_resolution().x, video.current_resolution().y));
fmt.insert("Game canvas size", geometry_to_string(
video.get_width(), video.get_height()));
video.draw_area().w, video.draw_area().h));
fmt.insert("Final render target size", geometry_to_string(
video.output_size().x, video.output_size().y));
fmt.insert("Screen refresh rate", std::to_string(video.current_refresh_rate()));

View File

@ -314,7 +314,7 @@ bool controller_base::handle_scroll(int mousex, int mousey, int mouse_flags)
dy -= scroll_amount;
}
if(mousey > get_display().video().get_height() - scroll_threshold) {
if(mousey > get_display().video().draw_area().h - scroll_threshold) {
dy += scroll_amount;
}
@ -322,7 +322,7 @@ bool controller_base::handle_scroll(int mousex, int mousey, int mouse_flags)
dx -= scroll_amount;
}
if(mousex > get_display().video().get_width() - scroll_threshold) {
if(mousex > get_display().video().draw_area().w - scroll_threshold) {
dx += scroll_amount;
}
}

View File

@ -644,7 +644,7 @@ void canvas::blit(SDL_Rect rect)
// From those, as the first column is off-screen:
// rect_clipped_to_parent={0, 2, 329, 440}
// area_to_draw={1, 0, 329, 440}
SDL_Rect parent {0, 0, video.get_width(), video.get_height()};
SDL_Rect parent {0, 0, video.draw_area().w, video.draw_area().h};
SDL_Rect rect_clipped_to_parent;
if(!SDL_IntersectRect(&rect, &parent, &rect_clipped_to_parent)) {
DBG_GUI_D << "Area to draw is completely outside parent.\n";

View File

@ -458,7 +458,7 @@ void sdl_event_handler::handle_event(const SDL_Event& event)
break;
case SDL_WINDOWEVENT_RESIZED:
video_resize(point(video.get_width(), video.get_height()));
video_resize(point(video.draw_area().w, video.draw_area().h));
break;
case SDL_WINDOWEVENT_ENTER:

View File

@ -293,7 +293,7 @@ std::string unit_topic_generator::operator()() const {
const unit_type& female_type = type_.get_gender_unit_type(unit_race::FEMALE);
const unit_type& male_type = type_.get_gender_unit_type(unit_race::MALE);
const int screen_width = CVideo::get_singleton().get_width();
const int screen_width = CVideo::get_singleton().draw_area().w;
ss << _("Level") << " " << type_.level();
ss << "\n\n";

View File

@ -18,15 +18,15 @@
#include "display.hpp"
#include "floating_label.hpp"
#include "font/sdl_ttf_compat.hpp"
#include "picture.hpp"
#include "log.hpp"
#include "picture.hpp"
#include "preferences/general.hpp"
#include "sdl/input.hpp"
#include "sdl/point.hpp"
#include "sdl/texture.hpp"
#include "sdl/userevent.hpp"
#include "sdl/utils.hpp"
#include "sdl/window.hpp"
#include "sdl/input.hpp"
#include "sdl/texture.hpp"
#ifdef TARGET_OS_OSX
#include "desktop/apple_video.hpp"
@ -44,8 +44,6 @@ static lg::log_domain log_display("display");
#define WRN_DP LOG_STREAM(warn, log_display)
#define DBG_DP LOG_STREAM(debug, log_display)
CVideo* CVideo::singleton_ = nullptr;
namespace
{
bool fake_interactive = false;
@ -96,7 +94,6 @@ void trigger_full_redraw()
CVideo::CVideo(FAKE_TYPES type)
: window()
, drawing_texture_(nullptr)
, render_texture_(nullptr)
, fake_screen_(false)
, help_string_(0)
@ -127,9 +124,7 @@ CVideo::CVideo(FAKE_TYPES type)
void CVideo::initSDL()
{
const int res = SDL_InitSubSystem(SDL_INIT_VIDEO);
if(res < 0) {
if(SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) {
ERR_DP << "Could not initialize SDL_video: " << SDL_GetError() << std::endl;
throw error("Video initialization failed");
}
@ -189,7 +184,7 @@ void CVideo::make_test_fake(const unsigned width, const unsigned height)
refresh_rate_ = 1;
if (window) {
set_resolution(width, height);
set_resolution({int(width), int(height)});
} else {
fake_size = {int(width), int(height)};
init_fake_window();
@ -408,7 +403,7 @@ void CVideo::init_window()
// It is assumed that this function is only ever called once.
// If that is no longer true, then you should clean things up.
assert(!render_texture_ && !drawing_texture_);
assert(!render_texture_);
std::cerr << "Setting mode to " << w << "x" << h << std::endl;
@ -500,16 +495,6 @@ SDL_Rect CVideo::input_area() const
return {0, 0, p.x, p.y};
}
int CVideo::get_width() const
{
return logical_size_.x;
}
int CVideo::get_height() const
{
return logical_size_.y;
}
void CVideo::delay(unsigned int milliseconds)
{
if(!game_config::no_delay) {
@ -529,7 +514,7 @@ void CVideo::force_render_target(SDL_Texture* t)
// so make sure it gets set back appropriately.
if (t == nullptr || t == render_texture_) {
// TODO: highdpi - sort out who owns this
window->set_logical_size(get_width(), get_height());
window->set_logical_size(draw_area().w, draw_area().h);
}
}
@ -540,7 +525,7 @@ SDL_Texture* CVideo::get_render_target()
SDL_Rect CVideo::clip_to_draw_area(const SDL_Rect* r) const
{
if (r) {
if(r) {
return sdl::intersect_rects(*r, draw_area());
} else {
return draw_area();
@ -550,7 +535,7 @@ SDL_Rect CVideo::clip_to_draw_area(const SDL_Rect* r) const
SDL_Rect CVideo::to_output(const SDL_Rect& r) const
{
int s = get_pixel_scale();
return {s*r.x, s*r.y, s*r.w, s*r.h};
return {s * r.x, s * r.y, s * r.w, s * r.h};
}
void CVideo::render_screen()
@ -583,7 +568,7 @@ void CVideo::render_screen()
// SDL resets the logical size when setting a render texture target,
// so we also have to reset that every time.
window->set_logical_size(get_width(), get_height());
window->set_logical_size(draw_area().w, draw_area().h);
}
}
@ -642,15 +627,15 @@ surface CVideo::read_pixels(SDL_Rect* r)
surface CVideo::read_pixels_low_res(SDL_Rect* r)
{
if (!window) {
if(!window) {
WRN_DP << "trying to read pixels with no window" << std::endl;
return surface();
}
surface s = read_pixels(r);
if (r) {
if(r) {
return scale_surface(s, r->w, r->h);
} else {
return scale_surface(s, get_width(), get_height());
return scale_surface(s, draw_area().w, draw_area().h);
}
}
@ -687,11 +672,9 @@ void CVideo::set_window_icon(surface& icon)
void CVideo::clear_screen()
{
if(!window) {
return;
if(window) {
window->fill(0, 0, 0, 255);;
}
window->fill(0, 0, 0, 255);
}
sdl::window* CVideo::get_window()
@ -729,11 +712,7 @@ std::vector<std::string> CVideo::enumerate_drivers()
bool CVideo::window_has_flags(uint32_t flags) const
{
if(!window) {
return false;
}
return (window->get_flags() & flags) != 0;
return window && (window->get_flags() & flags) != 0;
}
std::vector<point> CVideo::get_available_resolutions(const bool include_current)
@ -754,11 +733,6 @@ std::vector<point> CVideo::get_available_resolutions(const bool include_current)
const point min_res(preferences::min_window_width, preferences::min_window_height);
#if 0
// DPI scale factor.
auto [scale_h, scale_v] = get_dpi_scale_factor();
#endif
// The maximum size to which this window can be set. For some reason this won't
// pop up as a display mode of its own.
SDL_Rect bounds;
@ -824,7 +798,7 @@ int CVideo::set_help_string(const std::string& str)
int size = font::SIZE_LARGE;
while(size > 0) {
if(font::pango_line_width(str, size) > get_width()) {
if(font::pango_line_width(str, size) > draw_area().w) {
size--;
} else {
break;
@ -835,7 +809,7 @@ int CVideo::set_help_string(const std::string& str)
font::floating_label flabel(str);
flabel.set_font_size(size);
flabel.set_position(get_width() / 2, get_height());
flabel.set_position(draw_area().w / 2, draw_area().h);
flabel.set_bg_color(color);
flabel.set_border_size(border);
@ -893,11 +867,6 @@ void CVideo::toggle_fullscreen()
set_fullscreen(!preferences::fullscreen());
}
bool CVideo::set_resolution(const unsigned width, const unsigned height)
{
return set_resolution(point(width, height));
}
bool CVideo::set_resolution(const point& resolution)
{
if(resolution == current_resolution()) {

View File

@ -122,8 +122,6 @@ public:
bool supports_vsync() const;
bool set_resolution(const unsigned width, const unsigned height);
/**
* Set the window resolution.
*
@ -170,20 +168,6 @@ public:
*/
SDL_Rect input_area() const;
/**
* Returns the width of the drawing surface in pixels.
* Input coordinates are automatically scaled to correspond,
* so this also indicates the width of the input surface.
*/
int get_width() const;
/**
* Returns the height of the drawing surface in pixels.
* Input coordinates are automatically scaled to correspond,
* so this also indicates the height of the input surface.
*/
int get_height() const;
/**
* Get the current active pixel scale multiplier.
* This is equal to output_size() / draw_area().
@ -375,14 +359,11 @@ public:
};
private:
static CVideo* singleton_;
static inline CVideo* singleton_ = nullptr;
/** The SDL window object. */
std::unique_ptr<sdl::window> window;
/** The drawing texture. */
SDL_Texture* drawing_texture_;
/** The current offscreen render target. */
SDL_Texture* render_texture_;

View File

@ -441,7 +441,7 @@ std::size_t menu::max_items_onscreen() const
return std::size_t(max_items_);
}
const std::size_t max_height = (max_height_ == -1 ? (video().get_height()*66)/100 : max_height_) - heading_height();
const std::size_t max_height = (max_height_ == -1 ? (video().draw_area().h*66)/100 : max_height_) - heading_height();
std::vector<int> heights;
std::size_t n;