// EIKTXTUT.H
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//

#if !defined(__EIKTXTUT_H__)
#define __EIKTXTUT_H__

#if !defined(__E32STD_H__)
#include <e32std.h>
#endif

#if !defined(__EIKDEF_HRH__)
#include <eikdef.hrh>
#endif

const TUint KTextUtilClipEndChar=KEllipsis;
//const TUint KTextUtilClipEndChar='…';
const TUint KColumnListSeparator='\t';

class CFont;

class TextUtils
	{
public:
	IMPORT_C static void ClipToFit(TDes& aBuffer,const CFont& aFont,TInt aMaxWidthInPixels,TChar aAlternativeEnd=KTextUtilClipEndChar);
	IMPORT_C static TInt ColumnText(TPtrC& aColumnText,TInt aColumn,const TDesC* aSourceText,TChar aColumnSeparator=KColumnListSeparator);
	IMPORT_C static void TruncateToNumChars(TDes& aBuffer, TInt numChars);
	};

//

class TEikFindWidthOfWidestTextItem
	{
protected:
	inline TEikFindWidthOfWidestTextItem() {}
public:
	IMPORT_C TInt MaximumWidthInPixels(const CFont& aFont) const;
private:
	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const=0;
	virtual void GetTextItem(TDes& aText, TInt aIndex) const=0;
	};

//

class TEikFindWidthOfWidestDigit : public TEikFindWidthOfWidestTextItem
	{
public:
	IMPORT_C TEikFindWidthOfWidestDigit();
private:
	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
	};

//

class TEikFindWidthOfWidestAmPmName : public TEikFindWidthOfWidestTextItem
	{
public:
	IMPORT_C TEikFindWidthOfWidestAmPmName();
private:
	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
	};

//

class TEikFindWidthOfWidestAbbreviatedDayName : public TEikFindWidthOfWidestTextItem
	{
public:
	IMPORT_C TEikFindWidthOfWidestAbbreviatedDayName();
private:
	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
	};

//

class TEikFindWidthOfWidestDayName : public TEikFindWidthOfWidestTextItem
	{
public:
	IMPORT_C TEikFindWidthOfWidestDayName();
private:
	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
	};

//

class TEikFindWidthOfWidestAbbreviatedMonthName : public TEikFindWidthOfWidestTextItem
	{
public:
	IMPORT_C TEikFindWidthOfWidestAbbreviatedMonthName();
private:
	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
	};

//

class TEikFindWidthOfWidestMonthName : public TEikFindWidthOfWidestTextItem
	{
public:
	IMPORT_C TEikFindWidthOfWidestMonthName();
private:
	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
	};

//

class TEikFindWidthOfWidestDateSuffix : public TEikFindWidthOfWidestTextItem
	{
public:
	IMPORT_C TEikFindWidthOfWidestDateSuffix();
private:
	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
	};

//

#endif

