/* * Copyright (c) 2022, Matthew Olsson * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace PDF { class Error { public: enum class Type { Parse, Internal, MalformedPDF, RenderingUnsupported }; Error(AK::Error error) : m_type(Type::Internal) , m_message(DeprecatedString::formatted("Internal error while processing PDF file: {}", error.string_literal())) { } Error(Type type, DeprecatedString const& message) : m_type(type) { switch (type) { case Type::Parse: m_message = DeprecatedString::formatted("Failed to parse PDF file: {}", message); break; case Type::Internal: m_message = DeprecatedString::formatted("Internal error while processing PDF file: {}", message); break; case Type::MalformedPDF: m_message = DeprecatedString::formatted("Malformed PDF file: {}", message); break; case Type::RenderingUnsupported: m_message = DeprecatedString::formatted("Rendering of feature not supported: {}", message); break; } } Type type() const { return m_type; } DeprecatedString const& message() const { return m_message; } private: Type m_type; DeprecatedString m_message; }; class Errors { public: Errors() = default; Errors(Error&& error) { m_errors.empend(move(error)); } Vector const& errors() const { return m_errors; } void add_error(Error&& error) { m_errors.empend(move(error)); } private: Vector m_errors; }; template using PDFErrorOr = ErrorOr; template using PDFErrorsOr = ErrorOr; }