EStatusCode Type1ToType2Converter::CallOtherSubr(const LongList& inOperandList,LongList& outPostScriptOperandStack) { // should get here onther for 0 othersubr, to mark flex segment end. implement it...and also insert a node // for flex LongList::const_reverse_iterator it = inOperandList.rbegin(); long otherSubrIndex = *it; // this should be 0 ++it; long argumentsCount = *it; ++it; // the next argument should be the FD...place it in the parameters collection long flexDepth = *it; mFlexParameters.push_back(flexDepth); // take care of the postscript operand stack for(long i=0;i<argumentsCount;++i) { outPostScriptOperandStack.push_back(*it); ++it; } // now finalize flex, by placing a type 2 flex command EStatusCode status = RecordOperatorWithParameters(0x0c23,mFlexParameters); // cleanup flex mode mFlexParameters.clear(); mInFlexCollectionMode = false; return status; }
EStatusCode Type1Input::Type1Seac(const LongList& inOperandList) { LongList::const_reverse_iterator it = inOperandList.rbegin(); mCurrentDependencies->mCharCodes.insert((Byte)*it); ++it; mCurrentDependencies->mCharCodes.insert((Byte)*it); return PDFHummus::eSuccess; }
EStatusCode Type1ToType2Converter::Type1Vstem(const LongList& inOperandList) { LongList::const_reverse_iterator it = inOperandList.rbegin(); long extent = *it; ++it; long origin = *it; AddVStem(origin,extent); if(mFirstPathConstructionEncountered) mHintAdditionEncountered = true; return RecordOperatorWithParameters(3,inOperandList); }
EStatusCode Type1ToType2Converter::Type1Hsbw(const LongList& inOperandList) { if(inOperandList.size() < 2) return PDFHummus::eFailure; LongList::const_reverse_iterator it = inOperandList.rbegin(); mWidth[1] = 0; mWidth[0] = *it; ++it; mSideBearing[1] = 0; mSideBearing[0] = *it; return PDFHummus::eSuccess; }