Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
fx_stream.h
Go to the documentation of this file.
1// Copyright 2014 The PDFium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7#ifndef CORE_FXCRT_FX_STREAM_H_
8#define CORE_FXCRT_FX_STREAM_H_
9
10#include <stddef.h>
11#include <stdint.h>
12
13#include "core/fxcrt/bytestring.h"
14#include "core/fxcrt/fx_types.h"
15#include "core/fxcrt/retain_ptr.h"
16#include "third_party/base/containers/span.h"
17
19 public:
20 // When `size` is 0, treat it as a no-op and return true.
21 virtual bool WriteBlock(pdfium::span<const uint8_t> data) = 0;
22
23 bool WriteString(ByteStringView str);
24 bool WriteByte(uint8_t byte);
25 bool WriteDWord(uint32_t i);
26 bool WriteFilesize(FX_FILESIZE size);
27
28 protected:
29 virtual ~IFX_WriteStream() = default;
30};
31
33 public:
34 virtual FX_FILESIZE CurrentOffset() const = 0;
35};
36
38 public:
39 virtual FX_FILESIZE GetSize() = 0;
40};
41
43 public IFX_WriteStream {};
44
47 public:
48 // IFX_WriteStream:
49 bool WriteBlock(pdfium::span<const uint8_t> buffer) override;
50
51 virtual bool Flush() = 0;
52 virtual bool WriteBlockAtOffset(pdfium::span<const uint8_t> data,
53 FX_FILESIZE offset) = 0;
54};
55
56class IFX_SeekableReadStream : virtual public Retainable,
57 virtual public IFX_StreamWithSize {
58 public:
60 const char* filename);
61
62 virtual bool IsEOF();
63 virtual FX_FILESIZE GetPosition();
64 [[nodiscard]] virtual size_t ReadBlock(pdfium::span<uint8_t> buffer);
65 [[nodiscard]] virtual bool ReadBlockAtOffset(pdfium::span<uint8_t> buffer,
66 FX_FILESIZE offset) = 0;
67};
68
71 public:
72 // IFX_SeekableWriteStream:
73 bool WriteBlock(pdfium::span<const uint8_t> buffer) override;
74};
75
76#endif // CORE_FXCRT_FX_STREAM_H_
CPDF_Creator(CPDF_Document *pDoc, RetainPtr< IFX_RetainableWriteStream > archive)
bool SetFileVersion(int32_t fileVersion)
void RemoveSecurity()
bool Create(uint32_t flags)
virtual FX_FILESIZE CurrentOffset() const =0
static RetainPtr< IFX_SeekableReadStream > CreateFromFilename(const char *filename)
Definition fx_stream.cpp:68
virtual size_t ReadBlock(pdfium::span< uint8_t > buffer)
Definition fx_stream.cpp:88
virtual FX_FILESIZE GetPosition()
Definition fx_stream.cpp:84
virtual bool ReadBlockAtOffset(pdfium::span< uint8_t > buffer, FX_FILESIZE offset)=0
virtual bool IsEOF()
Definition fx_stream.cpp:80
bool WriteBlock(pdfium::span< const uint8_t > buffer) override
Definition fx_stream.cpp:92
virtual bool WriteBlockAtOffset(pdfium::span< const uint8_t > data, FX_FILESIZE offset)=0
bool WriteBlock(pdfium::span< const uint8_t > buffer) override
Definition fx_stream.cpp:76
virtual bool Flush()=0
virtual FX_FILESIZE GetSize()=0
bool WriteFilesize(FX_FILESIZE size)
Definition fx_stream.cpp:61
bool WriteByte(uint8_t byte)
Definition fx_stream.cpp:51
bool WriteString(ByteStringView str)
Definition fx_stream.cpp:47
virtual ~IFX_WriteStream()=default
bool WriteDWord(uint32_t i)
Definition fx_stream.cpp:55
virtual bool WriteBlock(pdfium::span< const uint8_t > data)=0
static ByteString Format(const char *pFormat,...)
ByteString & operator=(ByteString &&that) noexcept
#define FPDFCREATE_INCREMENTAL
#define FPDFCREATE_NO_ORIGINAL
void * FX_Random_MT_Start(uint32_t dwSeed)
Definition fx_random.cpp:85
uint32_t FX_Random_MT_Generate(void *pContext)
Definition fx_random.cpp:96
void FX_Random_MT_Close(void *pContext)
#define FX_FILESIZE
Definition fx_types.h:19