kernel/eka/include/e32cons.h
changeset 0 a41df078684a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/include/e32cons.h	Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,243 @@
+// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// e32\include\e32cons.h
+// 
+//
+
+#ifndef __E32CONS_H__
+#define __E32CONS_H__
+#include <e32base.h>
+#include <e32keys.h>
+//
+
+/**
+@publishedAll
+@released
+
+Defines a default console width that can be used when creating a console.
+
+@see CConsoleBase::Create()
+*/
+const TInt KDefaultConsWidth=78;
+
+/**
+@publishedAll
+@released
+
+Defines a default console height that can be used when creating a console.
+
+@see CConsoleBase::Create()
+*/
+const TInt KDefaultConsHeight=18;
+
+/**
+@publishedAll
+@released
+
+Implies a full size screen console when passed as the width and height
+values when creating a console.
+
+@see CConsoleBase::Create()
+*/
+const TInt KConsFullScreen=-1;
+
+
+/**
+@publishedAll
+@released
+
+Defines a set of text attributes used for consoles that support colour.
+
+@see CColorConsoleBase::SetTextAttribute().
+*/
+enum TTextAttribute
+	{
+	ETextAttributeNormal,  /**< Defines the normal text attribute.   */
+	ETextAttributeBold,    /**< Defines the bold text attribute.     */
+	ETextAttributeInverse, /**< Defines the inverse text attribute.  */
+	ETextAttributeHighlight/**< Defines the highlight text attribute.*/
+	};
+
+
+/**
+@publishedAll
+@released
+
+A base class that defines a console interface.
+*/
+class CConsoleBase : public CBase
+	{
+public:
+	IMPORT_C virtual ~CConsoleBase();
+	IMPORT_C TKeyCode Getch();
+	IMPORT_C void Printf(TRefByValue<const TDesC> aFmt,...);
+	IMPORT_C void SetPos(TInt aX);
+	IMPORT_C void SetPos(TInt aX,TInt aY);
+	IMPORT_C TInt WhereX() const;
+	IMPORT_C TInt WhereY() const;
+// Pure virtual
+
+
+    /**
+    Creates a new console window.
+    
+    @param aTitle The title text for the console.
+                  This should not be longer than 256 characters.
+    @param aSize  The size of the console window.
+    
+    @return KErrNone, if successful; otherwise one of the other
+                      system wide error codes.
+    */
+	virtual TInt Create(const TDesC &aTitle,TSize aSize) =0;
+
+	
+    /**
+    Gets a keystroke from the console window, asynchronously.
+    
+    @param aStatus The request status object.
+    */
+	virtual void Read(TRequestStatus &aStatus) =0;
+	
+	
+	/**
+	Cancels any outstanding request to get a keystroke from the console window.
+	*/
+	virtual void ReadCancel() =0;
+	
+	
+	/**
+	Writes the content of the specified descriptor to the console window.
+	
+	@param aDes Descriptor containing the characters to be written to
+	            the console window.
+	*/
+	virtual void Write(const TDesC &aDes) =0;
+	
+	
+	/**
+	Gets the current cursor position relative to the console window.
+	
+	@return  The current cursor position.
+	*/
+	virtual TPoint CursorPos() const =0;
+	
+	
+	/**
+    Puts the cursor at the absolute position in the window.
+    
+    @param aPoint The cursor position.
+	*/
+	virtual void SetCursorPosAbs(const TPoint &aPoint) =0;
+	
+	
+	/**
+	Puts the cursor at the specified position relative
+	to the current cursor position.
+	
+	@param aPoint The cursor position.
+	*/
+	virtual void SetCursorPosRel(const TPoint &aPoint) =0;
+	
+	
+	/**
+	Sets the percentage height of the cursor.
+	
+    @param aPercentage The percentage height. This is a value from 0 to 100.
+                       If 0 is specified, then no cursor is displayed.
+	*/
+	virtual void SetCursorHeight(TInt aPercentage) =0;
+
+	
+	/**
+	Sets a new console title.
+	
+	@param aTitle The title text for the console.
+                  This should not be longer than 256 characters.
+	*/
+	virtual void SetTitle(const TDesC &aTitle) =0;
+
+	
+	/**
+	Clears the console.
+	*/
+	virtual void ClearScreen() =0;
+	
+	
+	/**
+	Clears the console from the current cursor position to
+	the end of the line.
+	*/
+	virtual void ClearToEndOfLine() =0;
+	
+	
+	/**
+	Gets the size of the console.
+	*/
+	virtual TSize ScreenSize() const =0;
+	
+	
+	/**
+	Gets the current key code value.
+	
+	@return The key code value.
+	*/
+	virtual TKeyCode KeyCode() const =0;
+	
+	/**
+	Gets the current key modifiers.
+	
+	@return The key modifiers.
+	*/
+	virtual TUint KeyModifiers() const =0;
+protected:
+	IMPORT_C CConsoleBase();
+protected:
+	IMPORT_C virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1);
+	};
+
+
+class CProxyConsole;
+
+/**
+@publishedAll
+@released
+
+Adds colour support to the basic console interface.
+*/
+class CColorConsoleBase : public CConsoleBase
+	{
+public:
+
+    /**
+    Sets the text attribute as defined by TTextAttribute.
+    
+    @param anAttribute The text attribute to be set.
+    */
+	virtual void SetTextAttribute(TTextAttribute /*anAttribute*/); 
+protected:
+	IMPORT_C virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1);
+
+	friend class CProxyConsole;
+	};
+//
+
+/**
+@publishedAll
+@released
+*/
+extern "C" {
+IMPORT_C TAny *NewConsole();
+}
+#endif
+