diff --git a/src/PuzzleSingleImageState.cpp b/src/PuzzleSingleImageState.cpp index f661be1..54c2df2 100644 --- a/src/PuzzleSingleImageState.cpp +++ b/src/PuzzleSingleImageState.cpp @@ -42,7 +42,12 @@ void PuzzleSingleImageState::ProcessInput(const SDL_Event& event, bool &processe } void PuzzleSingleImageState::Draw(SDL_Renderer* target) { - SDL_RenderCopy(target, this->pictureTex, NULL, NULL); + SDL_Rect rect; + rect.x = 0; + rect.y = 0; + rect.h = resized_image_height; + rect.w = resized_image_width; + SDL_RenderCopy(target, this->pictureTex, &rect, NULL); } @@ -58,7 +63,11 @@ void PuzzleSingleImageState::LoadPictureFromFile(const std::string& filename, SD std::cerr << "Failed to load " << filename << std::endl; return; } + source_image_height = bitmapSurface->h; + source_image_width = bitmapSurface->w; + resized_image_width = double(resized_image_height) * (double(source_image_width)/double(source_image_height)); this->pictureTex = SDL_CreateTextureFromSurface(renderer, bitmapSurface); + std::cerr << resized_image_width << ", " << resized_image_height << "\n"; SDL_FreeSurface(bitmapSurface); } diff --git a/src/PuzzleSingleImageState.hpp b/src/PuzzleSingleImageState.hpp index 1d6ce84..458c103 100644 --- a/src/PuzzleSingleImageState.hpp +++ b/src/PuzzleSingleImageState.hpp @@ -42,4 +42,8 @@ private: bool isActive = true; SDL_Texture* pictureTex = NULL; + int source_image_height = 1; + int source_image_width = 1; + const int resized_image_height = 700; + int resized_image_width = 1; }; \ No newline at end of file diff --git a/src/sago_common.cpp b/src/sago_common.cpp index 4a98ac1..6efcddf 100644 --- a/src/sago_common.cpp +++ b/src/sago_common.cpp @@ -111,6 +111,7 @@ void InitGame() { SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "2"); win = SDL_CreateWindow(GAMENAME, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, SDL_WINDOW_RESIZABLE); globalData.screen = SDL_CreateRenderer(win, -1, rendererFlags); + SDL_RenderSetLogicalSize(globalData.screen, globalData.xsize, globalData.ysize); dataHolder.invalidateAll(globalData.screen); globalData.spriteHolder.reset(new sago::SagoSpriteHolder(dataHolder));