Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
fx_stream.cpp
Go to the documentation of this file.
1
// Copyright 2017 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
#
include
"core/fxcrt/fx_stream.h"
8
9
#
include
<
memory
>
10
#
include
<
utility
>
11
12
#
include
"core/fxcrt/fileaccess_iface.h"
13
14
namespace
{
15
16
class
CFX_CRTFileStream
final
:
public
IFX_SeekableStream
{
17
public
:
18
CONSTRUCT_VIA_MAKE_RETAIN
;
19
20
// IFX_SeekableStream:
21
FX_FILESIZE
GetSize()
override
{
return
m_pFile->GetSize(); }
22
bool
IsEOF()
override
{
return
GetPosition() >= GetSize(); }
23
FX_FILESIZE
GetPosition()
override
{
return
m_pFile->GetPosition(); }
24
bool
ReadBlockAtOffset(pdfium::span<uint8_t> buffer,
25
FX_FILESIZE
offset)
override
{
26
return
m_pFile->ReadPos(buffer, offset) > 0;
27
}
28
bool
WriteBlock(pdfium::span<
const
uint8_t> buffer)
override
{
29
if
(m_pFile->SetPosition(GetSize()) ==
static_cast
<
FX_FILESIZE
>(-1)) {
30
return
false
;
31
}
32
return
!!m_pFile->Write(buffer);
33
}
34
bool
Flush()
override
{
return
m_pFile->Flush(); }
35
36
private
:
37
explicit
CFX_CRTFileStream(std::unique_ptr<FileAccessIface> pFA)
38
: m_pFile(std::move(pFA)) {}
39
~CFX_CRTFileStream()
override
=
default
;
40
41
std::unique_ptr<FileAccessIface> m_pFile;
42
};
43
44
}
// namespace
45
46
bool
IFX_WriteStream
::
WriteString
(
ByteStringView
str) {
47
return
WriteBlock(str.unsigned_span());
48
}
49
50
bool
IFX_WriteStream
::
WriteByte
(uint8_t byte) {
51
return
WriteBlock(pdfium::byte_span_from_ref(byte));
52
}
53
54
bool
IFX_WriteStream
::
WriteDWord
(uint32_t i) {
55
char
buf[20] = {};
56
FXSYS_itoa
(
i
,
buf
,
10
)
;
57
auto
buf_span =
pdfium
::as_byte_span(buf);
58
return
WriteBlock(buf_span.first(strlen(buf)));
59
}
60
61
bool
IFX_WriteStream
::
WriteFilesize
(
FX_FILESIZE
size) {
62
char
buf[20] = {};
63
FXSYS_i64toa
(
size
,
buf
,
10
)
;
64
return
WriteBlock(pdfium::as_writable_byte_span(buf).first(strlen(buf)));
65
}
66
67
// static
68
RetainPtr
<
IFX_SeekableReadStream
>
IFX_SeekableReadStream
::
CreateFromFilename
(
69
const
char
* filename) {
70
std::unique_ptr<FileAccessIface> pFA = FileAccessIface::Create();
71
if
(!pFA->Open(filename))
72
return
nullptr
;
73
return
pdfium
::MakeRetain<CFX_CRTFileStream>(
std
::move(pFA));
74
}
75
76
bool
IFX_SeekableReadStream
::
IsEOF
() {
77
return
false
;
78
}
79
80
FX_FILESIZE
IFX_SeekableReadStream
::
GetPosition
() {
81
return
0;
82
}
IFX_SeekableReadStream
Definition
fx_stream.h:52
IFX_SeekableReadStream::CreateFromFilename
static RetainPtr< IFX_SeekableReadStream > CreateFromFilename(const char *filename)
Definition
fx_stream.cpp:68
IFX_SeekableReadStream::GetPosition
virtual FX_FILESIZE GetPosition()
Definition
fx_stream.cpp:80
IFX_SeekableReadStream::IsEOF
virtual bool IsEOF()
Definition
fx_stream.cpp:76
IFX_SeekableStream
Definition
fx_stream.h:64
IFX_WriteStream
Definition
fx_stream.h:18
IFX_WriteStream::WriteFilesize
bool WriteFilesize(FX_FILESIZE size)
Definition
fx_stream.cpp:61
IFX_WriteStream::WriteByte
bool WriteByte(uint8_t byte)
Definition
fx_stream.cpp:50
IFX_WriteStream::WriteString
bool WriteString(ByteStringView str)
Definition
fx_stream.cpp:46
IFX_WriteStream::WriteDWord
bool WriteDWord(uint32_t i)
Definition
fx_stream.cpp:54
fxcrt::RetainPtr
Definition
retain_ptr.h:28
pdfium::CFDETextOutLargeBitmapTest
Definition
cfde_textout_unittest.cpp:117
FXSYS_i64toa
const char * FXSYS_i64toa(int64_t value, char *str, int radix)
Definition
fx_system.cpp:132
FXSYS_itoa
char * FXSYS_itoa(int value, char *str, int radix)
Definition
fx_system.cpp:246
FX_FILESIZE
#define FX_FILESIZE
Definition
fx_types.h:19
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
CONSTRUCT_VIA_MAKE_RETAIN
#define CONSTRUCT_VIA_MAKE_RETAIN
Definition
retain_ptr.h:222
ByteStringView
fxcrt::ByteStringView ByteStringView
Definition
string_view_template.h:325
qtwebengine
src
3rdparty
chromium
third_party
pdfium
core
fxcrt
fx_stream.cpp
Generated on
for Qt by
1.18.0