size_t SkPDFStream::getOutputSize(SkPDFCatalog* catalog, bool indirect) { if (indirect) return getIndirectOutputSize(catalog); return this->INHERITED::getOutputSize(catalog, false) + strlen(" stream\n\nendstream") + fLength; }
size_t SkPDFDict::getOutputSize(SkPDFCatalog* catalog, bool indirect) { if (indirect) { return getIndirectOutputSize(catalog); } size_t result = strlen("<<>>") + (fValue.count() * 2); for (int i = 0; i < fValue.count(); i++) { result += fValue[i].key->getOutputSize(catalog, false); result += fValue[i].value->getOutputSize(catalog, false); } return result; }
size_t SkPDFArray::getOutputSize(SkPDFCatalog* catalog, bool indirect) { if (indirect) { return getIndirectOutputSize(catalog); } size_t result = strlen("[]"); if (fValue.count()) { result += fValue.count() - 1; } for (int i = 0; i < fValue.count(); i++) { result += fValue[i]->getOutputSize(catalog, false); } return result; }
size_t SkPDFDict::getOutputSize(SkPDFCatalog* catalog, bool indirect) { if (indirect) { return getIndirectOutputSize(catalog); } SkAutoMutexAcquire lock(fMutex); // If another thread triggers a // resize while this thread is in // the for-loop, we can be left // with a bad fValue[i] reference. size_t result = strlen("<<>>") + (fValue.count() * 2); for (int i = 0; i < fValue.count(); i++) { SkASSERT(fValue[i].key); SkASSERT(fValue[i].value); result += fValue[i].key->getOutputSize(catalog, false); result += fValue[i].value->getOutputSize(catalog, false); } return result; }
size_t SkPDFString::getOutputSize(SkPDFCatalog* catalog, bool indirect) { if (indirect) return getIndirectOutputSize(catalog); return fValue.size(); }
size_t SkPDFImage::getOutputSize(SkPDFCatalog* catalog, bool indirect) { if (indirect) return getIndirectOutputSize(catalog); return fStream->getOutputSize(catalog, indirect); }