本文整理汇总了C++中DictionaryContext类的典型用法代码示例。如果您正苦于以下问题:C++ DictionaryContext类的具体用法?C++ DictionaryContext怎么用?C++ DictionaryContext使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了DictionaryContext类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WriteState
EStatusCode PDFUsedFont::WriteState(ObjectsContext* inStateWriter,ObjectIDType inObjectID)
{
inStateWriter->StartNewIndirectObject(inObjectID);
DictionaryContext* pdfUsedFontObject = inStateWriter->StartDictionary();
pdfUsedFontObject->WriteKey("Type");
pdfUsedFontObject->WriteNameValue("PDFUsedFont");
ObjectIDType writtenFontObject;
if(mWrittenFont)
{
writtenFontObject = inStateWriter->GetInDirectObjectsRegistry().AllocateNewObjectID();
pdfUsedFontObject->WriteKey("mWrittenFont");
pdfUsedFontObject->WriteNewObjectReferenceValue(writtenFontObject);
}
inStateWriter->EndDictionary(pdfUsedFontObject);
inStateWriter->EndIndirectObject();
if(mWrittenFont)
mWrittenFont->WriteState(inStateWriter,writtenFontObject);
return PDFHummus::eSuccess;
}
示例2: StartDictionary
PDFStream* ObjectsContext::StartUnfilteredPDFStream(DictionaryContext* inStreamDictionary)
{
// write stream header and allocate PDF stream.
// PDF stream will take care of maintaining state for the stream till writing is finished
// Write the stream header
// Write Stream Dictionary (note that inStreamDictionary is optionally used)
DictionaryContext* streamDictionaryContext = (NULL == inStreamDictionary ? StartDictionary() : inStreamDictionary);
// Length (write as an indirect object)
streamDictionaryContext->WriteKey(scLength);
ObjectIDType lengthObjectID = mReferencesRegistry.AllocateNewObjectID();
streamDictionaryContext->WriteNewObjectReferenceValue(lengthObjectID);
EndDictionary(streamDictionaryContext);
// Write Stream Content
WriteKeyword(scStream);
// now begin the stream itself
PDFStream* result = new PDFStream(false,mOutputStream, mEncryptionHelper,lengthObjectID,NULL);
// break encryption, if any, when writing a stream, cause if encryption is desired, only top level elements should be encrypted. hence - the stream itself is, but its contents do not re-encrypt
if(mEncryptionHelper)
mEncryptionHelper->PauseEncryption();
return result;
}
示例3: EndDictionary
void ObjectsContext::EndPDFStream(PDFStream* inStream)
{
// finalize the stream write to end stream context and calculate length
inStream->FinalizeStreamWrite();
if(inStream->GetExtentObjectID() == 0)
{
DictionaryContext* streamDictionaryContext = inStream->GetStreamDictionaryForDirectExtentStream();
// Length (write as a direct object)
streamDictionaryContext->WriteKey(scLength);
streamDictionaryContext->WriteIntegerValue(inStream->GetLength());
EndDictionary(streamDictionaryContext);
// Write Stream Content
WriteKeyword(scStream);
inStream->FlushStreamContentForDirectExtentStream();
EndLine();
WriteKeyword(scEndStream);
EndIndirectObject();
}
else
{
WritePDFStreamEndWithoutExtent();
EndIndirectObject();
WritePDFStreamExtent(inStream);
}
}
示例4: WriteState
EStatusCode UsedFontsRepository::WriteState(ObjectsContext* inStateWriter,ObjectIDType inObjectID)
{
EStatusCode status = PDFHummus::eSuccess;
ObjectIDTypeList usedFontsObjects;
inStateWriter->StartNewIndirectObject(inObjectID);
DictionaryContext* usedFontsRepositoryObject = inStateWriter->StartDictionary();
usedFontsRepositoryObject->WriteKey("Type");
usedFontsRepositoryObject->WriteNameValue("UsedFontsRepository");
usedFontsRepositoryObject->WriteKey("mUsedFonts");
inStateWriter->StartArray();
StringAndLongToPDFUsedFontMap::iterator it = mUsedFonts.begin();
for(; it != mUsedFonts.end();++it)
{
PDFTextString aTextString(it->first.first);
inStateWriter->WriteLiteralString(aTextString.ToString());
inStateWriter->WriteInteger(it->first.second);
ObjectIDType usedFontID = inStateWriter->GetInDirectObjectsRegistry().AllocateNewObjectID();
inStateWriter->WriteNewIndirectObjectReference(usedFontID);
usedFontsObjects.push_back(usedFontID);
}
inStateWriter->EndArray(eTokenSeparatorEndLine);
usedFontsRepositoryObject->WriteKey("mOptionaMetricsFiles");
inStateWriter->StartArray();
StringToStringMap::iterator itOptionals = mOptionaMetricsFiles.begin();
for(; itOptionals != mOptionaMetricsFiles.end();++itOptionals)
{
PDFTextString aTextString(itOptionals->first);
inStateWriter->WriteLiteralString(aTextString.ToString());
aTextString = itOptionals->second;
inStateWriter->WriteLiteralString(aTextString.ToString());
}
inStateWriter->EndArray(eTokenSeparatorEndLine);
inStateWriter->EndDictionary(usedFontsRepositoryObject);
inStateWriter->EndIndirectObject();
if(usedFontsObjects.size() > 0)
{
it = mUsedFonts.begin();
ObjectIDTypeList::iterator itIDs = usedFontsObjects.begin();
for(; it != mUsedFonts.end() && PDFHummus::eSuccess == status;++it,++itIDs)
status = it->second->WriteState(inStateWriter,*itIDs);
}
return status;
}
示例5: CreateCFFSubset
EStatusCode CFFEmbeddedFontWriter::WriteEmbeddedFont(
FreeTypeFaceWrapper& inFontInfo,
const UIntVector& inSubsetGlyphIDs,
const std::string& inFontFile3SubType,
const std::string& inSubsetFontName,
ObjectsContext* inObjectsContext,
UShortVector* inCIDMapping,
ObjectIDType& outEmbeddedFontObjectID)
{
MyStringBuf rawFontProgram;
bool notEmbedded;
// as oppose to true type, the reason for using a memory stream here is mainly peformance - i don't want to start
// setting file pointers and move in a file stream
EStatusCode status;
do
{
status = CreateCFFSubset(inFontInfo,inSubsetGlyphIDs,inCIDMapping,inSubsetFontName,notEmbedded,rawFontProgram);
if(status != PDFHummus::eSuccess)
{
TRACE_LOG("CFFEmbeddedFontWriter::WriteEmbeddedFont, failed to write embedded font program");
break;
}
if(notEmbedded)
{
// can't embed. mark succesful, and go back empty
outEmbeddedFontObjectID = 0;
TRACE_LOG("CFFEmbeddedFontWriter::WriteEmbeddedFont, font may not be embedded. so not embedding");
return PDFHummus::eSuccess;
}
outEmbeddedFontObjectID = inObjectsContext->StartNewIndirectObject();
DictionaryContext* fontProgramDictionaryContext = inObjectsContext->StartDictionary();
rawFontProgram.pubseekoff(0,std::ios_base::beg);
fontProgramDictionaryContext->WriteKey(scSubtype);
fontProgramDictionaryContext->WriteNameValue(inFontFile3SubType);
PDFStream* pdfStream = inObjectsContext->StartPDFStream(fontProgramDictionaryContext);
// now copy the created font program to the output stream
InputStringBufferStream fontProgramStream(&rawFontProgram);
OutputStreamTraits streamCopier(pdfStream->GetWriteStream());
status = streamCopier.CopyToOutputStream(&fontProgramStream);
if(status != PDFHummus::eSuccess)
{
TRACE_LOG("CFFEmbeddedFontWriter::WriteEmbeddedFont, failed to copy font program into pdf stream");
break;
}
inObjectsContext->EndPDFStream(pdfStream);
delete pdfStream;
}while(false);
return status;
}
示例6: CreateTrueTypeSubset
EStatusCode TrueTypeEmbeddedFontWriter::WriteEmbeddedFont(
FreeTypeFaceWrapper& inFontInfo,
const UIntVector& inSubsetGlyphIDs,
ObjectsContext* inObjectsContext,
ObjectIDType& outEmbeddedFontObjectID)
{
MyStringBuf rawFontProgram;
bool notEmbedded;
EStatusCode status;
do
{
status = CreateTrueTypeSubset(inFontInfo,inSubsetGlyphIDs,notEmbedded,rawFontProgram);
if(status != PDFHummus::eSuccess)
{
TRACE_LOG("TrueTypeEmbeddedFontWriter::WriteEmbeddedFont, failed to write embedded font program");
break;
}
if(notEmbedded)
{
// can't embed. mark succesful, and go back empty
outEmbeddedFontObjectID = 0;
TRACE_LOG("TrueTypeEmbeddedFontWriter::WriteEmbeddedFont, font may not be embedded. so not embedding");
return PDFHummus::eSuccess;
}
outEmbeddedFontObjectID = inObjectsContext->StartNewIndirectObject();
DictionaryContext* fontProgramDictionaryContext = inObjectsContext->StartDictionary();
// Length1 (decompressed true type program length)
fontProgramDictionaryContext->WriteKey(scLength1);
fontProgramDictionaryContext->WriteIntegerValue(rawFontProgram.GetCurrentWritePosition());
rawFontProgram.pubseekoff(0,std::ios_base::beg);
PDFStream* pdfStream = inObjectsContext->StartPDFStream(fontProgramDictionaryContext);
// now copy the created font program to the output stream
InputStringBufferStream fontProgramStream(&rawFontProgram);
OutputStreamTraits streamCopier(pdfStream->GetWriteStream());
status = streamCopier.CopyToOutputStream(&fontProgramStream);
if(status != PDFHummus::eSuccess)
{
TRACE_LOG("TrueTypeEmbeddedFontWriter::WriteEmbeddedFont, failed to copy font program into pdf stream");
break;
}
inObjectsContext->EndPDFStream(pdfStream);
delete pdfStream;
}while(false);
return status;
}
示例7: WriteState
EStatusCode WrittenFontCFF::WriteState(ObjectsContext* inStateWriter,ObjectIDType inObjectID)
{
inStateWriter->StartNewIndirectObject(inObjectID);
DictionaryContext* writtenFontDictionary = inStateWriter->StartDictionary();
writtenFontDictionary->WriteKey("Type");
writtenFontDictionary->WriteNameValue("WrittenFontCFF");
writtenFontDictionary->WriteKey("mAvailablePositionsCount");
writtenFontDictionary->WriteIntegerValue(mAvailablePositionsCount);
writtenFontDictionary->WriteKey("mFreeList");
inStateWriter->StartArray();
UCharAndUCharList::iterator it = mFreeList.begin();
for(; it != mFreeList.end();++it)
{
inStateWriter->WriteInteger(it->first);
inStateWriter->WriteInteger(it->second);
}
inStateWriter->EndArray(eTokenSeparatorEndLine);
writtenFontDictionary->WriteKey("mAssignedPositions");
inStateWriter->StartArray();
for(int i=0;i<256;++i)
inStateWriter->WriteInteger(mAssignedPositions[i]);
inStateWriter->EndArray(eTokenSeparatorEndLine);
writtenFontDictionary->WriteKey("mAssignedPositionsAvailable");
inStateWriter->StartArray();
for(int i=0;i<256;++i)
inStateWriter->WriteBoolean(mAssignedPositionsAvailable[i]);
inStateWriter->EndArray(eTokenSeparatorEndLine);
writtenFontDictionary->WriteKey("mIsCID");
writtenFontDictionary->WriteBooleanValue(mIsCID);
EStatusCode status = AbstractWrittenFont::WriteStateInDictionary(inStateWriter,writtenFontDictionary);
if(PDFHummus::eSuccess == status)
{
inStateWriter->EndDictionary(writtenFontDictionary);
inStateWriter->EndIndirectObject();
status = AbstractWrittenFont::WriteStateAfterDictionary(inStateWriter);
}
return status;
}
示例8: string
vector<string> PDFModifiedPage::WriteNewResourcesDictionary(ObjectsContext& inObjectContext) {
vector<string> formResourcesNames;
// no existing resource dictionary, so write a new one
DictionaryContext* dict = inObjectContext.StartDictionary();
dict->WriteKey("XObject");
DictionaryContext* xobjectDict = inObjectContext.StartDictionary();
for (unsigned long i = 0; i<mContenxts.size(); ++i)
{
string formObjectName = string("myForm_") + Int(i).ToString();
dict->WriteKey(formObjectName);
dict->WriteObjectReferenceValue(mContenxts[i]->GetObjectID());
formResourcesNames.push_back(formObjectName);
}
inObjectContext.EndDictionary(xobjectDict);
inObjectContext.EndDictionary(dict);
return formResourcesNames;
}
示例9: WriteState
EStatusCode WrittenFontTrueType::WriteState(ObjectsContext* inStateWriter,ObjectIDType inObjectID)
{
inStateWriter->StartNewIndirectObject(inObjectID);
DictionaryContext* writtenFontDictionary = inStateWriter->StartDictionary();
writtenFontDictionary->WriteKey("Type");
writtenFontDictionary->WriteNameValue("WrittenFontTrueType");
EStatusCode status = AbstractWrittenFont::WriteStateInDictionary(inStateWriter,writtenFontDictionary);
if(PDFHummus::eSuccess == status)
{
inStateWriter->EndDictionary(writtenFontDictionary);
inStateWriter->EndIndirectObject();
status = AbstractWrittenFont::WriteStateAfterDictionary(inStateWriter);
}
return status;
}
示例10: while
vector<string> PDFModifiedPage::WriteModifiedResourcesDict(PDFParser* inParser,PDFDictionary* inResourcesDictionary,ObjectsContext& inObjectContext,PDFDocumentCopyingContext* inCopyingContext)
{
vector<string> formResourcesNames;
MapIterator<PDFNameToPDFObjectMap> resourcesDictionaryIt = inResourcesDictionary->GetIterator();
// create modified page object
DictionaryContext* dict = mWriter->GetObjectsContext().StartDictionary();
// copy all elements of the page to the new page object, but the "Contents" and "Resources" elements
while(resourcesDictionaryIt.MoveNext())
{
if(resourcesDictionaryIt.GetKey()->GetValue() != "XObject")
{
dict->WriteKey(resourcesDictionaryIt.GetKey()->GetValue());
inCopyingContext->CopyDirectObjectAsIs(resourcesDictionaryIt.GetValue());
}
}
// now write a new xobject entry.
dict->WriteKey("XObject");
DictionaryContext* xobjectDict = inObjectContext.StartDictionary();
PDFObjectCastPtr<PDFDictionary> existingXObjectDict(inParser->QueryDictionaryObject(inResourcesDictionary,"XObject"));
string imageObjectName;
if(existingXObjectDict.GetPtr())
{
// i'm having a very sophisticated algo here to create a new unique name.
// i'm making sure it's different in one letter from any name, using a well known discrete math proof method
MapIterator<PDFNameToPDFObjectMap> itExisting = existingXObjectDict->GetIterator();
unsigned long i=0;
while(itExisting.MoveNext())
{
string name = itExisting.GetKey()->GetValue();
xobjectDict->WriteKey(name);
inCopyingContext->CopyDirectObjectAsIs(itExisting.GetValue());
imageObjectName.push_back((char)(GetDifferentChar((name.length() >= i+1) ? name[i]:0x39)));
++i;
}
inObjectContext.EndLine();
}
PDFFormXObjectVector::iterator itForms = mContenxts.begin();
imageObjectName.push_back('_');
for(int i=0;itForms != mContenxts.end();++i,++itForms)
{
string formObjectName = imageObjectName + Int(i).ToString();
xobjectDict->WriteKey(formObjectName);
xobjectDict->WriteObjectReferenceValue((*itForms)->GetObjectID());
formResourcesNames.push_back(formObjectName);
}
inObjectContext.EndDictionary(xobjectDict);
inObjectContext.EndDictionary(dict);
return formResourcesNames;
}
示例11: StartDictionary
PDFStream* ObjectsContext::StartUnfilteredPDFStream(DictionaryContext* inStreamDictionary)
{
// write stream header and allocate PDF stream.
// PDF stream will take care of maintaining state for the stream till writing is finished
// Write the stream header
// Write Stream Dictionary (note that inStreamDictionary is optionally used)
DictionaryContext* streamDictionaryContext = (NULL == inStreamDictionary ? StartDictionary() : inStreamDictionary);
// Length (write as an indirect object)
streamDictionaryContext->WriteKey(scLength);
ObjectIDType lengthObjectID = mReferencesRegistry.AllocateNewObjectID();
streamDictionaryContext->WriteNewObjectReferenceValue(lengthObjectID);
EndDictionary(streamDictionaryContext);
// Write Stream Content
WriteKeyword(scStream);
// now begin the stream itself
return new PDFStream(false,mOutputStream,lengthObjectID,NULL);
}
示例12: WriteCIDSystemInfo
void DescendentFontWriter::WriteCIDSystemInfo(ObjectIDType inCIDSystemInfoObjectID)
{
FT_Bool isCID;
const char* registry;
const char* ordering;
FT_Int supplement;
if(FT_Get_CID_Is_Internally_CID_Keyed(*mFontInfo,&isCID) != 0)
isCID = false;
if(isCID && FT_Get_CID_Registry_Ordering_Supplement(*mFontInfo,®istry,&ordering,&supplement) != 0)
isCID = false;
if(!isCID)
{
registry = scAdobe;
ordering = scIdentity;
supplement = 0;
}
mObjectsContext->StartNewIndirectObject(inCIDSystemInfoObjectID);
DictionaryContext* systemInfoContext = mObjectsContext->StartDictionary();
// Registry
systemInfoContext->WriteKey(scRegistry);
systemInfoContext->WriteLiteralStringValue(registry);
// Ordering
systemInfoContext->WriteKey(scOrdering);
systemInfoContext->WriteLiteralStringValue(ordering);
// Supplement
systemInfoContext->WriteKey(scSupplement);
systemInfoContext->WriteIntegerValue(supplement);
mObjectsContext->EndDictionary(systemInfoContext);
mObjectsContext->EndIndirectObject();
}
示例13: WriteCommentsTree
EStatusCodeAndObjectIDType PDFCommentWriter::WriteCommentsTree(PDFComment* inComment)
{
EStatusCodeAndObjectIDType result;
ObjectIDType repliedTo = 0;
// if already written, return
PDFCommentToObjectIDTypeMap::iterator it = mCommentsForNextPage.find(inComment);
if(it != mCommentsForNextPage.end())
{
result.first = eSuccess;
result.second = it->second;
return result;
}
// if has a referred comment, write it first
if(inComment->ReplyTo != NULL)
{
EStatusCodeAndObjectIDType repliedtoResult = WriteCommentsTree(inComment->ReplyTo);
if(repliedtoResult.first != eSuccess)
{
result.first = eFailure;
result.second = 0;
return result;
}
else
repliedTo = repliedtoResult.second;
}
do
{
ObjectsContext& objectsContext = mPDFWriter->GetObjectsContext();
// Start new InDirect object for annotation dictionary
result.second = objectsContext.StartNewIndirectObject();
DictionaryContext* dictionaryContext = objectsContext.StartDictionary();
// Type
dictionaryContext->WriteKey("Type");
dictionaryContext->WriteNameValue("Annot");
// SubType
dictionaryContext->WriteKey("Subtype");
dictionaryContext->WriteNameValue("Text");
// Rect
dictionaryContext->WriteKey("Rect");
dictionaryContext->WriteRectangleValue(
PDFRectangle(inComment->FrameBoundings[0],
inComment->FrameBoundings[1],
inComment->FrameBoundings[2],
inComment->FrameBoundings[3]));
// Contents
dictionaryContext->WriteKey("Contents");
dictionaryContext->WriteLiteralStringValue(PDFTextString(inComment->Text).ToString());
// C (color)
dictionaryContext->WriteKey("C");
objectsContext.StartArray();
if(inComment->Color.UseCMYK)
{
objectsContext.WriteDouble((double)inComment->Color.CMYKComponents[0]/255);
objectsContext.WriteDouble((double)inComment->Color.CMYKComponents[1]/255);
objectsContext.WriteDouble((double)inComment->Color.CMYKComponents[2]/255);
objectsContext.WriteDouble((double)inComment->Color.CMYKComponents[3]/255);
}
else
{
objectsContext.WriteDouble((double)inComment->Color.RGBComponents[0]/255);
objectsContext.WriteDouble((double)inComment->Color.RGBComponents[1]/255);
objectsContext.WriteDouble((double)inComment->Color.RGBComponents[2]/255);
}
objectsContext.EndArray(eTokenSeparatorEndLine);
// T
dictionaryContext->WriteKey("T");
dictionaryContext->WriteLiteralStringValue(PDFTextString(inComment->CommentatorName).ToString());
// M
dictionaryContext->WriteKey("M");
dictionaryContext->WriteLiteralStringValue(inComment->Time.ToString());
if(inComment->ReplyTo != NULL)
{
// IRT
dictionaryContext->WriteKey("IRT");
dictionaryContext->WriteObjectReferenceValue(repliedTo);
// RT (we're doing always "reply" at this point, being a reply to comment
dictionaryContext->WriteKey("RT");
dictionaryContext->WriteNameValue("R");
}
// Open (we'll have them all closed to begin with)
dictionaryContext->WriteKey("Open");
dictionaryContext->WriteBooleanValue(false);
//.........这里部分代码省略.........
示例14: imageStream
EStatusCode DCTDecodeFilterTest::ModifyImageObject(PDFWriter* inWriter,ObjectIDType inImageObject)
{
EStatusCode status = eSuccess;
PDFDocumentCopyingContext* modifiedFileContext = inWriter->CreatePDFCopyingContextForModifiedFile();
do
{
// get image source dictionary
PDFObjectCastPtr<PDFStreamInput> imageStream(inWriter->GetModifiedFileParser().ParseNewObject(inImageObject));
RefCountPtr<PDFDictionary> imageDictionary(imageStream->QueryStreamDictionary());
// strt object for modified image
inWriter->GetObjectsContext().StartModifiedIndirectObject(inImageObject);
DictionaryContext* newImageDictionary = inWriter->GetObjectsContext().StartDictionary();
MapIterator<PDFNameToPDFObjectMap> it = imageDictionary->GetIterator();
// copy all but "Filter" and "Length"
ObjectIDTypeList indirectObjects;
while (it.MoveNext())
{
if(it.GetKey()->GetValue() == "Filter" || it.GetKey()->GetValue() == "Length")
continue;
newImageDictionary->WriteKey(it.GetKey()->GetValue());
EStatusCodeAndObjectIDTypeList result = modifiedFileContext->CopyDirectObjectWithDeepCopy(it.GetValue());
if(result.first != eSuccess)
{
status = result.first;
break;
}
indirectObjects.insert(indirectObjects.end(),result.second.begin(),result.second.end());
}
if(status != eSuccess)
break;
// start image stream for this dictionary (make sure it's unfiltered)
PDFStream* newImageStream = inWriter->GetObjectsContext().StartUnfilteredPDFStream(newImageDictionary);
// copy source stream through read filter
IByteReader* sourceImage = modifiedFileContext->GetSourceDocumentParser()->StartReadingFromStream(imageStream.GetPtr());
if(!sourceImage)
{
cout<<"failed to read DCT stream\n";
status = eFailure;
break;
}
OutputStreamTraits traits(newImageStream->GetWriteStream());
status = traits.CopyToOutputStream(sourceImage);
// finalize stream
inWriter->GetObjectsContext().EndPDFStream(newImageStream);
delete newImageStream;
// late check for status so stream is deleted
if(status != eSuccess)
break;
// copy remaining indirect objects from image stream dictionary
status = modifiedFileContext->CopyNewObjectsForDirectObject(indirectObjects);
}
while (false);
delete modifiedFileContext;
return status;
}
示例15: WriteState
EStatusCode ObjectsContext::WriteState(ObjectsContext* inStateWriter,ObjectIDType inObjectID)
{
EStatusCode status;
do
{
inStateWriter->StartNewIndirectObject(inObjectID);
ObjectIDType referencesRegistryObjectID = inStateWriter->GetInDirectObjectsRegistry().AllocateNewObjectID();
ObjectIDType subsetFontsNameSequanceID = inStateWriter->GetInDirectObjectsRegistry().AllocateNewObjectID();
DictionaryContext* objectsContextDict = inStateWriter->StartDictionary();
objectsContextDict->WriteKey("Type");
objectsContextDict->WriteNameValue("ObjectsContext");
objectsContextDict->WriteKey("mReferencesRegistry");
objectsContextDict->WriteNewObjectReferenceValue(referencesRegistryObjectID);
objectsContextDict->WriteKey("mCompressStreams");
objectsContextDict->WriteBooleanValue(mCompressStreams);
objectsContextDict->WriteKey("mSubsetFontsNamesSequance");
objectsContextDict->WriteNewObjectReferenceValue(subsetFontsNameSequanceID);
inStateWriter->EndDictionary(objectsContextDict);
inStateWriter->EndIndirectObject();
status = mReferencesRegistry.WriteState(inStateWriter,referencesRegistryObjectID);
if(status != PDFHummus::eSuccess)
break;
// write subset fonts names sequance
inStateWriter->StartNewIndirectObject(subsetFontsNameSequanceID);
DictionaryContext* sequanceDict = inStateWriter->StartDictionary();
sequanceDict->WriteKey("Type");
sequanceDict->WriteNameValue("UppercaseSequance");
sequanceDict->WriteKey("mSequanceString");
sequanceDict->WriteLiteralStringValue(mSubsetFontsNamesSequance.ToString());
inStateWriter->EndDictionary(sequanceDict);
inStateWriter->EndIndirectObject();
}while(false);
return status;
}