Milán Major

netscape-revival

1 branch
Code

lib/mac/VText/Core/Engine/VCharScanner.h

//	===========================================================================
//	VCharScanner
//
//	Copyright 1996 ViviStar Consulting.
//	===========================================================================

#pragma once

#include	<LTextEngine.h>
#include	<UMemoryMgr.h>

class VCharScanner
{
public:
						VCharScanner(const LTextEngine &inTextEngine);
						VCharScanner(
							const LTextEngine 	&inTextEngine,
							const TextRangeT	&inQueryRange,
							const TextRangeT	&inStartRange);

	void				Reset(const TextRangeT	&inStartRange);
	void				Reset(
							const TextRangeT	&inQueryRange,
							const TextRangeT	&inStartRange);

	Boolean				Finished(void) const		{return mFinished;}

	void				Next();
	void				Prev();
	void				FindNext(Int16 inChar, ScriptCode inScript = smAllScripts);
	void				FindPrev(Int16 inChar, ScriptCode inScript = smAllScripts);
	
	const TextRangeT &	PresentRange(void) const	{return mRange;}
	Int16				PresentChar(void) const;
	ScriptCode			PresentScript(void) const;

protected:
	const LTextEngine	*mTextEngine;
	StHandleLocker		mTextLocker;
	const Ptr			mText;
	TextRangeT			mQueryRange;
	TextRangeT			mStyleRange;
	LStyleSet			*mStyle;

	TextRangeT			mRange;
	Boolean				mFinished;
};