mirror of
https://github.com/qpdf/qpdf.git
synced 2024-05-31 01:10:51 +00:00
QPDFObjGen : tidy QPDF_Stream
Change method signatures to use QPDFObjGen. Replace QPDF_Stream::objid and generation with QPDF_Stream::og.
This commit is contained in:
parent
f7978db1f6
commit
4b73d057fb
|
@ -2634,8 +2634,8 @@ QPDFObjectHandle::newStream(
|
|||
qpdf_offset_t offset,
|
||||
size_t length)
|
||||
{
|
||||
QPDFObjectHandle result = QPDFObjectHandle(QPDF_Stream::create(
|
||||
qpdf, og.getObj(), og.getGen(), stream_dict, offset, length));
|
||||
QPDFObjectHandle result = QPDFObjectHandle(
|
||||
QPDF_Stream::create(qpdf, og, stream_dict, offset, length));
|
||||
if (offset) {
|
||||
result.setParsedOffset(offset);
|
||||
}
|
||||
|
@ -2651,11 +2651,11 @@ QPDFObjectHandle::newStream(QPDF* qpdf)
|
|||
}
|
||||
QTC::TC("qpdf", "QPDFObjectHandle newStream");
|
||||
QPDFObjectHandle stream_dict = newDictionary();
|
||||
QPDFObjectHandle result = qpdf->makeIndirectObject(
|
||||
QPDFObjectHandle(QPDF_Stream::create(qpdf, 0, 0, stream_dict, 0, 0)));
|
||||
QPDFObjectHandle result = qpdf->makeIndirectObject(QPDFObjectHandle(
|
||||
QPDF_Stream::create(qpdf, QPDFObjGen(), stream_dict, 0, 0)));
|
||||
result.dereference();
|
||||
QPDF_Stream* stream = dynamic_cast<QPDF_Stream*>(result.obj.get());
|
||||
stream->setObjGen(result.getObjectID(), result.getGeneration());
|
||||
stream->setObjGen(result.getObjGen());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -110,14 +110,12 @@ StreamBlobProvider::operator()(Pipeline* p)
|
|||
|
||||
QPDF_Stream::QPDF_Stream(
|
||||
QPDF* qpdf,
|
||||
int objid,
|
||||
int generation,
|
||||
QPDFObjGen const& og,
|
||||
QPDFObjectHandle stream_dict,
|
||||
qpdf_offset_t offset,
|
||||
size_t length) :
|
||||
qpdf(qpdf),
|
||||
objid(objid),
|
||||
generation(generation),
|
||||
og(og),
|
||||
filter_on_write(true),
|
||||
stream_dict(stream_dict),
|
||||
offset(offset),
|
||||
|
@ -128,22 +126,18 @@ QPDF_Stream::QPDF_Stream(
|
|||
"object for dictionary");
|
||||
}
|
||||
setDescription(
|
||||
this->qpdf,
|
||||
this->qpdf->getFilename() + ", stream object " +
|
||||
QPDFObjGen(objid, generation).unparse(' '));
|
||||
qpdf, qpdf->getFilename() + ", stream object " + og.unparse(' '));
|
||||
}
|
||||
|
||||
std::shared_ptr<QPDFObject>
|
||||
QPDF_Stream::create(
|
||||
QPDF* qpdf,
|
||||
int objid,
|
||||
int generation,
|
||||
QPDFObjGen const& og,
|
||||
QPDFObjectHandle stream_dict,
|
||||
qpdf_offset_t offset,
|
||||
size_t length)
|
||||
{
|
||||
return do_create(
|
||||
new QPDF_Stream(qpdf, objid, generation, stream_dict, offset, length));
|
||||
return do_create(new QPDF_Stream(qpdf, og, stream_dict, offset, length));
|
||||
}
|
||||
|
||||
std::shared_ptr<QPDFObject>
|
||||
|
@ -180,22 +174,21 @@ QPDF_Stream::releaseResolved()
|
|||
}
|
||||
|
||||
void
|
||||
QPDF_Stream::setObjGen(int objid, int generation)
|
||||
QPDF_Stream::setObjGen(QPDFObjGen const& og)
|
||||
{
|
||||
if (!((this->objid == 0) && (this->generation == 0))) {
|
||||
if (this->og.isIndirect()) {
|
||||
throw std::logic_error(
|
||||
"attempt to set object ID and generation of a stream"
|
||||
" that already has them");
|
||||
}
|
||||
this->objid = objid;
|
||||
this->generation = generation;
|
||||
this->og = og;
|
||||
}
|
||||
|
||||
std::string
|
||||
QPDF_Stream::unparse()
|
||||
{
|
||||
// Unparse stream objects as indirect references
|
||||
return QPDFObjGen(objid, generation).unparse(' ') + " R";
|
||||
return og.unparse(' ') + " R";
|
||||
}
|
||||
|
||||
JSON
|
||||
|
@ -617,8 +610,8 @@ QPDF_Stream::pipeStreamData(
|
|||
Pl_Count count("stream provider count", pipeline);
|
||||
if (this->stream_provider->supportsRetry()) {
|
||||
if (!this->stream_provider->provideStreamData(
|
||||
this->objid,
|
||||
this->generation,
|
||||
og.getObj(),
|
||||
og.getGen(),
|
||||
&count,
|
||||
suppress_warnings,
|
||||
will_retry)) {
|
||||
|
@ -627,7 +620,7 @@ QPDF_Stream::pipeStreamData(
|
|||
}
|
||||
} else {
|
||||
this->stream_provider->provideStreamData(
|
||||
this->objid, this->generation, &count);
|
||||
og.getObj(), og.getGen(), &count);
|
||||
}
|
||||
qpdf_offset_t actual_length = count.getCount();
|
||||
qpdf_offset_t desired_length = 0;
|
||||
|
@ -640,9 +633,8 @@ QPDF_Stream::pipeStreamData(
|
|||
// This would be caused by programmer error on the
|
||||
// part of a library user, not by invalid input data.
|
||||
throw std::runtime_error(
|
||||
"stream data provider for " +
|
||||
QPDFObjGen(objid, generation).unparse(' ') + " provided " +
|
||||
QUtil::int_to_string(actual_length) +
|
||||
"stream data provider for " + og.unparse(' ') +
|
||||
" provided " + QUtil::int_to_string(actual_length) +
|
||||
" bytes instead of expected " +
|
||||
QUtil::int_to_string(desired_length) + " bytes");
|
||||
}
|
||||
|
@ -658,7 +650,7 @@ QPDF_Stream::pipeStreamData(
|
|||
QTC::TC("qpdf", "QPDF_Stream pipe original stream data");
|
||||
if (!QPDF::Pipe::pipeStreamData(
|
||||
this->qpdf,
|
||||
QPDFObjGen(this->objid, this->generation),
|
||||
og,
|
||||
this->offset,
|
||||
this->length,
|
||||
this->stream_dict,
|
||||
|
|
|
@ -19,8 +19,7 @@ class QPDF_Stream: public QPDFObject
|
|||
virtual ~QPDF_Stream() = default;
|
||||
static std::shared_ptr<QPDFObject> create(
|
||||
QPDF*,
|
||||
int objid,
|
||||
int generation,
|
||||
QPDFObjGen const& og,
|
||||
QPDFObjectHandle stream_dict,
|
||||
qpdf_offset_t offset,
|
||||
size_t length);
|
||||
|
@ -78,7 +77,7 @@ class QPDF_Stream: public QPDFObject
|
|||
// Replace object ID and generation. This may only be called if
|
||||
// object ID and generation are 0. It is used by QPDFObjectHandle
|
||||
// when adding streams to files.
|
||||
void setObjGen(int objid, int generation);
|
||||
void setObjGen(QPDFObjGen const& og);
|
||||
|
||||
protected:
|
||||
virtual void releaseResolved();
|
||||
|
@ -86,8 +85,7 @@ class QPDF_Stream: public QPDFObject
|
|||
private:
|
||||
QPDF_Stream(
|
||||
QPDF*,
|
||||
int objid,
|
||||
int generation,
|
||||
QPDFObjGen const& og,
|
||||
QPDFObjectHandle stream_dict,
|
||||
qpdf_offset_t offset,
|
||||
size_t length);
|
||||
|
@ -111,8 +109,7 @@ class QPDF_Stream: public QPDFObject
|
|||
void setDictDescription();
|
||||
|
||||
QPDF* qpdf;
|
||||
int objid;
|
||||
int generation;
|
||||
QPDFObjGen og;
|
||||
bool filter_on_write;
|
||||
QPDFObjectHandle stream_dict;
|
||||
qpdf_offset_t offset;
|
||||
|
|
Loading…
Reference in New Issue
Block a user