Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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;
}