#pragma once #include "config.hpp" #include "settings.hpp" #include #include #include #include #include [[nodiscard]] int findEncoderClsid(const WCHAR* mimeType, CLSID* clsid); [[nodiscard]] bool saveBitmapAsPng(Gdiplus::Bitmap& bitmap, const std::wstring& path); [[nodiscard]] bool saveBitmapAsJpeg(Gdiplus::Bitmap& bitmap, const std::wstring& path, int quality); [[nodiscard]] bool copyBitmapToClipboard(HWND owner, Gdiplus::Bitmap& bitmap); [[nodiscard]] bool encodeBitmapAsPng(Gdiplus::Bitmap& bitmap, std::vector& output); [[nodiscard]] bool encodeBitmapForClipboardHistory(Gdiplus::Bitmap& bitmap, std::vector& output); // Reserves a non-existing incremented file name with CREATE_NEW. The returned // empty file belongs to the caller and may safely be filled/overwritten. [[nodiscard]] std::wstring reserveIncrementedPath( const std::wstring& directory, const wchar_t* prefix, const wchar_t* extension); [[nodiscard]] bool saveScreenshotIncremented( Gdiplus::Bitmap& bitmap, const settings::AppSettings& configuration, std::wstring& savedPath); enum class PrintBitmapResult { Printed, Cancelled, Failed }; [[nodiscard]] PrintBitmapResult printBitmap(HWND owner, Gdiplus::Bitmap& bitmap); [[nodiscard]] std::wstring choosePngPath(HWND owner);