From 4d7249aca21a82aaa04960007b90fea9b86657ac Mon Sep 17 00:00:00 2001 From: Jie Date: Thu, 25 Jul 2024 15:46:49 +0800 Subject: [PATCH] change CMakeLists.txt and util_test.cc --- CMakeLists.txt | 21 +++++++++++++++++++-- main.cc | 29 ++++++++++++++++++++++++++--- test/util_test.cc | 3 ++- 3 files changed, 47 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3536810..0561235 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,8 @@ cmake_minimum_required(VERSION 3.26) + set(PROJECT_N "mp") +set(PROJECT_N_T "mp_test") + project(${PROJECT_N} VERSION 1.0) set(CMAKE_CXX_STANDARD 20) @@ -32,15 +35,29 @@ IF(UNIX) spdlog ) - add_executable(${PROJECT_N}_test + add_executable(${PROJECT_N_T} ${srcs} ${tests} ) - target_link_libraries(${PROJECT_N}_test PRIVATE + target_link_libraries(${PROJECT_N_T} PRIVATE spdlog GTest::gtest_main ) + add_custom_target(run + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_N} ./img/ocean.jpg + DEPENDS ${PROJECT_N} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMENT "Starting ${PROJECT_N}" + ) + + add_custom_target(run_test + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_N_T} + DEPENDS ${PROJECT_N_T} + WORKING_DIRECTORY ${PROJECT_CURRENT_BINARY_DIR} + COMMENT "Starting ${PROJECT_N}" + ) + ELSE(WIN32) ENDIF() diff --git a/main.cc b/main.cc index 1b8d00b..b4dbe31 100644 --- a/main.cc +++ b/main.cc @@ -1,14 +1,32 @@ +#include #include #include #include #include +#include "UtilTool.h" + +constexpr int CLIENT_WIDTH = 800; +constexpr int CLIENT_HEIGHT = 600; -int main(int argc, char** const argv){ - spdlog::info("Hello, World!"); - sf::RenderWindow window(sf::VideoMode(800, 600), "mp"); +int main(int argc, char** argv){ + spdlog::info("Current WorkDir Is: {}",argv[0]); + if(argc != 2){ + spdlog::error("Usage: mp filename "); + return 0; + } + if(!UtilTool::CheckFileIsImage(argv[1])){ + spdlog::info("Unsupport File Type: {}",argv[1]); + return 0; + } sf::Texture texture; + texture.loadFromFile(argv[1]); + sf::RenderWindow window(sf::VideoMode(CLIENT_WIDTH, CLIENT_HEIGHT), "mp"); sf::Sprite sprite; + sprite.setTexture(texture); + auto imgSize = texture.getSize(); + auto scale = std::min(CLIENT_WIDTH/imgSize.x,CLIENT_HEIGHT/imgSize.y); + sprite.setScale(scale, scale); bool running = true; while(running){ @@ -22,8 +40,13 @@ int main(int argc, char** const argv){ running = false; } } + if(event.type == sf::Event::Resized){ + auto scale = std::min(event.size.width / imgSize.x, event.size.height / imgSize.y); + sprite.setScale(scale, scale); + } } window.clear(); + window.draw(sprite); window.display(); } return 0; diff --git a/test/util_test.cc b/test/util_test.cc index 0016407..f5f55d7 100644 --- a/test/util_test.cc +++ b/test/util_test.cc @@ -2,10 +2,11 @@ #include "UtilTool.h" TEST(UtilTest, CheckIsImageTestShouldTrue) { - EXPECT_EQ(UtilTool::CheckFileIsImage("test.jpg"), true); + EXPECT_EQ(UtilTool::CheckFileIsImage("ocean.jpg"), true); EXPECT_EQ(UtilTool::CheckFileIsImage("test.png"), true); } TEST(UtilTest, CheckIsImageTestShouldFalse) { EXPECT_EQ(UtilTool::CheckFileIsImage("test.mp4"), false); EXPECT_EQ(UtilTool::CheckFileIsImage("test.wav"), false); + EXPECT_EQ(UtilTool::CheckFileIsImage("--gtest_list_tests"), false); }