diff --git a/src/DrawingProgram/Tools/ScreenshotTool.cpp b/src/DrawingProgram/Tools/ScreenshotTool.cpp index fa4ddf1..ee17b7e 100644 --- a/src/DrawingProgram/Tools/ScreenshotTool.cpp +++ b/src/DrawingProgram/Tools/ScreenshotTool.cpp @@ -90,7 +90,7 @@ void ScreenshotTool::gui_toolbox(Toolbar& t) { .onClick = [&] { controls.selectionMode = ScreenshotControls::SelectionMode::NO_SELECTION; #ifdef __EMSCRIPTEN__ - take_screenshot("a" + controls.typeSelections[screenshotConfig.selectedType], screenshotConfig.selectedType); + take_screenshot("a" + world_screenshot_info_get_extension_from_type(screenshotConfig.selectedType), screenshotConfig.selectedType); #else // We can't actually use the extension from the callback, so we have to set the extension of choice beforehand Screen::ExtensionFilter setExtensionFilter; diff --git a/src/GUIStuff/Elements/SelectableButton.hpp b/src/GUIStuff/Elements/SelectableButton.hpp index 25ea927..0f9330d 100644 --- a/src/GUIStuff/Elements/SelectableButton.hpp +++ b/src/GUIStuff/Elements/SelectableButton.hpp @@ -57,7 +57,6 @@ class SelectableButton : public Element { bool instantResponse = false; bool isHeld = false; bool isHovering = false; - bool moved = false; std::function onClick; }; diff --git a/src/GlobalConfig.cpp b/src/GlobalConfig.cpp index 6b15a04..ebfcddc 100644 --- a/src/GlobalConfig.cpp +++ b/src/GlobalConfig.cpp @@ -47,6 +47,7 @@ nlohmann::json GlobalConfig::get_config_json(const InputManager& input) const { toRet["guiScale"] = guiScale; toRet["jumpTransitionTime"] = jumpTransitionTime; toRet["disableGraphicsDriverWorkarounds"] = disableGraphicsDriverWorkarounds; + toRet["viewWebVersionWelcome"] = viewWebVersionWelcome; toRet["dragZoomSpeed"] = dragZoomSpeed; toRet["scrollZoomSpeed"] = scrollZoomSpeed; toRet["vsync"] = vsyncValue; @@ -122,6 +123,7 @@ void GlobalConfig::set_config_json(InputManager& input, const nlohmann::json& j, try{j.at("guiScale").get_to(guiScale);} catch(...) {} try{j.at("jumpTransitionTime").get_to(jumpTransitionTime);} catch(...) {} try{j.at("disableGraphicsDriverWorkarounds").get_to(disableGraphicsDriverWorkarounds);} catch(...) {} + try{j.at("viewWebVersionWelcome").get_to(viewWebVersionWelcome);} catch(...) {} try{j.at("useNativeFilePicker").get_to(useNativeFilePicker);} catch(...) {} try{j.at("themeInUse").get_to(themeCurrentlyLoaded);} catch(...) {} if(version >= VersionNumber(0, 3, 0)) diff --git a/src/GlobalConfig.hpp b/src/GlobalConfig.hpp index f4957db..d677012 100644 --- a/src/GlobalConfig.hpp +++ b/src/GlobalConfig.hpp @@ -43,13 +43,21 @@ class GlobalConfig { std::filesystem::path configPath; - float guiScale = 1.0f; + #ifdef __ANDROID__ + float guiScale = 1.2f; + #else + float guiScale = 1.0f; + #endif double dragZoomSpeed = 0.02; double scrollZoomSpeed = 0.4; float jumpTransitionTime = 0.5f; Vector4f jumpTransitionEasing{0.75, 0.25, 0.25, 0.75}; +#ifdef __EMSCRIPTEN__ + bool viewWebVersionWelcome = true; +#else bool viewWebVersionWelcome = false; +#endif struct TabletOptions { bool pressureAffectsBrushWidth = true; diff --git a/src/MainProgram.cpp b/src/MainProgram.cpp index e4dfde3..0506a49 100755 --- a/src/MainProgram.cpp +++ b/src/MainProgram.cpp @@ -92,6 +92,7 @@ void MainProgram::update() { g.update(); screen->update(); background_update(); + NetThreadManager::get().synchronous_update(); post_callback(); } @@ -183,10 +184,6 @@ void MainProgram::load_config() { } catch(...) {} } catch(...) {} -#ifdef __EMSCRIPTEN__ - else - conf.viewWebVersionWelcome = true; -#endif conf.load_palettes(); g.load_theme(conf.configPath, conf.themeCurrentlyLoaded); conf.load_licenses(); diff --git a/src/NetThreadManager.cpp b/src/NetThreadManager.cpp index 8575e54..22d6cfd 100644 --- a/src/NetThreadManager.cpp +++ b/src/NetThreadManager.cpp @@ -14,10 +14,16 @@ void NetThreadManager::init(MainProgram* m) { return; started = true; main = m; -#ifndef __ANDROID__ - init_thread(); -#else +#ifdef __ANDROID__ AndroidJNICalls::startNetworkService(); +#else + NetLibrary::init_websocket(); +#endif +} + +void NetThreadManager::synchronous_update() { +#ifndef __ANDROID__ + NetLibrary::update(); #endif } @@ -71,9 +77,9 @@ void NetThreadManager::destroy() { if(!started) return; started = false; -#ifndef __ANDROID__ - destroy_thread(); -#else +#ifdef __ANDROID__ AndroidJNICalls::stopNetworkService(); +#else + NetLibrary::destroy_websocket(); #endif } diff --git a/src/NetThreadManager.hpp b/src/NetThreadManager.hpp index fa5edd9..e9c72c5 100644 --- a/src/NetThreadManager.hpp +++ b/src/NetThreadManager.hpp @@ -9,6 +9,7 @@ class NetThreadManager { public: static NetThreadManager& get(); void init(MainProgram* m); + void synchronous_update(); void thread_update(); void destroy(); void init_thread(); diff --git a/src/WorldScreenshot.cpp b/src/WorldScreenshot.cpp index 80b4ab6..df2c401 100644 --- a/src/WorldScreenshot.cpp +++ b/src/WorldScreenshot.cpp @@ -108,11 +108,10 @@ void world_take_screenshot(const std::shared_ptr& w, const WorldScreensho } #else if(success) { - std::string mimeTypeArray[] = {"image/jpeg", "image/png", "image/webp"}; auto skData = out.detachAsData(); emscripten_browser_file::download( - "screenshot" + controls.typeSelections[screenshotType], - mimeTypeArray[screenshotType], + "screenshot" + world_screenshot_info_get_extension_from_type(info.type), + world_screenshot_info_get_mime_from_type(info.type), std::string_view((const char*)skData->bytes(), skData->size()) ); } @@ -139,8 +138,8 @@ void world_take_screenshot(const std::shared_ptr& w, const WorldScreensho #else auto skData = out.detachAsData(); emscripten_browser_file::download( - "screenshot.svg", - "image/svg+xml", + "screenshot" + world_screenshot_info_get_extension_from_type(info.type), + world_screenshot_info_get_mime_from_type(info.type), std::string_view((const char*)skData->bytes(), skData->size()) ); #endif @@ -213,3 +212,31 @@ void take_screenshot_area_hw(const std::shared_ptr& w, const sk_spreadPixels(aaImgData, 0, 0)) throw std::runtime_error("[ScreenshotTool::take_screenshot_area_hw] Error copy pixmap"); } + +std::string world_screenshot_info_get_extension_from_type(WorldScreenshotInfo::ScreenshotType t) { + switch(t) { + case WorldScreenshotInfo::ScreenshotType::JPG: + return ".jpg"; + case WorldScreenshotInfo::ScreenshotType::PNG: + return ".png"; + case WorldScreenshotInfo::ScreenshotType::WEBP: + return ".webp"; + case WorldScreenshotInfo::ScreenshotType::SVG: + return ".svg"; + } + return ""; +} + +std::string world_screenshot_info_get_mime_from_type(WorldScreenshotInfo::ScreenshotType t) { + switch(t) { + case WorldScreenshotInfo::ScreenshotType::JPG: + return "image/jpeg"; + case WorldScreenshotInfo::ScreenshotType::PNG: + return "image/png"; + case WorldScreenshotInfo::ScreenshotType::WEBP: + return "image/webp"; + case WorldScreenshotInfo::ScreenshotType::SVG: + return "image/svg+xml"; + } + return ""; +} diff --git a/src/WorldScreenshot.hpp b/src/WorldScreenshot.hpp index f32b822..cead36c 100644 --- a/src/WorldScreenshot.hpp +++ b/src/WorldScreenshot.hpp @@ -45,3 +45,5 @@ NLOHMANN_JSON_SERIALIZE_ENUM(WorldScreenshotInfo::ScreenshotType, { }) void world_take_screenshot(const std::shared_ptr& w, const WorldScreenshotInfo& info); +std::string world_screenshot_info_get_extension_from_type(WorldScreenshotInfo::ScreenshotType t); +std::string world_screenshot_info_get_mime_from_type(WorldScreenshotInfo::ScreenshotType t);