diff options
Diffstat (limited to 'src/lib/util/png.h')
-rw-r--r-- | src/lib/util/png.h | 64 |
1 files changed, 38 insertions, 26 deletions
diff --git a/src/lib/util/png.h b/src/lib/util/png.h index ff14ff5f674..2f9b7ac29cb 100644 --- a/src/lib/util/png.h +++ b/src/lib/util/png.h @@ -14,36 +14,39 @@ #pragma once #include "bitmap.h" -#include "corefile.h" -#include "osdcore.h" +#include "utilfwd.h" +#include <cstdint> #include <list> #include <memory> #include <string> +#include <string_view> +#include <system_error> #include <utility> +namespace util { /*************************************************************************** CONSTANTS ***************************************************************************/ /* Error types */ -enum png_error +enum class png_error : int { - PNGERR_NONE, - PNGERR_OUT_OF_MEMORY, - PNGERR_UNKNOWN_FILTER, - PNGERR_FILE_ERROR, - PNGERR_BAD_SIGNATURE, - PNGERR_DECOMPRESS_ERROR, - PNGERR_FILE_TRUNCATED, - PNGERR_FILE_CORRUPT, - PNGERR_UNKNOWN_CHUNK, - PNGERR_COMPRESS_ERROR, - PNGERR_UNSUPPORTED_FORMAT + UNKNOWN_FILTER = 1, + BAD_SIGNATURE, + DECOMPRESS_ERROR, + FILE_TRUNCATED, + FILE_CORRUPT, + UNKNOWN_CHUNK, + COMPRESS_ERROR, + UNSUPPORTED_FORMAT }; +std::error_category const &png_category() noexcept; +inline std::error_condition make_error_condition(png_error err) noexcept { return std::error_condition(int(err), png_category()); } + /*************************************************************************** @@ -57,16 +60,16 @@ public: ~png_info() { free_data(); } - png_error read_file(util::core_file &fp); - png_error copy_to_bitmap(bitmap_argb32 &bitmap, bool &hasalpha); - png_error expand_buffer_8bit(); + std::error_condition read_file(read_stream &fp) noexcept; + std::error_condition copy_to_bitmap(bitmap_argb32 &bitmap, bool &hasalpha) noexcept; + std::error_condition expand_buffer_8bit() noexcept; - png_error add_text(char const *keyword, char const *text); + std::error_condition add_text(std::string_view keyword, std::string_view text) noexcept; - void free_data(); - void reset() { free_data(); operator=(png_info()); } + void free_data() noexcept; + void reset() noexcept { free_data(); operator=(png_info()); } - static png_error verify_header(util::core_file &fp); + static std::error_condition verify_header(read_stream &fp) noexcept; std::unique_ptr<std::uint8_t []> image; std::uint32_t width, height; @@ -99,12 +102,21 @@ private: FUNCTION PROTOTYPES ***************************************************************************/ -png_error png_read_bitmap(util::core_file &fp, bitmap_argb32 &bitmap); +std::error_condition png_read_bitmap(read_stream &fp, bitmap_argb32 &bitmap) noexcept; + +std::error_condition png_write_bitmap(random_write &fp, png_info *info, bitmap_t const &bitmap, int palette_length, const rgb_t *palette) noexcept; + +std::error_condition mng_capture_start(random_write &fp, bitmap_t const &bitmap, unsigned rate) noexcept; +std::error_condition mng_capture_frame(random_write &fp, png_info &info, bitmap_t const &bitmap, int palette_length, rgb_t const *palette) noexcept; +std::error_condition mng_capture_stop(random_write &fp) noexcept; + +} // namespace util + + +namespace std { -png_error png_write_bitmap(util::core_file &fp, png_info *info, bitmap_t const &bitmap, int palette_length, const rgb_t *palette); +template <> struct is_error_condition_enum<util::png_error> : public std::true_type { }; -png_error mng_capture_start(util::core_file &fp, bitmap_t &bitmap, double rate); -png_error mng_capture_frame(util::core_file &fp, png_info &info, bitmap_t const &bitmap, int palette_length, const rgb_t *palette); -png_error mng_capture_stop(util::core_file &fp); +} // namespace std #endif // MAME_LIB_UTIL_PNG_H |