diff --git a/Userland/Libraries/LibPDF/Forward.h b/Userland/Libraries/LibPDF/Forward.h index 7cd61f78ca..c93b3c6c10 100644 --- a/Userland/Libraries/LibPDF/Forward.h +++ b/Userland/Libraries/LibPDF/Forward.h @@ -14,9 +14,6 @@ namespace PDF { class Document; class Object; -// Note: This macro doesn't care about PlainTextStreamObject and EncodedStreamObject because -// we never need to work directly with either of them. - #define ENUMERATE_OBJECT_TYPES(V) \ V(StringObject, string) \ V(NameObject, name) \ diff --git a/Userland/Libraries/LibPDF/ObjectDerivatives.h b/Userland/Libraries/LibPDF/ObjectDerivatives.h index 8576a4f0b8..99e93b133f 100644 --- a/Userland/Libraries/LibPDF/ObjectDerivatives.h +++ b/Userland/Libraries/LibPDF/ObjectDerivatives.h @@ -143,55 +143,24 @@ private: class StreamObject : public Object { public: - explicit StreamObject(NonnullRefPtr const& dict) + explicit StreamObject(NonnullRefPtr const& dict, ByteBuffer const& bytes) : m_dict(dict) + , m_buffer(bytes) { } virtual ~StreamObject() override = default; [[nodiscard]] ALWAYS_INLINE NonnullRefPtr dict() const { return m_dict; } - [[nodiscard]] virtual ReadonlyBytes bytes() const = 0; + [[nodiscard]] ReadonlyBytes bytes() const { return m_buffer.bytes(); }; const char* type_name() const override { return "stream"; } String to_string(int indent) const override; -protected: +private: bool is_stream() const override { return true; } -private: NonnullRefPtr m_dict; -}; - -class PlainTextStreamObject final : public StreamObject { -public: - PlainTextStreamObject(NonnullRefPtr const& dict, ReadonlyBytes bytes) - : StreamObject(dict) - , m_bytes(bytes) - { - } - - virtual ~PlainTextStreamObject() override = default; - - [[nodiscard]] ALWAYS_INLINE virtual ReadonlyBytes bytes() const override { return m_bytes; } - -private: - ReadonlyBytes m_bytes; -}; - -class EncodedStreamObject final : public StreamObject { -public: - EncodedStreamObject(NonnullRefPtr const& dict, ByteBuffer&& buffer) - : StreamObject(dict) - , m_buffer(buffer) - { - } - - virtual ~EncodedStreamObject() override = default; - - [[nodiscard]] ALWAYS_INLINE virtual ReadonlyBytes bytes() const override { return m_buffer.bytes(); } - -private: ByteBuffer m_buffer; }; diff --git a/Userland/Libraries/LibPDF/Parser.cpp b/Userland/Libraries/LibPDF/Parser.cpp index 38df8fb0db..2a5bbddcf5 100644 --- a/Userland/Libraries/LibPDF/Parser.cpp +++ b/Userland/Libraries/LibPDF/Parser.cpp @@ -997,10 +997,10 @@ PDFErrorOr> Parser::parse_stream(NonnullRefPtr(dict, move(maybe_bytes.value())); + return make_object(dict, maybe_bytes.value()); } - return make_object(dict, bytes); + return make_object(dict, MUST(ByteBuffer::copy(bytes))); } PDFErrorOr> Parser::parse_graphics_commands()