--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/classicui_pub/misc_controls_api/inc/EIKCONSO.H Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,580 @@
+/*
+* Copyright (c) 1997-1999 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "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:
+*
+*/
+
+
+#if !defined(__EIKCONSO_H__)
+#define __EIKCONSO_H__
+
+#if !defined(__E32CONS_H__)
+#include <e32cons.h>
+#endif
+
+#if !defined(__EIKSBOBS_H__)
+#include <eiksbobs.h>
+#endif
+
+#if !defined(__EIKSBFRM_H__)
+#include <eiksbfrm.h>
+#endif
+
+#include <AknControl.h>
+
+#define ATT_DOUBLEWIDTH 0x60
+#define ATT_DOUBLETOP 0x20
+#define ATT_DOUBLEBOTTOM 0x40
+////////////////////////////////////////////
+#define ATT_ITALIC 0x08
+#define ATT_INVERSE 0x04
+#define ATT_UNDERLINE 0x02
+#define ATT_BOLD 0x01
+////////////////////////////////////////////
+#define ATT_COLORMASK 0x80 // &x!=0 : color
+#define ATT_DOUBLEMASK 0x60 // &x : only the bits relevant for doublewidth/doubleheight
+#define ATT_RIGHTMASK 0x10 // |x to set RIGHT indicator
+#define ATT_IGNORE_RIGHTLEFT 0xEF // &x to clear the RIGHT/LEFT flag
+#define ATT_IGNORE_INVERSE 0xFB // &x to clear the INVERSE flag
+////////////////////////////////////////////
+#define ATT_MAXVALUE 0xFF // all flags set (maximum value of attribute byte)
+#define ATT_NORMAL 0 // the default character attribute
+
+enum TEikConsWinUnits
+ {
+ EEikConsWinInPixels,
+ EEikConsWinInChars
+ };
+
+
+ /** CEikConsoleScreen()
+
+ @param aBuffer String that needs to be clipped. will be modified by this call
+ @param aFont Font used in the code
+ @param aMaxWidthInPixels Maximum length of text that will not be clipped.
+ @param aDir Where is the text clipped from. EDoNotClip, EClipFromEnd, EClipFromBeginning.
+ @param aClipWidth The length of the text after clipping. KDefaultClipWidth will make it use aMaxWidthInPixels.
+ @param aClipString The representation of three dots. (not really used anywhere - use the default value always or "")
+
+ returns true if the text was clipped and 3 dots were added.
+ */
+class CEikConsoleControl;
+class CEikConsoleScreen : public CConsoleBase
+ {
+public:
+ enum TEikConsoleFlags
+ {
+ EUseBackedUpWindow =0x1,
+ ENoInitialCursor =0x2
+ };
+public:
+ /**
+ * CEikConsoleScreen() constructor
+ */
+ IMPORT_C CEikConsoleScreen();
+ /**
+ * CEikConsoleScreen() destructor
+ */
+ IMPORT_C ~CEikConsoleScreen();
+
+ /** Create() Creates a console and sets title and size
+ *
+ * @param aTitle Title of the console
+ * @param aSize Size of the console in pixels
+ *
+ * returns error code
+ */
+ IMPORT_C TInt Create(const TDesC& aTitle,TSize aSize);
+ /** Read()
+ * Not implemented
+ */
+ IMPORT_C void Read(TRequestStatus& aStatus);
+ /** ReadCancel()
+ * Not implemented
+ */
+ IMPORT_C void ReadCancel();
+ /** KeyCode()
+ * Not implemented
+ */
+ IMPORT_C TKeyCode KeyCode() const;
+ /** KeyModifiers()
+ * Not implemented
+ */
+ IMPORT_C TUint KeyModifiers() const;
+ /** ConstructL() Constructs a console and sets title
+ *
+ * @param aTitle Title of the console
+ * @param aFlags Flags, for example EUseBackedUpWindow or ENoInitialCursor
+ */
+ IMPORT_C void ConstructL(const TDesC &aTitle,TInt aFlags);// use full screen
+ /** ConstructL() Constructs a console and sets title and size
+ *
+ * @param aTitle Title of the console
+ * @param aSize Size of the console in pixels
+ * @param aFlags Flags, for example EUseBackedUpWindow or ENoInitialCursor
+ * @param aUnit Unit of the console
+ */
+ IMPORT_C void ConstructL(const TDesC &aTitle,const TSize &aSize,TInt aFlags,TEikConsWinUnits aUnit=EEikConsWinInChars); // place the screen at TPoint(0,0)
+ /** ConstructL() Constructs a console and sets title and position and size
+ *
+ * @param aTitle Title of the console
+ * @param aTopLeft TopLeft corner of the console window
+ * @param aSize Size of the console in pixels
+ * @param aFlags Flags, for example EUseBackedUpWindow or ENoInitialCursor
+ * @param aUnit Unit of the console
+ */
+ IMPORT_C void ConstructL(const TDesC &aTitle,TPoint aTopLeft,const TSize &aSize,TInt aFlags,TEikConsWinUnits aUnit=EEikConsWinInChars);
+ /** SetConsWin() Sets console window
+ *
+ * @param aConsWin Console control
+ */
+ IMPORT_C void SetConsWin(CEikConsoleControl *aConsWin); // use if you don't want WHOLE screen
+ /** ConsoleControl() fetching console control
+ *
+ * Returns console control
+ */
+ inline CEikConsoleControl* ConsoleControl() const {return iConsoleControl;};
+
+ /** SetTitle() Set title of the console
+ *
+ * @param aTitle Title of the console
+ */
+ IMPORT_C void SetTitle(const TDesC &aTitle);
+ /** SetTitle() Set title of the console
+ *
+ * @param aTitle Title of the console
+ */
+ IMPORT_C void SetTitleL(const TDesC &aTitle);
+ /** Title() Gets title of the console
+ *
+ * returns Title of the console
+ */
+ inline HBufC *Title() const {return iConsoleTitle;};
+
+ /** ScreenSize() Gets size of the screen
+ *
+ * returns Size of the screen in pixels
+ */
+ IMPORT_C TSize ScreenSize() const;
+ /** FlushChars() Updates the character buffers
+ */
+ IMPORT_C void FlushChars(); //new
+ /** CursorPos() Cursor position getter
+ * returns cursor position
+ */
+ IMPORT_C TPoint CursorPos() const;
+ /** SetCursorPosAbs Moving cursor to absolute position
+ *
+ * @param aPoint Position in absolute coordinates
+ */
+ IMPORT_C void SetCursorPosAbs(const TPoint &aPoint);
+ /** SetCursorPosRel Moving cursor to relative position
+ *
+ * @param aPoint Position in relative coordinates
+ */
+ IMPORT_C void SetCursorPosRel(const TPoint &aPoint);
+ /** SetCursorHeight changes cursor height
+ *
+ * @param aPercentage Cursor height relative to character height
+ */
+ IMPORT_C void SetCursorHeight(TInt aPercentage);
+ /** Write() Writes text to the console
+ *
+ * @param aDes Text to be written to the console
+ */
+ IMPORT_C void Write(const TDesC &aDes);
+ /** ClearScreen() Clears the console screen
+ *
+ */
+ IMPORT_C void ClearScreen();
+ /** ClearToEndOfLine() Clears from cursor position to end of the line
+ *
+ */
+ IMPORT_C void ClearToEndOfLine();
+ /** ClearChars() Clears characters within rectangle matching attributes
+ *
+ * @param aRect Rectangle in pixels
+ * @param aCharacterAttributes Matching character attributes
+ */
+ IMPORT_C void ClearChars(const TRect &aRect,TUint aCharacterAttributes);
+ /** HideCursor() Hides cursor
+ *
+ * @return nonzero if cursor was not visible
+ */
+ IMPORT_C TInt HideCursor(); // returns nonzero if cursor wasn't visible
+ /** DrawCursor() Draws cursor
+ */
+ IMPORT_C void DrawCursor();
+ /** DrawInSight Moves topleft corner
+ *
+ * @param aPosition New position for insight
+ */
+ IMPORT_C void DrawInSight(TPoint aPosition);
+ /** DrawCursorInSight() Draws cursor and insight
+ */
+ IMPORT_C void DrawCursorInSight();
+
+ /** Move cursor up
+ * @param aCount Number of steps to move
+ */
+ IMPORT_C void Up(TUint aCount=1);
+ /** Move cursor down
+ * @param aCount Number of steps to move
+ */
+ IMPORT_C void Down(TUint aCount=1);
+ /** Move cursor right
+ * @param aCount Number of steps to move
+ */
+ IMPORT_C void Right(TUint aCount=1);
+ /** Move cursor left
+ * @param aCount Number of steps to move
+ */
+ IMPORT_C void Left(TUint aCount=1);
+ /** Insert a CR
+ */
+ IMPORT_C void Cr();
+ /** Insert a linefeed
+ */
+ IMPORT_C void Lf();
+ /** Scroll characters
+ * @param anArea Area to scroll
+ * @param aVector How much to scroll
+ */
+ IMPORT_C void ScrollChars(const TRect &anArea,const TPoint &aVector);
+
+ /** Redraw a rectangle
+ * @param aRect Rectangle to redraw
+ */
+ IMPORT_C void Redraw(const TRect &aRect); // called by CEikConsoleControl
+ /** Moves topleft
+ * @param aVector new position of topleft
+ */
+ IMPORT_C void MoveTopLeft(TPoint aVector); // called by CEikConsoleControl
+
+ /** Size of the history
+ * @return lines stored for history buffer
+ */
+ inline TUint HistorySize() const {return iNoChrExtra;}; // lines ACTUALLY stored
+ /** Set history buffer size
+ * @param aMaxChrExtra lines allocated for history
+ * @param aMaxAttExtra attributed lines allocated for history
+ */
+ IMPORT_C void SetHistorySizeL(TUint aMaxChrExtra,TUint aMaxAttExtra); // lines of back-scroll history resp. lines of ATTRIBUTED backscroll history (aMaxAttExtra<=aMaxChrExtra)
+
+ /** Att() Attributes
+ * @returns attributes
+ */
+ inline TUint Att() const {return iAtt;};
+
+ /** Set attributes
+ * @param aCharacterAttributes Attributes for characters
+ */
+ IMPORT_C void SetAtt(TUint aCharacterAttributes);
+ /** Set attributes
+ * @param aForegroundGray16 Grey16 attributes for foreground
+ * @param aBackgroundGray16 Grey16 attribuets for background
+ */
+ IMPORT_C void SetAtt(TUint aForegroundGray16,TUint aBackgroundGray16);
+
+ /** SetFontL() Sets the font for console
+ * @param aFontDesc font specification
+ */
+ IMPORT_C void SetFontL(const TFontSpec &aFontDesc);
+ /** Font() Gets the used font
+ * @returns font specification
+ */
+ IMPORT_C const TFontSpec& Font() const;
+
+ /** SetSelection() Sets the selection position
+ * @param aRange range of the selection
+ */
+ IMPORT_C void SetSelection(const TRect &aRange);
+ /** SelectCursor() Sets empty selection starting and ending at cursor position
+ */
+ IMPORT_C void SelectCursor(); // empty selection starting and ending at cursor position
+ /** Selection() Get selection position
+ * @return selection position
+ */
+ IMPORT_C TRect Selection();
+ /** RetrieveL() returns selected text
+ * @param aRange selection
+ * @return text in descriptor
+ */
+ IMPORT_C HBufC *RetrieveL(const TRect &aRange); // returns selection in newly allocated buffer
+
+ /** SetPureCRLF() sets pure flag
+ * @param aFlag flags
+ */
+ IMPORT_C void SetPureCRLF(TUint aFlag);
+ /** SetAllPrintable() sets all printable flag
+ * @param aFlag flags
+ */
+ IMPORT_C void SetAllPrintable(TUint aFlag);
+ /** SetScrollLock() sets scroll lock flag
+ * @param aFlag flags
+ */
+ IMPORT_C void SetScrollLock(TUint aFlag);
+ /** SetKeepCursorInSight() sets cursor in sight flag
+ * @param aFlag flags
+ */
+ IMPORT_C void SetKeepCursorInSight(TUint aFlag);
+ /** SetScrollBarVisibilityL() sets scrollbar visibility
+ * @param aHBarVisibility horizontal scrollbar visibility
+ * @param aVBarVisibility vertical scrollbar visibility
+ */
+ IMPORT_C void SetScrollBarVisibilityL(CEikScrollBarFrame::TScrollBarVisibility aHBarVisibility, CEikScrollBarFrame::TScrollBarVisibility aVBarVisibility);
+ /** UpdateScrollBars() updates scrollbars
+ *
+ */
+ IMPORT_C TBool UpdateScrollBars();
+
+private:
+ // high-level history manipulation
+ void MemScrPut(const TDesC &aString,TPoint aPos,TUint8 aCharacterAttributes);
+ void MemScrClr(const TRect &aRect,TUint8 aCharacterAttributes);
+ void MemScrScrollUp(TUint aLines=1);
+ void MemScrMove(TPoint anOldPt,TPoint aNewPt,TUint aLen);
+ void MemScrScroll(const TRect &aRect,TPoint aVector);
+ // low-level history access
+ TPtr MemChrPtr(TPoint aPos,TUint aLen);
+ TPtr8 MemAttPtr(TPoint aPos,TUint aLen);
+ // console screen-to-visible window conversion
+ TPoint ScrToVis(TPoint aPoint);
+ TRect ScrToVis(const TRect &aRect);
+ // recalculates iVisSize and iVisWin
+ TBool RecalculateSize();
+ // calculate a TopLeft that would put aPosition in-sight
+ TPoint GetAnInSightPosition(TPoint aPosition) const;
+ // draw cursor or draw cursor in sight, depending on iKeepCursorInSight
+ void DrawCursorWhereNeeded();
+ // smart cursor-clipping: clips cursor to within screen, but allows it to be past the last character
+ void ClipCursor();
+ // redraw characters with doublewidth LEFT/RIGHT flag set depending on odd/even columns
+ void RedrawChars(TInt anX,TInt anY,TInt aLength,TUint aCharacterAttributes);
+ // routines needed for selection
+ void InvertOverlap(TPoint aStart,TPoint aEnd,TPoint bStart,TPoint bEnd);
+ void InvertRange(const TRect &aRect);
+
+private:
+ CEikConsoleControl *iConsoleControl;// console window (handles redraw events)
+ TSize iConsoleSize; // size of console in characters (e.g. 80x24)
+ HBufC *iConsoleTitle; // console title
+ TRect iSelection; // current selection
+ TPoint iCursor; // current cursor position
+ TUint iAtt; // current character attribute
+
+ TInt iWriteNow; // if FALSE, Write()-calls can be buffered
+ TBuf<256> iWriteBuffer; // the Write() buffer
+
+ TInt iMaxChrExtra; // max nr of extra lines of characters stored
+ TInt iNoChrExtra; // actual nr of extra lines of characters stored
+ TInt iMaxAttExtra; // max nr of extra lines of character attributes stored
+ TText *iChrBuf; // character history
+ TUint8 *iAttBuf; // attribute history
+
+ TPoint iTopLeft; // coordinates of top left corner of visual display
+ TRect iVisWin; // RECT visible window
+ TSize iVisSize; // SIZE visible window
+
+ // settings
+ TUint iPureCRLF; // FALSE by default. If TRUE, CR and LF are "pure"
+ TUint iAllPrintable; // FALSE by default. If TRUE, even chars 0-31 are printed
+ TUint iScrollLock; // FALSE by default. If TRUE, will not scroll at bottom line
+ TUint iKeepCursorInSight; // TRUE by default. If FALSE, cursor may be offscreen after a Write()
+ TUint iCursorBlinking; // TRUE if cursor should be visible (i.e. user WANTS it to be visible)
+
+ TInt iConsFlags;
+ };
+
+class CEikConsoleControl : public CAknControl, public MEikScrollBarObserver
+ {
+public:
+ // constructors, destructors, initialization
+ /** Constructor
+ */
+ IMPORT_C CEikConsoleControl();
+ /** Destructor
+ */
+ IMPORT_C ~CEikConsoleControl();
+ /* ConstructL()
+ */
+ IMPORT_C void ConstructL(TInt aFlags);
+ /* ConstructL()
+ */
+ IMPORT_C void ConstructL(TPoint aTopLeft,const TSize &aSize,TInt aFlags,TEikConsWinUnits aUnit);
+ /** SetRedrawer
+ * @param aConsole console screen
+ */
+ IMPORT_C void SetRedrawer(CEikConsoleScreen *aConsole);
+
+ // font stuff
+ /** SetFontL() sets the console font
+ * @param aFontSpec font specification
+ * @param aFont font instance
+ */
+ IMPORT_C void SetFontL(const TFontSpec &aFontSpec,const CFbsFont* aFont); // change to font aFontSpec
+ /** Font() gets font specification
+ */
+ inline const TFontSpec& Font() const {return iFontSpec;}; // returns current fontspec
+
+ /** CharSize() gets character size
+ */
+ inline const TSize& CharSize() const {return iCharSize;};
+ /** VisibibleSize() gets visible size
+ *
+ */
+ IMPORT_C TSize VisibleSize() const; // returns maximal visible nr of visible characters
+
+ // cursor stuff
+ /** SetCursorHeight() Sets cursor height
+ * @param aPercentage value 0..100%
+ */
+ IMPORT_C void SetCursorHeight(TUint aPercentage); // set cursor height (0-100%)
+ /** DrawCursor Draws cursor at position
+ * @param aPosition position
+ */
+ IMPORT_C void DrawCursor(TPoint aPosition); // draw cursor at character position
+ /** HideCursor hides cursor
+ */
+ IMPORT_C void HideCursor(); // hide cursor
+
+ // basic graphic functions
+ /** DrawChars() draws characters
+ * @param aString string to be drawn
+ * @param aPosition position of the string
+ * @param aCharacterAttributes attributes of the drawn string
+ */
+ IMPORT_C void DrawChars(const TDesC &aString,const TPoint &aPosition,TUint aCharacterAttributes); // draw aString at character position aPosition using
+ /** ClearChars() clears characters
+ * @param anArea area to be cleared
+ * @param aCharacterAttributes attributes of cleared characters
+ */
+ IMPORT_C void ClearChars(const TRect &anArea,TUint aCharacterAttributes); // clear the character area
+ /** InsertChars() inserts character area
+ * @param anArea area to be inserted
+ */
+ IMPORT_C void InvertChars(const TRect &anArea); // invert the character area
+ /** ScrollChars scrolls character area
+ * @param anArea area to be scrolled
+ * @param aVector direction to be scrolled
+ */
+ IMPORT_C void ScrollChars(const TRect &anArea,const TPoint &aVector); // scroll characters inside anArea by the given vector
+
+ // scrollbar stuff
+ /** sets scrollbar visibility
+ * @param aHBarVisibility horizontal scrollbar visibility
+ * @param aVBarVisibility vertical scrollbar visibility
+ */
+ IMPORT_C TInt SetScrollBarVisibilityL(CEikScrollBarFrame::TScrollBarVisibility aHBarVisibility, CEikScrollBarFrame::TScrollBarVisibility aVBarVisibility);
+ /** Updates scrollbar
+ * @param aDataSize size of the data
+ * @param aVisibleSize how much of the data is visible on the console
+ * @param aPos position of the visible area relative to whole data
+ * @return ETrue if as a result, the visible window has changed
+ */
+ IMPORT_C TBool UpdateScrollbarsL(const TSize &aDataSize,const TSize& aVisibleSize,TPoint aPos);
+ /** Handles scroll event
+ * @param aScrollBar scrollbar to be used for the event
+ * @param aEventType type of the event that happened
+ */
+ IMPORT_C void HandleScrollEventL(CEikScrollBar* aScrollBar,TEikScrollEvent aEventType);
+ /** Updates an area
+ */
+ IMPORT_C void UpdateArea();
+
+public: // from CCoeControl
+ /** GetColorUseListL provides color use list for the control
+ */
+ IMPORT_C virtual void GetColorUseListL(CArrayFix<TCoeColorUse>& aColorUseList) const; // not available before Release 005u
+ /** HandleResourceChange handles several kinds of resource change events
+ */
+ IMPORT_C virtual void HandleResourceChange(TInt aType); // not available before Release 005u
+ /** HandlePointerEventL handles touch pointer events
+ */
+ IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+
+protected: // virtual
+ // window stuff
+ /** Draws the control
+ */
+ IMPORT_C void Draw(const TRect& aRect) const;
+ /** Size has changed
+ */
+ IMPORT_C void SizeChanged();
+ /** Focus has changed
+ */
+ IMPORT_C void FocusChanged(TDrawNow aDrawNow);
+ /** Component controls count
+ */
+ IMPORT_C virtual TInt CountComponentControls() const;
+ /** Component controls
+ */
+ IMPORT_C virtual CCoeControl* ComponentControl(TInt aIndex) const;
+ /** Writes internal state
+ */
+ IMPORT_C void WriteInternalStateL(RWriteStream& aWriteStream) const;
+
+private: // virtual - Reserved from CCoeControl
+ IMPORT_C virtual void Reserved_2();
+
+private:
+ /**
+ * From CAknControl
+ */
+ IMPORT_C void* ExtensionInterface( TUid aInterface );
+
+private:
+ TPoint CharsToPixels(TPoint aPoint);
+ TRect CharsToPixels(const TRect &aRect);
+ TRect PixelsToChars(const TRect &aRect);
+ void ClearPixels(const TRect &anArea,TRgb aColor) const;
+
+ void NextFontL();
+ void InterpretAttribute(TUint AnAtt);
+ void InterpretColorBits(TUint aCharacterAttributes);
+ inline CEikConsoleControl &M() const {return((CEikConsoleControl&)(*this));}
+ void CreateScrollBarFrameLayout(TEikScrollBarFrameLayout& aLayout) const;
+ void InitFontSpecL();
+
+private:
+ CEikConsoleScreen *iConsole; // the console that owns this window
+ TRgb iBackGray16; // current background color
+ TRgb iPenGray16; // current pen color for characters
+ TUint iLastAtt; // last attribute, to see if we need to change the gc
+ TUint iLastFontFlags; // last attribute, to see if we need to load another font
+
+ TSize iCharSize; // size of a single character (in pixels)
+ TSize iViewInPixels; // size of area available for characters (in pixels)
+ TSize iViewInChars; // size of area available for characters (in characters)
+
+ TTextCursor iTextCursor; // cursor to use
+ TUint iCursorHeightPercentage; // required height of cursor (as a percentage)
+
+ TInt iRedrawing; // NONZERO IF BUSY REDRAWING
+
+ CEikScrollBarFrame* iSBFrame;
+ CEikScrollBarFrame::TScrollBarVisibility iHBarVisibility;
+ CEikScrollBarFrame::TScrollBarVisibility iVBarVisibility;
+ TPoint iLastThumbPos;
+
+ const CFont *iCurrentFont; // Current font
+ TFontSpec iFontSpec; // Current font spec
+ TFontUnderline iFontUnderline; // Current font spec underline
+ TUint iFontHeight; // Height of current font when not doubleheight/doublewidth
+ TUint iFontIsProportional; // nonzero if font is proportional
+ };
+
+
+
+#endif