Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
SkPDFOffsetMap Class Reference

#include <SkPDFDocumentPriv.h>

Public Member Functions

void markStartOfDocument (const SkWStream *)
 
void markStartOfObject (int referenceNumber, const SkWStream *)
 
int objectCount () const
 
int emitCrossReferenceTable (SkWStream *s) const
 

Detailed Description

Definition at line 39 of file SkPDFDocumentPriv.h.

Member Function Documentation

◆ emitCrossReferenceTable()

int SkPDFOffsetMap::emitCrossReferenceTable ( SkWStream s) const

Definition at line 74 of file SkPDFDocument.cpp.

74 {
75 int xRefFileOffset = SkToInt(difference(s->bytesWritten(), fBaseOffset));
76 s->writeText("xref\n0 ");
77 s->writeDecAsText(this->objectCount());
78 s->writeText("\n0000000000 65535 f \n");
79 for (int offset : fOffsets) {
80 SkASSERT(offset > 0); // Offset was set.
81 s->writeBigDecAsText(offset, 10);
82 s->writeText(" 00000 n \n");
83 }
84 return xRefFileOffset;
85}
#define SkASSERT(cond)
Definition SkAssert.h:116
static size_t difference(size_t minuend, size_t subtrahend)
constexpr int SkToInt(S x)
Definition SkTo.h:29
int objectCount() const
bool writeText(const char text[])
Definition SkStream.h:247
struct MyStruct s
Point offset

◆ markStartOfDocument()

void SkPDFOffsetMap::markStartOfDocument ( const SkWStream s)

Definition at line 55 of file SkPDFDocument.cpp.

55{ fBaseOffset = s->bytesWritten(); }

◆ markStartOfObject()

void SkPDFOffsetMap::markStartOfObject ( int  referenceNumber,
const SkWStream s 
)

Definition at line 61 of file SkPDFDocument.cpp.

61 {
62 SkASSERT(referenceNumber > 0);
63 size_t index = SkToSizeT(referenceNumber - 1);
64 if (index >= fOffsets.size()) {
65 fOffsets.resize(index + 1);
66 }
67 fOffsets[index] = SkToInt(difference(s->bytesWritten(), fBaseOffset));
68}
constexpr size_t SkToSizeT(S x)
Definition SkTo.h:31

◆ objectCount()

int SkPDFOffsetMap::objectCount ( ) const

Definition at line 70 of file SkPDFDocument.cpp.

70 {
71 return SkToInt(fOffsets.size() + 1); // Include the special zeroth object in the count.
72}

The documentation for this class was generated from the following files: