// FRMVIS.H
//
// Copyright (c) 1997-1999 Symbian Ltd. All rights reserved.
//

#if !defined(__FRMVIS_H__)
#define __FRMVIS_H__
#if !defined(__E32STD_H__)
#include <e32std.h>
#endif
#if !defined(__E32BASE_H__)
#include <e32base.h>
#endif

class RReadStream;
class RWriteStream;

//#define TIMING_CODE yes


class TNonPrintingCharVisibility
	{
private:
	enum TShowFormatChars
		{
		EFNothingVisible=0x000,
		EFTabsVisible=0x001,
		EFSpacesVisible=0x002,
		EFParagraphDelimitersVisible=0x004,
		EFLineBreaksVisible=0x008,
		EFPotentialHyphensVisible=0x010,
		EFNonBreakingHyphensVisible=0x020, // Special symbol used instead of normal hyphen	  // Might not need
		EFNonBreakingSpacesVisible=0x040,	 // Might not need
		EFPageBreaksVisible=0x080,
		EFEverythingVisible=0xffffffff
		};
public:
	IMPORT_C TNonPrintingCharVisibility();
	IMPORT_C TNonPrintingCharVisibility(const TNonPrintingCharVisibility& aVisibility);
	IMPORT_C TNonPrintingCharVisibility& operator=(const TNonPrintingCharVisibility& aVisibility);
	IMPORT_C void ExternalizeL(RWriteStream& aStream)const;
	IMPORT_C void InternalizeL(RReadStream& aStream);
	IMPORT_C void SetAllVisible();
	IMPORT_C void SetNoneVisible();
	IMPORT_C void SetTabsVisible(TBool aVisible);
	IMPORT_C void SetSpacesVisible(TBool aVisible);
	IMPORT_C void SetParagraphDelimitersVisible(TBool aVisible);
	IMPORT_C void SetLineBreaksVisible(TBool aVisible);
	IMPORT_C void SetPotentialHyphensVisible(TBool aVisible);
	IMPORT_C void SetNonBreakingHyphensVisible(TBool aVisible);
	IMPORT_C void SetNonBreakingSpacesVisible(TBool aVisible);
	IMPORT_C void SetPageBreaksVisible(TBool aVisible);
	inline TBool AllVisible()const{return iVisible==EFEverythingVisible;};
	inline TBool NoneVisible()const{return iVisible==EFNothingVisible;};
	inline TBool TabsVisible()const{return iVisible&EFTabsVisible;};
	inline TBool SpacesVisible()const{return iVisible&EFSpacesVisible;};
	inline TBool ParagraphDelimitersVisible()const{return iVisible&EFParagraphDelimitersVisible;};
	inline TBool LineBreaksVisible()const{return iVisible&EFLineBreaksVisible;};
	inline TBool PotentialHyphensVisible()const{return iVisible&EFPotentialHyphensVisible;};
	inline TBool NonBreakingHyphensVisible()const{return iVisible&EFNonBreakingHyphensVisible;};
	inline TBool NonBreakingSpacesVisible()const{return iVisible&EFNonBreakingSpacesVisible;};
	inline TBool PageBreaksVisible()const{return iVisible&EFPageBreaksVisible;};
private:
	TUint32 iVisible;
	};

#endif


