/*************************************************************************/
/*	File : CKSpriteText.h												 */
/*	Author :  Romain Sididris											 */	
/*																		 */	
/*	Virtools SDK 															 */	 
/*	Copyright (c) Virtools 2000, All Rights Reserved.						 */	
/*************************************************************************/
#if !defined(CKSPRITETEXT_H) || defined(CK_3DIMPLEMENTATION)
#ifndef CK_3DIMPLEMENTATION

#define CKSPRITETEXT_H "$Id:$"

#include "CKSprite.h"


#undef CK_PURE

#define CK_PURE = 0

/*************************************************
{filename:CKSpriteText}
Name: CKSpriteText

Summary: Text Only sprites.

Remarks:
	+ A SpriteText is a special kind of sprite that is used to draw text on screen.
	Methods provides acces to font,color,background color and transparency settings as 
	well as text alignment in the sprite.

	+ The size of image used to draw the text is given by CKSprite::Create.
	
	+ This class is provided more for debugging than for a real usage since changing
	the text every frame is a slow operation. Much faster text drawing can be achieved 
	if the text changes often, using bitmap fonts and textures (See BitmapTextDisplay behavior for example)



See also: CKSprite
*************************************************/
class CKSpriteText : public CKSprite {
public:
#endif
//-------------------------------------------
// Text

/************************************************
Summary: Sets the text drawn in the sprite.

Arguments:
	text : A CKSTRING containing the new text.
See also: GetText
************************************************/
virtual void SetText(CKSTRING text) CK_PURE;

/************************************************
Summary: Gets the text drawn in the sprite.

Return Value: A CKSTRING containing the current text.
See also: SetText
************************************************/
virtual CKSTRING	GetText() CK_PURE;

//-------------------------------------------
// Appearence

/************************************************
Summary: Sets the text color.

Arguments: 
	col: CKDWORD containing the new color ( 32 bit ARGB )
See also: GetTextColor,GetBackgroundColor,SetBackgroundColor
************************************************/
virtual void		SetTextColor(CKDWORD col) CK_PURE;

/************************************************
Summary: Gets the text color.

Return Value: Current text color.
See also: SetTextColor,GetBackgroundColor,SetBackgroundColor
************************************************/
virtual CKDWORD	GetTextColor() CK_PURE;

/************************************************
Summary: Sets the background color in the sprite.

Arguments: 
	col: CKDWORD containing the new color ( 32 bit ARGB )
See also: SetTextColor,GetTextColor, GetBackgroundColor
************************************************/
virtual void		SetBackgroundColor(CKDWORD col) CK_PURE;

/************************************************
Summary: Gets the background color.

Return Value: Current background color.
See also: SetTextColor,GetTextColor, SetBackgroundColor
************************************************/
virtual CKDWORD	GetBackgroundTextColor() CK_PURE;

/************************************************
Summary: Sets the font used to draw the text in the sprite.

Arguments: 
	FontName: Name of the font 
	FontSize: Size of the font
	Weight:	  Weight ot the font
	italic :  TRUE to create an italic font
	underline: TRUE to create an underlined font
Remarks:
	+ This function use the Win32 API CreateFont function to create the font that will be used to draw text in the sprite.
	+ See CreateFont in the Win32 API documentation for more details.
See also: RCKSpriteText
************************************************/
virtual void	SetFont(CKSTRING FontName,int FontSize=12,int Weight=400,CKBOOL italic=FALSE,CKBOOL underline=FALSE) CK_PURE;

/************************************************
Summary: Sets the drawing alignment for the sprite

Arguments:
	align : A combination of CKSPRITETEXT_ALIGNMENT flags specifying how to align the text inside the sprite.
See also: CKSPRITETEXT_ALIGNMENT, GetAlign
************************************************/
virtual void		SetAlign(CKSPRITETEXT_ALIGNMENT align) CK_PURE;

/************************************************
Summary: Gets the drawing alignment of the sprite

Return Value: Current alignment options.
See also: CKSPRITETEXT_ALIGNMENT, SetAlign
************************************************/
virtual CKSPRITETEXT_ALIGNMENT GetAlign() CK_PURE;


/************************************************
Summary: Sets the text drawn in the sprite.

Arguments:
	text : A CKSTRING containing the new text.
Remarks: Exists in U version for unicode strings.
See also: GetText
************************************************/
virtual void SetTextU(CKUSTRING text) CK_PURE;

/************************************************
Summary: Gets the text drawn in the sprite.

Return Value: A CKSTRING containing the current text.
Remarks: Exists in U version for unicode strings.

See also: SetText
************************************************/
virtual CKUSTRING	GetTextU() CK_PURE;

/*************************************************
Summary: Dynamic cast operator. 
Arguments:
	iO: A pointer to a CKObject to cast.
Return Value:
	iO casted to the appropriate class or NULL if iO is not from the required class .
Example:
	  CKObject* Object;
	  CKSpriteText* anim = CKSpriteText::Cast(Object);
Remarks:

*************************************************/
static CKSpriteText* Cast(CKObject* iO) 
{
	return CKIsChildClassOf(iO,CKCID_SPRITETEXT)?(CKSpriteText*)iO:NULL;
}

#ifndef CK_3DIMPLEMENTATION
};

#endif
#endif

