windowing/windowserver/SERVER/w32cmd.h
changeset 0 5d03bc08d59c
child 11 fed1595b188e
child 36 01a6848ebfd7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/SERVER/w32cmd.h	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,2443 @@
+// Copyright (c) 1999-2009 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:
+// Command numbers and structures for client to window server communications.
+// 
+//
+
+#ifndef __W32CMD_H__
+#define __W32CMD_H__
+
+#include <e32std.h>
+#include <w32std.h>
+#include <gdi.h>
+#if defined(SYMBIAN_GRAPHICS_GCE)
+#include <graphics/surfaceconfiguration.h>
+#include <graphics/sgresource.h>
+#endif
+
+#include <graphics/displayconfiguration.h>
+#include <graphics/displaymapping.h>
+
+const TUint KWservMajorVersionNumber=1;
+const TUint KWservMinorVersionNumber=0;
+const TUint KWservBuildVersionNumber=151;
+
+const TUint KWservLoggingDllUidValue8=268435925;
+const TUid KWservLoggingDllUid8={KWservLoggingDllUidValue8};
+const TUint KWservLoggingDllUidValue16=268450595;
+const TUid KWservLoggingDllUid16={KWservLoggingDllUidValue16};
+//const TUint KUidWservLoggingCommon=268439591;
+const TUint KWservLoggingDllUidValue=KWservLoggingDllUidValue16;
+const TUid KWservLoggingDllUid={KWservLoggingDllUidValue};
+const TInt KDummyScreenNumber = -1;
+class CClickMaker;
+class CAnimDll;
+class CDebugLogBase;
+class TSurfaceId;
+
+/** Creates an interface object for Shell
+
+@publishedPartner
+@released
+*/
+typedef TInt (*ShellEntryPoint)(TAny *);
+
+/** Creates the key or pointer click plug-in provider interface.
+
+When a key is pressed, a key auto repeats or when the screen is tapped with a pointer, 
+the window server informs the plug-in DLL, which can then make the sound.
+
+@publishedAll
+@released
+*/
+typedef CClickMaker *(*CreateCClickHandler)();
+
+/** Creates the animation dll factory interface object.
+
+Animation DLL objects are created by the CreateCAnimDllL() function,
+which is called by the window server at the request of the client.
+
+@publishedAll
+@released
+*/
+typedef CAnimDll* (*CreateCAnimDll)();
+
+
+class WservEncoding
+	{
+public:
+	static inline TUint Encode8BitValues(TUint8 aFirst,TUint8 aSecond);
+	static inline TUint Encode8BitValues(TUint8 aFirst,TUint8 aSecond,TUint8 aThird);
+	static inline TUint8 ExtractFirst8BitValue(TUint aUint);
+	static inline TUint8 ExtractSecond8BitValue(TUint aUint);
+	static inline TUint8 ExtractThird8BitValue(TUint aUint);
+	};
+
+struct SKeyRepeatSettings
+	{
+	SKeyRepeatSettings();
+	TTimeIntervalMicroSeconds32 iInitialTime;
+	TTimeIntervalMicroSeconds32 iTime;
+	};
+struct SDoubleClickSettings
+	{
+	SDoubleClickSettings();
+	TTimeIntervalMicroSeconds32 iInterval;
+	TInt iDistance;
+	};
+//struct SMaxNumColors
+struct SDefModeMaxNumColors
+	{
+	SDefModeMaxNumColors();
+	TInt iColors;
+	TInt iGrays;
+	TDisplayMode iDisplayMode;
+	};
+struct SEventMessageReady
+	{
+	TInt iWindowGroupIdentifier;
+	TUid iMessageUid;
+	TInt iMessageParametersSize;
+	};
+class TCmdSpriteMember
+	{
+public:
+	inline TCmdSpriteMember();
+	TCmdSpriteMember(const TSpriteMember &aSpriteMember);
+public:
+	TInt iBitmap;
+	TInt iMaskBitmap;
+	TBool iInvertMask;
+	CGraphicsContext::TDrawMode iDrawMode;
+	TPoint iOffset;			// Offset from sprites central position
+	TTimeIntervalMicroSeconds32 iInterval;
+	};
+
+enum {EClientBufferSize=640};		// default buffer size
+enum {EClientBufferMaxSize=0x4000};	// 16K is max buffer size
+
+enum {EWsOpcodeHandle=0x8000};	// Indicates a new handle is included in the message header
+
+enum {EMaxPolygonPoints=50}; // Max size polygon that can be drawn without allocing
+enum {EMaxPolylinePoints=50}; // Max size polygon that can be drawn without allocing
+
+enum {EClickLoaded=0x01, EClickLoadable=0x02};
+
+//
+// Opcodes
+//
+
+// Client opcodes
+
+enum TWsClientOpcodes
+	{
+	EWsClOpDisconnect, //Keep this as the first enum value - used by test code
+	EWsClOpClearHotKeys,
+	EWsClOpSetHotKey,
+	EWsClOpRestoreDefaultHotKey,
+	EWsClOpComputeMode,
+	EWsClOpEventReady,
+	EWsClOpEventReadyCancel,
+	EWsClOpGetEvent,
+	EWsClOpPurgePointerEvents,
+	EWsClOpRedrawReady,
+	EWsClOpRedrawReadyCancel,
+	EWsClOpGetRedraw,
+	EWsClOpPriorityKeyReady,
+	EWsClOpPriorityKeyReadyCancel,
+	EWsClOpGetPriorityKey,
+	EWsClOpSetShadowVector,
+	EWsClOpShadowVector,
+	EWsClOpSetKeyboardRepeatRate,
+	EWsClOpGetKeyboardRepeatRate,
+	EWsClOpSetDoubleClick,
+	EWsClOpGetDoubleClickSettings,
+	EWsClOpCreateWindowGroup,
+	EWsClOpCreateWindow,
+	EWsClOpCreateGc,
+	EWsClOpCreateAnimDll,
+	EWsClOpCreateScreenDevice,
+	EWsClOpCreateSprite,
+	EWsClOpCreatePointerCursor,
+	EWsClOpStartSetCustomTextCursor,
+	EWsClOpCompleteSetCustomTextCursor,
+	EWsClOpCreateBitmap,
+	EWsClOpNumWindowGroups,
+	EWsClOpNumWindowGroupsAllPriorities,
+	EWsClOpWindowGroupList,
+	EWsClOpWindowGroupListAllPriorities,
+	EWsClOpSetWindowGroupOrdinalPosition,
+	EWsClOpGetWindowGroupHandle,
+	EWsClOpGetWindowGroupOrdinalPriority,
+	EWsClOpGetWindowGroupClientThreadId,
+	EWsClOpGetWindowGroupNameFromIdentifier,
+	EWsClOpGetFocusWindowGroup,
+	EWsClOpGetDefaultOwningWindow,
+	EWsClOpSendEventToWindowGroup,
+	EWsClOpFindWindowGroupIdentifier,
+	EWsClOpFindWindowGroupIdentifierThread,
+	EWsClOpSetBackgroundColor,
+	EWsClOpGetBackgroundColor,
+	EWsClOpSetSystemPointerCursor,
+	EWsClOpClearSystemPointerCursor,
+	EWsClOpClaimSystemPointerCursorList,
+	EWsClOpFreeSystemPointerCursorList,
+	EWsClOpGetModifierState,
+	EWsClOpSetModifierState,
+	EWsClOpHeapCount,
+	EWsClOpResourceCount,
+	EWsClOpTestInvariant,
+	EWsClOpHeapSetFail,
+	EWsClOpRawEvent,
+	EWsClOpSystemInfo,
+	EWsClOpLogMessage,
+	EWsClOpPasswordEntered,
+	EWsClOpSendMessageToWindowGroup,
+	EWsClOpSendOffEventsToShell,
+	EWsClOpGetDefModeMaxNumColors,
+	EWsClOpGetColorModeList,
+	EWsClOpKeyEvent,
+	EWsClOpSendEventToAllWindowGroup,
+	EWsClOpSendEventToAllWindowGroupPriority,
+	EWsClOpSetPointerCursorArea,
+	EWsClOpPointerCursorArea,
+	EWsClOpSetPointerCursorMode,
+	EWsClOpPointerCursorMode,
+	EWsClOpSetDefaultSystemPointerCursor,
+	EWsClOpClearDefaultSystemPointerCursor,
+	EWsClOpSetPointerCursorPosition,
+	EWsClOpPointerCursorPosition,
+	EWsClOpSetDefaultFadingParams,
+	EWsClOpSendMessageToAllWindowGroups,
+	EWsClOpSendMessageToAllWindowGroupsPriority,
+	EWsClOpFetchMessage,
+	EWsClOpPrepareForSwitchOff,
+	EWsClOpCreateDirectScreenAccess,
+	EWsClOpSetFaded,
+	EWsClOpLogCommand,
+	EWsClOpCreateClick,
+	EWsClOpSendEventToOneWindowGroupPerClient,
+#if defined(__WINS__)
+	EWsClOpRemoveKeyCode,
+	EWsClOpSimulateXyInput,
+#endif
+	EWsClOpNoFlickerFree,
+	EWsClOpSetFocusScreen,
+	EWsClOpGetFocusScreen,
+	EWsClOpWindowGroupListAndChain,
+	EWsClOpWindowGroupListAndChainAllPriorities,
+	EWsClOpSetClientCursorMode,
+	EWsClOpClearAllRedrawStores,
+	EWsClOpCreateGraphic,
+	EWsClOpGraphicMessageReady,
+	EWsClOpGetGraphicMessage,
+	EWsClOpGraphicMessageCancel,
+	EWsClOpNumWindowGroupsOnScreen,
+	EWsClOpGetNumberOfScreens, 
+	EWsClOpGraphicAbortMessage,
+	EWsClOpGraphicFetchHeaderMessage,
+	EWsClOpDebugInfo,
+	EWsClOpDebugInfoReplyBuf,
+	EWsClOpRegisterSurface,
+	EWsClOpUnregisterSurface,
+	EWsClOpSetCloseProximityThresholds,
+	EWsClOpSetHighPressureThresholds,
+	EWsClOpGetEnterCloseProximityThreshold,
+	EWsClOpGetExitCloseProximityThreshold,
+	EWsClOpGetEnterHighPressureThreshold,
+	EWsClOpGetExitHighPressureThreshold,
+	EWsClOpCreateDrawableSource,
+	EWsClOpCreateDirectScreenAccessRegionTrackingOnly,
+	EWsClOpLastEnumValue //Keep this at the end - used by test code
+	};
+	
+// Graphic Drawer opcodes
+
+enum TWsGraphicDrawerOpcodes
+	{
+	EWsGdOpFree = 0x0000,
+	EWsGdOpSendMsg,
+	EWsGdOpGetGraphicId,
+	EWsGdOpShareGlobally,
+	EWsGdOpUnShareGlobally,
+	EWsGdOpShare,
+	EWsGdOpUnShare,
+	EWsGdOpSendSynchronMsg,
+	};
+	
+// types of Graphic Drawer messages to be passed from the Graphic Drawer to the client
+	
+enum TWsGraphicMessageType
+	{
+	EWsGraphMessageTypeUser = 0x00
+	// max 0x03 as packed into lower two bits of client handle
+	};
+
+// Window opcodes
+
+enum TWsWindowOpcodes
+	{
+	EWsWinOpFree=0x0000,
+	EWsWinOpSetExtent,
+	EWsWinOpSetExtentErr,
+	EWsWinOpOrdinalPosition,
+	EWsWinOpFullOrdinalPosition,
+	EWsWinOpSetOrdinalPosition,
+	EWsWinOpSetOrdinalPositionPri,
+	EWsWinOpSetOrdinalPriorityAdjust,
+	EWsWinOpSetPos,
+	EWsWinOpSetSize,
+	EWsWinOpSetSizeErr,
+	EWsWinOpPosition,
+	EWsWinOpAbsPosition,
+	EWsWinOpSize,
+	EWsWinOpActivate,
+	EWsWinOpInvalidate,
+	EWsWinOpInvalidateFull,
+	EWsWinOpBeginRedraw,
+	EWsWinOpBeginRedrawFull,
+	EWsWinOpEndRedraw,
+	EWsWinOpTestInvariant,
+	EWsWinOpParent,
+	EWsWinOpPrevSibling,
+	EWsWinOpNextSibling,
+	EWsWinOpChild,
+	EWsWinOpInquireOffset,
+	EWsWinOpPointerFilter,
+	EWsWinOpSetPointerCapture,
+	EWsWinOpSetPointerGrab,
+	EWsWinOpClaimPointerGrab,
+	EWsWinOpSetBackgroundColor,
+	EWsWinOpSetOrdinalPositionErr,
+	EWsWinOpSetVisible,
+	EWsWinOpScroll,
+	EWsWinOpScrollClip,
+	EWsWinOpScrollRect,
+	EWsWinOpScrollClipRect,
+	EWsWinOpReceiveFocus,
+	EWsWinOpAutoForeground,
+	EWsWinOpSetNoBackgroundColor,
+	EWsWinOpCaptureKey,
+	EWsWinOpCancelCaptureKey,
+	EWsWinOpCaptureKeyUpsAndDowns,
+	EWsWinOpCancelCaptureKeyUpsAndDowns,
+	EWsWinOpAddPriorityKey,
+	EWsWinOpRemovePriorityKey,
+	EWsWinOpSetTextCursor,
+	EWsWinOpSetTextCursorClipped,
+	EWsWinOpCancelTextCursor,
+	EWsWinOpSetShadowHeight,
+	EWsWinOpShadowDisabled,
+	EWsWinOpGetInvalidRegion,
+	EWsWinOpGetInvalidRegionCount,
+	EWsWinOpSetColor,
+	EWsWinOpSetCornerType,
+	EWsWinOpSetShape,
+	EWsWinOpBitmapHandle,
+	EWsWinOpUpdateScreen,
+	EWsWinOpUpdateScreenRegion,
+	EWsWinOpUpdateBackupBitmap,
+	EWsWinOpMaintainBackup,
+	EWsWinOpName,
+	EWsWinOpSetName,
+	EWsWinOpSetOwningWindowGroup,
+	EWsWinOpDefaultOwningWindow,
+	EWsWinOpRequiredDisplayMode,
+	EWsWinOpEnableOnEvents,
+	EWsWinOpDisableOnEvents,
+	EWsWinOpEnableGroupChangeEvents,
+	EWsWinOpDisableGroupChangeEvents,
+	EWsWinOpSetPointerCursor,
+	EWsWinOpSetCustomPointerCursor,
+	EWsWinOpRequestPointerRepeatEvent,
+	EWsWinOpCancelPointerRepeatEventRequest,
+	EWsWinOpAllocPointerMoveBuffer,
+	EWsWinOpFreePointerMoveBuffer,
+	EWsWinOpEnablePointerMoveBuffer,
+	EWsWinOpDisablePointerMoveBuffer,
+	EWsWinOpRetrievePointerMoveBuffer,
+	EWsWinOpDiscardPointerMoveBuffer,		//Tested to here %%%
+	EWsWinOpEnableModifierChangedEvents,
+	EWsWinOpDisableModifierChangedEvents,
+	EWsWinOpEnableErrorMessages,
+	EWsWinOpDisableErrorMessages,
+	EWsWinOpAddKeyRect,
+	EWsWinOpRemoveAllKeyRects,
+	EWsWinOpPasswordWindow,
+	EWsWinOpEnableBackup,
+	EWsWinOpIdentifier,
+	EWsWinOpDisableKeyClick,
+	EWsWinOpSetFade=EWsWinOpDisableKeyClick+3,	//Two messages removed
+	EWsWinOpSetNonFading,
+	EWsWinOpFadeBehind,
+	EWsWinOpEnableScreenChangeEvents,
+	EWsWinOpDisableScreenChangeEvents,
+	EWsWinOpSendPointerEvent,
+	EWsWinOpSendAdvancedPointerEvent,
+	EWsWinOpGetDisplayMode,
+	EWsWinOpGetIsFaded,
+	EWsWinOpGetIsNonFading,
+	EWsWinOpOrdinalPriority,
+	EWsWinOpClearPointerCursor,
+	EWsWinOpMoveToGroup,
+	EWsWinOpEnableFocusChangeEvents,
+	EWsWinOpDisableFocusChangeEvents,
+	EWsWinOpEnableGroupListChangeEvents,
+	EWsWinOpDisableGroupListChangeEvents,
+	EWsWinOpCaptureLongKey,
+	EWsWinOpCancelCaptureLongKey,
+	EWsWinOpStoreDrawCommands,
+	EWsWinOpHandleTransparencyUpdate,
+	EWsWinOpSetTransparencyFactor,
+	EWsWinOpSetTransparencyBitmap,
+	EWsWinOpAllowChildWindowGroup,
+	EWsWinOpSetTransparencyBitmapCWs, 
+	EWsWinOpEnableVisibilityChangeEvents,
+	EWsWinOpDisableVisibilityChangeEvents,
+	EWsWinOpSetTransparencyAlphaChannel,
+	EWsWinOpWindowGroupId,
+	EWsWinOpSetPointerCapturePriority,
+	EWsWinOpGetPointerCapturePriority,
+	EWsWinOpSetTransparentRegion,
+	EWsWinOpSetTransparencyPolicy,
+	EWsWinOpIsRedrawStoreEnabled,
+	EWsWinOpEnableOSB,
+	EWsWinOpDisableOSB,
+	EWsWinOpClearChildGroup,
+	EWsWinOpSetChildGroup,
+	EWsWinOpClientHandle,
+	EWsWinOpSetBackgroundSurface,
+	EWsWinOpKeyColor=EWsWinOpSetBackgroundSurface+2, 	//One message removed
+	EWsWinOpSetBackgroundSurfaceConfig=EWsWinOpKeyColor+5,	//Four messages removed
+	EWsWinOpRemoveBackgroundSurface=EWsWinOpSetBackgroundSurfaceConfig+2,	//One message removed
+	EWsWinOpGetBackgroundSurfaceConfig=EWsWinOpRemoveBackgroundSurface+2,	//One message removed
+	EWsWinOpClearRedrawStore=EWsWinOpGetBackgroundSurfaceConfig+2,	//One message removed
+	EWsWinOpScreenNumber,
+	EWsWinOpEnableAdvancedPointers,
+#ifdef SYMBIAN_GRAPHICS_WSERV_QT_EFFECTS	
+	EWsWinOpSetSurfaceTransparency,
+#endif
+	EWsWinOpTestLowPriorityRedraw=0x2000,  //Specific opcode for testing redraw queue priorities
+	};
+
+// GC opcodes
+
+enum TWsGcOpcodes
+	{
+	EWsGcOpFree=0x0000,
+	EWsGcOpActivate,
+	EWsGcOpDeactivate,
+	EWsGcOpSetClippingRegion,
+	EWsGcOpSetClippingRect,
+	EWsGcOpCancelClippingRegion,
+	EWsGcOpCancelClippingRect,
+	EWsGcOpSetWordJustification,
+	EWsGcOpSetCharJustification,
+	EWsGcOpSetPenColor,
+	EWsGcOpSetPenStyle,
+	EWsGcOpSetPenSize,
+	EWsGcOpSetBrushColor,
+	EWsGcOpSetBrushStyle,
+	EWsGcOpSetBrushOrigin,
+	EWsGcOpUseBrushPattern,
+	EWsGcOpDiscardBrushPattern,
+	EWsGcOpDrawArc,
+	EWsGcOpDrawLine,
+	EWsGcOpPlot,
+	EWsGcOpDrawTo,
+	EWsGcOpDrawBy,
+	EWsGcOpDrawPolyLine,
+	EWsGcOpDrawPolyLineContinued,   //Quater Way
+
+	EWsGcOpDrawPie,
+	EWsGcOpDrawRoundRect,
+	EWsGcOpDrawPolygon,
+	EWsGcOpStartSegmentedDrawPolygon,
+	EWsGcOpSegmentedDrawPolygonData,
+	EWsGcOpDrawSegmentedPolygon,
+	EWsGcOpDrawBitmap,
+	EWsGcOpDrawBitmap2,
+	EWsGcOpDrawBitmap3,
+	EWsGcOpDrawBitmapMasked,
+	EWsGcOpWsDrawBitmapMasked,
+	EWsGcOpDrawText,
+	EWsGcOpDrawTextPtr,
+	EWsGcOpDrawTextInContextPtr,
+	EWsGcOpDrawTextInContext,
+	EWsGcOpDrawTextVertical,
+	EWsGcOpDrawTextInContextVertical,
+	EWsGcOpDrawTextInContextVerticalPtr,
+	EWsGcOpDrawTextVerticalPtr,
+	EWsGcOpDrawBoxTextOptimised1,
+	EWsGcOpDrawBoxTextOptimised2,
+	EWsGcOpDrawBoxTextInContextOptimised1,
+	EWsGcOpDrawBoxTextInContextOptimised2,
+	EWsGcOpDrawBoxText,
+	EWsGcOpDrawBoxTextInContext,
+	EWsGcOpDrawBoxTextPtr,
+	EWsGcOpDrawBoxTextInContextPtr,
+	EWsGcOpDrawBoxTextVertical,
+	EWsGcOpDrawBoxTextInContextVertical,
+	EWsGcOpDrawBoxTextVerticalPtr,
+	EWsGcOpDrawBoxTextInContextVerticalPtr,
+	EWsGcOpMoveBy,
+	EWsGcOpMoveTo,
+	EWsGcOpSetOrigin,
+	EWsGcOpCopyRect,
+	EWsGcOpDrawRect,
+	EWsGcOpDrawEllipse,		//Half Way
+
+	EWsGcOpGdiBlt2,
+	EWsGcOpGdiBlt3,
+	EWsGcOpGdiBltMasked,
+	EWsGcOpGdiWsBlt2,
+	EWsGcOpGdiWsBlt3,
+	EWsGcOpGdiWsBltMasked,
+	EWsGcOpSize,
+	EWsGcOpUseFont,
+	//Two unused codes deleted
+	EWsGcOpDiscardFont=EWsGcOpUseFont+3,
+	EWsGcOpSetUnderlineStyle,
+	EWsGcOpSetStrikethroughStyle,
+	EWsGcOpSetDrawMode,
+	EWsGcOpTestInvariant,
+	EWsGcOpClearRect,
+	EWsGcOpClear,
+	EWsGcOpReset,
+	EWsGcOpSetDitherOrigin,
+	EWsGcOpMapColors,
+	EWsGcOpDrawWsGraphic, //PREQ1246 Bravo
+	EWsGcOpDrawWsGraphicPtr,
+//
+// Local opcodes used internally access GC drawing code
+//
+	EWsGcOpDrawPolyLineLocal,
+	EWsGcOpDrawPolyLineLocalBufLen,
+	EWsGcOpDrawPolygonLocal,
+	EWsGcOpDrawPolygonLocalBufLen,
+	EWsGcOpDrawTextLocal,
+	EWsGcOpDrawTextInContextLocal,
+	EWsGcOpDrawBoxTextLocal,
+	EWsGcOpDrawBoxTextInContextLocal,
+	EWsGcOpDrawBitmapLocal,
+	EWsGcOpDrawBitmap2Local,
+	EWsGcOpDrawBitmap3Local,
+	EWsGcOpDrawBitmapMaskedLocal,
+	EWsGcOpGdiBlt2Local,
+	EWsGcOpGdiBlt3Local,
+	EWsGcOpGdiBltMaskedLocal,
+
+//
+// Local opcodes used when reading long strings
+//
+	EWsGcOpDrawTextPtr1,
+	EWsGcOpDrawTextInContextPtr1,
+	EWsGcOpDrawTextVerticalPtr1,
+	EWsGcOpDrawTextInContextVerticalPtr1,
+	EWsGcOpDrawBoxTextPtr1,
+	EWsGcOpDrawBoxTextInContextPtr1,
+	EWsGcOpDrawBoxTextVerticalPtr1,
+	EWsGcOpDrawBoxTextInContextVerticalPtr1,
+			
+//
+// New functions added leaving a space just in case it may be useful
+//
+	EWsGcOpSetFaded=200,
+	EWsGcOpSetFadeParams,
+	EWsGcOpGdiAlphaBlendBitmaps,
+	EWsGcOpGdiWsAlphaBlendBitmaps,
+	EWsGcOpSetOpaque,
+	EWsGcOpMapColorsLocal,	
+	EWsGcOpAlphaBlendBitmapsLocal,
+	EWsGcOpSetShadowColor,
+	EWsGcOpSetDrawTextInContext,
+	EWsGcOpDrawResourceToPos,
+	EWsGcOpDrawResourceToRect,
+	EWsGcOpDrawResourceFromRectToRect,
+	EWsGcOpDrawResourceWithData,
+//
+// Codes for internal use only
+//
+	EWsStoreAllGcAttributes=1000,
+	EWsStoreClippingRegion,
+	EWsGcOpFlagDrawOp=0x8000,
+	};
+
+enum TWsAnimDllOpcode
+	{
+	EWsAnimDllOpCreateInstance=0x0000,
+	EWsAnimDllOpCommand,
+	EWsAnimDllOpCommandReply,
+	EWsAnimDllOpDestroyInstance,
+	EWsAnimDllOpFree,
+	EWsAnimDllOpCreateInstanceSprite,
+	};
+
+enum TWsScreenDeviceOpcodes
+	{
+	EWsSdSetableBitFlag=0x80000000,
+	EWsSdOpGetScanLine=0x0000,
+	EWsSdOpPixel,
+	EWsSdOpTwipsSize,
+	EWsSdOpPixelSize,
+	EWsSdOpFree,
+	EWsSdOpHorizontalTwipsToPixels,
+	EWsSdOpVerticalTwipsToPixels,
+	EWsSdOpHorizontalPixelsToTwips,
+	EWsSdOpVerticalPixelsToTwips,
+	EWsSdOpDisplayMode,
+	EWsSdOpRectCompare,
+	EWsSdOpPointerRect,
+	EWsSdOpCopyScreenToBitmap,
+	EWsSdOpCopyScreenToBitmap2,
+	EWsSdOpSetScreenSizeAndRotation,
+	EWsSdOpSetScreenSizeAndRotation2,
+	EWsSdOpGetDefaultScreenSizeAndRotation,
+	EWsSdOpGetDefaultScreenSizeAndRotation2,
+	EWsSdOpGetNumScreenModes,
+	EWsSdOpSetScreenMode,
+	EWsSdOpGetScreenModeSizeAndRotation,
+	EWsSdOpGetScreenModeSizeAndRotation2,
+	EWsSdOpSetScreenModeEnforcement,
+	EWsSdOpScreenModeEnforcement,
+	EWsSdOpSetModeRotation,
+	EWsSdOpGetRotationList,
+	EWsSdOpPaletteAttributes,
+	EWsSdOpSetPalette,
+	EWsSdOpGetPalette,
+	EWsSdOpGetScreenMode,
+	EWsSdOpGetDefaultScreenModeOrigin,
+	EWsSdOpGetScreenModeOrigin,
+	EWsSdOpGetScreenModeScale,
+	EWsSdOpGetCurrentScreenModeScale,
+	EWsSdOpSetAppScreenMode,
+	EWsSdOpGetScreenModeScaledOrigin,
+	EWsSdOpGetCurrentScreenModeScaledOrigin,
+	EWsSdOpSetCurrentScreenModeAttributes,
+	EWsSdOpGetCurrentScreenModeAttributes,
+	EWsSdOpGetScreenNumber,
+	EWsSdOpGetScreenSizeModeList,
+	EWsSdOpGetScreenModeDisplayMode,
+	EWsClOpSetBackLight,
+	EWsSdOpExtensionsSupported,
+	EWsSdOpXDcGetNumberOfResolutions,
+	EWsSdOpXDcGetResolutionsList,
+	EWsSdOpXDcGetConfiguration,
+	EWsSdOpXDcSetConfiguration,
+	EWsSdOpXDcGetPreferredDisplayVersion,
+	EWsSdOpXDcNotifyOnDisplayChange,
+	EWsSdOpXDcNotifyOnDisplayChangeCancel,
+	EWsSdOpXDcDisplayChangeEventEnabled,
+	EWsSdOpXDmMapExtent,
+	EWsSdOpXTestScreenCapture,
+	EWsSdOpIsScreenModeDynamic,
+	EWsSdOpXTestScreenCaptureSize,
+	};
+
+/**	Bitfield of interface extensions explicitly supported.
+ * 	The client interface is welcome to group functionality in  different ways, if desired.
+ * 	Operations classified as inside extensions can be called and fail safely on an individual basis.
+ * 	Note that to distinguish versions, new bits may need to be used.
+ *  The top bit is reserved so that error value returns can be distinguished. 
+ **/    
+enum TWsInterfaceExtensions
+	{
+	TWsSdXDisplayControl	=	0x00000001,
+	TWsSdXDisplayMapping	=	0x00000002,
+	TWsSdXDebugComposition	=	0x00000004,
+	
+	
+	TWsSdXReservedErrorFlag	=	0x80000000
+	};
+
+enum TWsSpriteOpcodes
+	{
+	EWsSpriteOpFree=0x0000,
+	EWsSpriteOpSetPosition,
+	EWsSpriteOpUpdateMember,
+	EWsSpriteOpUpdateMember2,
+	EWsSpriteOpActivate,
+	EWsSpriteOpAppendMember,
+	};
+
+enum TWsBitmapOpcodes
+	{
+	EWsBitmapOpFree=0x0000,
+	};
+
+enum TWsDirectOpcodes
+	{
+	EWsDirectOpFree=0x0000,
+	EWsDirectOpRequest,
+	EWsDirectOpInitFailed,
+	EWsDirectOpGetRegion,
+	EWsDirectOpCancel,
+	EWsDirectOpGetSendQueue,
+	EWsDirectOpGetRecQueue,
+	};
+
+enum TWsClickOpcodes
+	{
+	EWsClickOpFree=0x0000,
+	EWsClickOpIsLoaded,
+	EWsClickOpUnLoad,
+	EWsClickOpLoad,
+	EWsClickOpCommandReply,
+	EWsClickOpSetKeyClick,
+	EWsClickOpSetPenClick,
+	EWsClickOpKeyClickEnabled,
+	EWsClickOpPenClickEnabled,
+	};
+	
+enum TWsGraphicBitFlags
+	{
+	EWsGraphicIdUid			= 0x01,
+	EWsGraphicIdTransient	= 0x02,
+	EWsGraphicReplace		= 0x04
+	};
+
+enum TWsDrawableSourceOpcodes
+	{
+	EWsDrawableSourceOpFree=0x0000,
+	};
+
+//
+// Command structures
+//
+
+/** Structure used to pass commands between the client and the server.
+
+@internalComponent
+@released
+@see RWsBuffer::DoWrite()
+@see CWsClient::DoCommandBufL()
+*/
+struct TWsCmdHeaderBase
+	{
+	TUint16 iOpcode;
+	TInt16 iCmdLength;
+	};
+
+/** Structure used to pass commands between the client and the server.
+
+@internalComponent
+@released
+@see RWsBuffer::DoWrite()
+@see CWsClient::DoCommandBufL()
+*/
+struct TWsCmdHeader
+	{
+	TWsCmdHeaderBase iBase;
+	TInt32 iDestHandle;
+	};
+
+//
+// Command structures
+//
+
+// Client command structures
+
+enum TWinTypes
+	{
+	EWinRedraw,
+	EWinBackedUp,
+	EWinBlank,
+	};
+
+struct TWsClCmdCreateWindow
+	{
+	TInt parent;
+	TUint32 clientHandle;
+	TWinTypes type;
+	TDisplayMode displayMode;	// Only used for backed up windows
+	};
+struct TWsClCmdCreateWindowGroup
+	{
+	TUint32 clientHandle;
+	TBool focus;
+	TInt parentId;
+	TInt32 screenDeviceHandle;
+	};
+struct TWsClCmdLoadAnimDll
+	{
+	TInt length;
+	};
+struct TWsClCmdCreatePointerCursor
+	{
+	TUint flags;
+	};
+struct TWsClCmdCustomTextCursorData
+	{
+	TInt identifier;
+	TUint flags;
+	RWsSession::TCustomTextCursorAlignment alignment;
+	};
+struct TWsClCmdCreateSprite
+	{
+	inline TWsClCmdCreateSprite(TInt aWindow, const TPoint &aPos, TUint aFlags);
+	TInt window;
+	TPoint pos;
+	TUint flags;
+	};
+struct TWsClCmdCreateBitmap
+	{
+	TInt handle;
+	};
+struct TWsClCmdSetHotKey
+	{
+	TUint type;
+	TUint modifiers;
+	TUint modifierMask;
+	TUint16 keycode;
+	TUint16 filler;
+	};
+struct TWsClCmdWindowGroupList
+	{
+	TInt priority;
+	TInt count;
+	TInt screenNumber;
+	};
+struct TWsClCmdSetWindowGroupOrdinalPosition
+	{
+	inline TWsClCmdSetWindowGroupOrdinalPosition(TInt aIdentifier, TInt aPosition);
+	TInt identifier;
+	TInt position;
+	};
+struct TWsClCmdSetKeyboardRepeatRate
+	{
+	inline TWsClCmdSetKeyboardRepeatRate(const TTimeIntervalMicroSeconds32 &aInitial,const TTimeIntervalMicroSeconds32 &aTime);
+	TTimeIntervalMicroSeconds32 initial;
+	TTimeIntervalMicroSeconds32 time;
+	};
+struct TWsClCmdSetDoubleClick
+	{
+	inline TWsClCmdSetDoubleClick(const TTimeIntervalMicroSeconds32 &aInterval,TInt aDistance);
+	TTimeIntervalMicroSeconds32 interval;
+	TInt distance;
+	};
+struct TWsClCmdSetSystemPointerCursor
+	{
+	TInt handle;
+	TInt number;
+	};
+struct TWsClCmdHeapSetFail
+	{
+	RHeap::TAllocFail type;
+	TInt value;
+	TInt burst;
+	};
+struct TWsClCmdSendEventToWindowGroup
+	{
+	inline TWsClCmdSendEventToWindowGroup(TInt aParameter, const TWsEvent &aEvent);
+	TInt parameter;
+	TWsEvent event;
+	};
+struct TWsClCmdFindWindowGroupIdentifier
+	{
+	inline TWsClCmdFindWindowGroupIdentifier(TInt aPreviousIdentifier,TInt aOffset, TInt aLength);
+	TInt identifier;
+	TInt offset;
+	TInt length;
+	};
+struct TWsClCmdSendMessageToWindowGroup
+	{
+	inline TWsClCmdSendMessageToWindowGroup(TInt aIdentifier, TUid aUid, TInt aDataLength, const TDesC8 *aPtr);
+	TInt identifierOrPriority; // identifier in case of EWsClOpSendMessageToWindowGroup, not used in case of EWsClOpSendMessageToAllWindowGroup, priority in case of EWsClOpSendMessageToAllWindowGroupPriority
+	TUid uid;
+	TInt dataLength;
+	const TDesC8 *ptr;
+	};
+struct TWsClCmdFetchMessage
+	{
+	inline TWsClCmdFetchMessage(TInt aWindowGroupIdentifier);
+	TInt windowGroupIdentifier;
+	};
+struct TWsClCmdFindWindowGroupIdentifierThread
+	{
+	inline TWsClCmdFindWindowGroupIdentifierThread(TInt aPreviousIdentifier,TThreadId aThreadId);
+	TInt identifier;
+	TThreadId threadId;
+	};
+struct TWsClCmdGetWindowGroupNameFromIdentifier
+	{
+	inline TWsClCmdGetWindowGroupNameFromIdentifier(TInt aIdentifier,TInt aMaxLength);
+	TInt identifier;
+	TInt maxLength;
+	};
+struct TWsClCmdOffEventsToShell
+	{
+	inline TWsClCmdOffEventsToShell(TBool aOn,TUint32 aWindow);
+	TBool on;
+	TUint32 window;
+	};
+struct TWsClCmdSetModifierState
+	{
+	TEventModifier modifier;
+	TModifierState state;
+	};
+struct TWsClCmdSetPointerCursorArea
+	{
+	inline TWsClCmdSetPointerCursorArea(TInt aMode,TRect aArea);
+	TInt mode;
+	TRect area;
+	};
+struct TWsClCmdSetSystemFaded
+	{
+	enum {EFaded=0x01,EUseDefaultMap=0x02};
+	inline TWsClCmdSetSystemFaded(TBool aFaded,TBool aUseDefaults=ETrue,TUint8 aBlackMap=0,TUint8 aWhiteMap=0);
+	inline TBool Faded() const;
+	inline TBool UseDefaultMap() const;
+	inline void GetFadingParams(TUint8& aBlackMap,TUint8& aWhiteMap) const;
+	TUint params;
+	};
+struct TWsClCmdCreateGraphic
+	{
+	TUint iFlags; // TWsGraphicBitFlags
+	TInt iClientHandle;
+	TInt iId;
+	TUid iType;
+	TInt iDataLen;
+	TBool iRemoteReadData;
+	};
+struct TWsClCmdGdSendMessage
+	{
+	TInt iDataLen;
+	TBool iRemoteReadData;
+	};
+struct TWsClCmdGdGetId
+	{
+	TInt iId;
+	TBool iIsUid;
+	};
+struct TWsClCmdDebugInfo
+	{
+	inline TWsClCmdDebugInfo(TInt aFunction, TInt aParam);
+	TInt iFunction;
+	TInt iParam;
+	};
+struct TWsClCmdCreateDrawableSource;
+struct TWsClCmdSurfaceRegister;
+#if defined(SYMBIAN_GRAPHICS_GCE)
+struct TWsClCmdCreateDrawableSource
+	{
+	inline TWsClCmdCreateDrawableSource(const TSgDrawableId& aDrawableId, TInt aScreenNumber);
+	TSgDrawableId iDrawableId;
+	TInt iScreenNumber;
+	};
+struct TWsClCmdSurfaceRegister
+	{
+	inline TWsClCmdSurfaceRegister(TInt aScreenNumber, const TSurfaceId& aSurface);
+	TInt screenNumber;
+	TSurfaceId surfaceId;
+	};
+#endif
+struct TWsClCmdNumWindowGroups
+	{
+	TInt screenNumber;
+	TInt priority;	
+	};
+struct TWsClCmdCreateScreenDevice
+	{
+	TInt screenNumber;	
+	TUint clientScreenDevicePointer;
+	};
+struct TWsClCmdZThresholdPair
+	{
+	inline TWsClCmdZThresholdPair(const TInt aEnterThreshold, const TInt aExitThreshold);
+	TInt enterThreshold;
+	TInt exitThreshold;
+	};
+typedef TRequestStatus *RqStatPtr;
+union TWsClCmdUnion
+	{
+	const TAny *any;
+	const TAny **pAny;
+	const TInt *Int;
+	const TUint *UInt;
+	const TBool *Bool;
+	const TUid *Uid;
+	const TPointerCursorMode *Mode;
+	const TXYInputType *XyInput;
+	const TPoint *Point;
+	const TRgb *rgb;
+	const RqStatPtr *RequestStatus;
+	const TRawEvent *RawEvent;
+	const TKeyEvent *KeyEvent;
+	const RWsSession::TComputeMode *ComputeMode;
+	const RWsSession::TLoggingCommand *LogCommand;
+	const TWsClCmdCreateWindow *CreateWindow;
+	const TWsClCmdCreateWindowGroup *CreateWindowGroup;
+	const TWsClCmdLoadAnimDll *LoadAnimDll;
+	const TWsClCmdCreatePointerCursor *CreatePointerCursor;
+	const TWsClCmdCustomTextCursorData *CustomTextCursorData;
+	const TWsClCmdCreateSprite *CreateSprite;
+	const TWsClCmdCreateBitmap *CreateBitmap;
+	const TWsClCmdSetHotKey *SetHotKey;
+	const TWsClCmdWindowGroupList *WindowGroupList;
+	const TWsClCmdSetWindowGroupOrdinalPosition *SetWindowGroupOrdinalPosition;
+	const TWsClCmdSetKeyboardRepeatRate *SetKeyboardRepeatRate;
+	const TWsClCmdHeapSetFail *HeapSetFail; 
+	const TWsClCmdSetDoubleClick *SetDoubleClick;
+	const TWsClCmdSetSystemPointerCursor *SetSystemPointerCursor;
+	const TWsClCmdSendEventToWindowGroup *SendEventToWindowGroup;
+	const TWsClCmdSendMessageToWindowGroup *SendMessageToWindowGroup;
+	const TWsClCmdFetchMessage* FetchMessage;
+	const TWsClCmdFindWindowGroupIdentifier *FindWindowGroupIdentifier;
+	const TWsClCmdFindWindowGroupIdentifierThread *FindWindowGroupIdentifierThread;
+	const TWsClCmdGetWindowGroupNameFromIdentifier *GetWindowGroupNameFromIdentifier;
+	const TWsClCmdOffEventsToShell *OffEventsToShell;
+	const TWsClCmdSetModifierState *SetModifierState;
+	const TWsClCmdSetPointerCursorArea *SetPointerCursorArea;
+	const TWsClCmdSetSystemFaded *SetSystemFaded;
+	const TWsClCmdCreateGraphic* CreateGraphic;
+	const TWsClCmdGdSendMessage* GraphicSendMessage;
+	const TWsClCmdGdGetId* GetGraphicId;
+	const TWsClCmdDebugInfo* DebugInfo;
+	const TWsClCmdSurfaceRegister* SurfaceRegister;
+	const TWsClCmdNumWindowGroups *NumWinGroups;
+	const TWsClCmdCreateScreenDevice *CreateScreenDevice;
+	const TWsClCmdZThresholdPair *ZThresholdPair;
+	const TWsClCmdCreateDrawableSource* CreateDrawableSource;
+	};
+
+// Window command structures
+
+struct TWsWinCmdSetExtent
+	{
+	inline TWsWinCmdSetExtent(const TPoint &aPos,const TSize &aSize);
+	TPoint pos;
+	TSize size;
+	};
+struct TWsWinCmdOrdinalPos
+	{
+	TInt pos;
+	TInt ordinalPriority;
+	};
+struct TWsWinCmdScroll
+	{
+	inline TWsWinCmdScroll(const TRect &aClip,const TPoint &aOffset,const TRect &aRect);
+	TRect clip;
+	TPoint offset;
+	TRect rect;
+	};
+struct TWsWinCmdCaptureKey
+	{
+	TUint modifiers;
+	TUint modifierMask;
+	TUint key;
+	TInt priority;
+	};
+struct TWsWinCmdCaptureLongKey
+	{
+	inline TWsWinCmdCaptureLongKey();
+	inline TWsWinCmdCaptureLongKey(TUint aModifiers,TUint aModifierMask,TUint aInputKey,TUint aOutputKey
+																	,TTimeIntervalMicroSeconds32 aDelay,TInt aPriority,TUint aFlags);
+	TUint modifiers;
+	TUint modifierMask;
+	TUint inputKey;
+	TUint outputKey;
+	TTimeIntervalMicroSeconds32 delay;
+	TInt priority;
+	TUint flags;
+	};
+struct TWsWinCmdPriorityKey
+	{
+	TUint modifiers;
+	TUint modifierMask;
+	TUint keycode;
+	};
+struct TWsWinCmdSetTextCursor
+	{
+	inline TWsWinCmdSetTextCursor(TUint32 aWindow, const TPoint &aPos, const TTextCursor &aCursor, const TRect &aRect);
+	inline TWsWinCmdSetTextCursor(TUint32 aWindow, const TPoint &aPos, const TTextCursor &aCursor);
+	TUint32 window;
+	TPoint pos;
+	TTextCursor cursor;
+	TRect rect;
+	};
+struct TWsWinCmdPointerFilter
+	{
+	TUint32 mask;
+	TUint32 flags;
+	};
+struct TWsWinCmdSetCornerType
+	{
+	TCornerType type;
+	TInt flags;
+	};
+struct TWsWinCmdSetShape
+	{
+	TPtrC8 *ptr;
+	TInt count;
+	};
+struct TWsWinCmdUpdateScreen
+	{
+	TPtrC8 *ptr;
+	TInt count;
+	};
+struct TWsWinCmdGrabControl
+	{
+	enum TWsWinCmdGrabControlFlags
+		{
+		ENone=0,
+		ESendUpEvent=0x2,
+		ESendReply=0x4
+		};
+	inline TWsWinCmdGrabControl(const TUint aGrabControlFlags);
+	inline TWsWinCmdGrabControl(const TUint8 aPointerNumber, const TUint aGrabControlFlags);
+	inline TBool CheckFlags(TUint aFlags) const;
+	inline TBool HasPointerNumber() const;
+	
+	// integer to ensure passed in unsigned TUint8 can't get confused with
+	// signed negative values that are used internally.
+	// The signed int member will be "promoted" to unsigned for the assignement in the constructor.
+	TInt pointerNumber;
+	TUint flags;	
+	};
+
+struct TWsWinCmdCancelPointerRepeatEventRequest
+	{
+	enum TCancelRepeatFlags
+		{
+		ECancelRepeatFlagsNone=0,
+		ECancelRepeatFlagsSendReply=0x2
+		};	
+	
+	inline TWsWinCmdCancelPointerRepeatEventRequest();
+	inline TWsWinCmdCancelPointerRepeatEventRequest(const TUint8 aPointerNumber);	
+	inline TWsWinCmdCancelPointerRepeatEventRequest(const TUint8 aPointerNumber, const TUint aFlags);
+	inline TBool HasPointerNumber() const;
+	TInt pointerNumber;
+	TUint flags;
+	};
+
+struct TWsWinCmdRequestPointerRepeatEvent
+	{
+	enum TRepeatFlags
+		{
+		ERepeatFlagsNone=0,
+		ERepeatFlagsSendReply=0x2
+		};
+	
+	inline TWsWinCmdRequestPointerRepeatEvent(const TTimeIntervalMicroSeconds32 &aTime,const TRect &aRect);
+	inline TWsWinCmdRequestPointerRepeatEvent(const TTimeIntervalMicroSeconds32 &aTime,const TRect &aRect,const TUint8 aPointerNumber, const TUint aRepeatFlags);
+	inline TBool HasPointerNumber() const;
+	TTimeIntervalMicroSeconds32 time;
+	TRect rect;
+	TInt pointerNumber;
+	TUint repeatFlags;
+	};
+struct TWsWinCmdAllocPointerMoveBuffer
+	{
+	TInt maxNumPoints;
+	TInt flags;
+	};
+struct TWsWinCmdSetName
+	{
+	TInt length;
+	const TDesC *ptr;
+	};
+struct TWsWinCmdAddKeyRect
+	{
+	inline TWsWinCmdAddKeyRect(const TRect &aRect,TInt aScanCodea, TBool aActivatedByPointerSwitchOn);
+	TRect rect;
+	TInt scanCode;
+	TBool activatedByPointerSwitchOn;
+	};
+struct TWsWinOpSetBackgroundSurfaceConfig;
+#if defined(SYMBIAN_GRAPHICS_GCE)
+struct TWsWinOpSetBackgroundSurfaceConfig
+	{
+	inline TWsWinOpSetBackgroundSurfaceConfig(const TSurfaceConfiguration& aConfiguration, TBool aTriggerRedraw);
+	TSurfaceConfiguration surfaceConfig;
+	TBool triggerRedraw;
+	};
+#endif
+struct TWsWinCmdEnableModifierChangedEvents
+	{
+	inline TWsWinCmdEnableModifierChangedEvents(TUint aModifierMask, TEventControl aCircumstances);
+	TInt modifierMask;
+	TEventControl circumstances;
+	};
+struct TWsWinCmdSetFaded
+	{
+	enum {EFaded=0x01,EIncludeChildren=0x02,EUseDefaultMap=0x04};
+	inline TWsWinCmdSetFaded(TBool aFaded, TBool aIncludeChildren
+														,TBool aUseDefaults=ETrue,TUint8 aBlackMap=0,TUint8 aWhiteMap=0);
+	inline TBool Faded() const;
+	inline TBool IncludeChildren() const;
+	inline TBool UseDefaultMap() const;
+	inline void GetFadingParams(TUint8& aBlackMap,TUint8& aWhiteMap) const;
+	TUint params;
+	};
+
+union TWsWinCmdUnion
+	{
+	const TAny *any;
+	const TAny **pAny;
+	const TRect *rect;
+	const TPoint *pos;
+	const TSize *size;
+	const TInt *Int;
+	const TUint *UInt;
+	const TBool *Bool;
+	const TEventControl *EventControl;
+	const TRgb *rgb;
+	const TDisplayMode *DisplayMode;
+	const TPasswordMode *PasswordMode;
+	const TRawEvent *RawEvent;
+	const TSurfaceConfiguration *SurfaceConfiguration;
+	const TWsWinCmdSetExtent *SetEx;
+	const TWsWinCmdOrdinalPos *OrdinalPos;
+	const TWsWinCmdScroll *ScrollRect;
+	const TWsWinCmdCaptureKey *CaptureKey;
+	const TWsWinCmdCaptureLongKey *CaptureLongKey;
+	const TWsWinCmdPriorityKey *PriorityKey;
+	const TWsWinCmdSetTextCursor *SetTextCursor;
+	const TWsWinCmdPointerFilter *PointerFilter;
+	const TWsWinCmdSetCornerType *SetCornerType;
+	const TWsWinCmdSetShape *SetShape;
+	const TWsWinCmdUpdateScreen *UpdateScreen;
+	const TWsWinCmdRequestPointerRepeatEvent *RequestPointerRepeatEvent;
+	const TWsWinCmdAllocPointerMoveBuffer *AllocPointerMoveBuffer;
+	const TWsWinCmdSetName *SetName;
+	const TWsWinCmdAddKeyRect *AddKeyRect;
+	const TWsWinOpSetBackgroundSurfaceConfig *SurfaceConfigurationAndTrigger;
+	const TWsWinCmdEnableModifierChangedEvents *EnableModifierChangedEvents;
+	const TWsWinCmdSetFaded *SetFaded;
+	const TSurfaceId *Surface;
+	const TWsWinCmdCancelPointerRepeatEventRequest *CancelPointerRepeatEventRequest;
+	const TWsWinCmdGrabControl *GrabControl;
+	};
+
+// GC command structures
+
+struct TWsGcLargeStruct
+	{
+	TInt int1;
+	TInt int2;
+	TInt int3;
+	TInt int4;
+	TInt int5;
+	TInt int6;
+	TInt int7;
+	TInt int8;
+	TInt int9;
+	TBool tbool;
+	CGraphicsContext::TTextAlign align;
+	TAny* ptr;
+	};
+struct TWsGcCmdSetClippingRegion
+	{
+	TPtrC8 *ptr;
+	TInt count;
+	};
+struct TWsGcCmdSetJustification
+	{
+	TInt excessWidth;
+	TInt numGaps;
+	};
+struct TWsGcCmdDrawText
+	{
+	inline TWsGcCmdDrawText(const TPoint &aPos, TInt aLength);
+	TPoint pos;
+	TInt length;
+	};
+struct TWsGcCmdDrawTextPtr
+	{
+	TPoint pos;
+	TDesC *text;
+	};
+
+
+struct TWsGcCmdDrawTextVertical
+	{
+	inline TWsGcCmdDrawTextVertical(const TPoint &aPos, TInt aLength, TBool aUp);
+	TPoint pos;
+	TInt length;
+	TBool up;
+	};
+
+struct TWsGcCmdDrawTextVerticalPtr
+	{
+	TPoint pos;
+	TBool up;
+	TDesC *text;
+	inline TWsGcCmdDrawTextVerticalPtr(const TDesC *aDesc, const TPoint& aPos, const TBool aUp);
+	};
+
+struct TWsGcCmdDrawTextLocal
+	{
+	inline TWsGcCmdDrawTextLocal(const TPoint &aPos,const TDesC *aDesc);
+	TPoint pos;
+	const TDesC *desc;
+	};
+
+struct TWsGcCmdBoxTextOptimised1
+	{
+	inline TWsGcCmdBoxTextOptimised1(const TRect &aRect,TInt aBaselineOffset,TInt alength);
+	TRect box;
+	TInt baselineOffset;
+	TInt length;
+	};
+struct TWsGcCmdBoxTextOptimised2
+	{
+	inline TWsGcCmdBoxTextOptimised2(const TRect &aRect,TInt aBaselineOffset,CGraphicsContext::TTextAlign aHoriz,TInt aLeftMrg,TInt aLength);
+	TRect box;
+	TInt baselineOffset;
+	CGraphicsContext::TTextAlign horiz;
+	TInt leftMrg;
+	TInt length;
+	};
+
+struct TWsGcCmdBoxText
+	{
+	inline TWsGcCmdBoxText(const TRect &aRect,TInt aBaselineOffset,CGraphicsContext::TTextAlign aHoriz,TInt aLeftMrg,TInt aLength,TInt aWidth);
+	TRect box;
+	TInt baselineOffset;
+	CGraphicsContext::TTextAlign horiz;
+	TInt leftMrg;
+	TInt length;
+	TInt width;
+	};
+
+struct TWsGcCmdBoxTextPtr
+	{
+	TRect box;
+	TInt baselineOffset;
+	CGraphicsContext::TTextAlign horiz;
+	TInt leftMrg;
+	TInt width;
+	TDesC *text;
+	};
+
+struct TWsGcCmdBoxTextVertical
+	{
+	inline TWsGcCmdBoxTextVertical(const TRect& aBox);
+	TRect box;
+	TInt baselineOffset;
+	TBool up;
+	CGraphicsContext::TTextAlign vert;
+	TInt margin;
+	TInt length;
+	TInt width;
+	};
+
+struct TWsGcCmdBoxTextVerticalPtr
+	{
+	TRect box;
+	TInt baselineOffset;
+	TBool up;
+	CGraphicsContext::TTextAlign vert;
+	TInt margin;
+	TInt width;
+	TDesC *text;
+	};
+
+struct TWsGcCmdBoxTextLocal
+	{
+	inline TWsGcCmdBoxTextLocal(const TRect &aBox);
+	TRect box;
+	TInt baselineOffset;
+	CGraphicsContext::TTextAlign horiz;
+	TInt leftMrg;
+	const TDesC *desc;
+	};
+
+struct TWsGcCmdDrawLine
+	{
+	inline TWsGcCmdDrawLine(const TPoint &aPnt1,const TPoint &aPnt2);
+	TPoint pnt1;
+	TPoint pnt2;
+	};
+struct TWsGcCmdDrawPolyLine
+	{
+	TInt numPoints;
+	TInt more;
+	TPoint last;
+	};
+struct TWsGcCmdDrawArcOrPie
+	{
+	inline TWsGcCmdDrawArcOrPie(const TRect &aRect,const TPoint &aStart,const TPoint &aEnd);
+	TRect rect;
+	TPoint start;
+	TPoint end;
+	};
+struct TWsGcCmdDrawRoundRect
+	{
+	inline TWsGcCmdDrawRoundRect(const TRect &aRect,const TSize &aEllipse);
+	TRect rect;
+	TSize ellipse;
+	};
+struct TWsGcCmdDrawPolygon
+	{
+	TInt numPoints;
+	CGraphicsContext::TFillRule fillRule;
+	};
+struct TWsGcCmdStartSegmentedDrawPolygon
+	{
+	TInt totalNumPoints;
+	};
+struct TWsGcCmdSegmentedDrawPolygonData
+	{
+	const TDesC8 *points;
+	TInt index;
+	TInt numPoints;
+	};
+struct TWsGcCmdDrawSegmentedPolygon
+	{
+	CGraphicsContext::TFillRule fillRule;
+	};
+struct TWsGcCmdDrawPolygonLocal
+	{
+	const CArrayFix<TPoint> *pointList;
+	CGraphicsContext::TFillRule fillRule;
+	};
+struct TWsGcCmdDrawPolygonLocalBufLen
+	{
+	inline TWsGcCmdDrawPolygonLocalBufLen(const TPoint *aPointList,TInt aNumPoints, CGraphicsContext::TFillRule aFillRule);
+	const TPoint *points;
+	TInt length;
+	CGraphicsContext::TFillRule fillRule;
+	};
+struct TWsGcCmdDrawPolyLineLocalBufLen
+	{
+	inline TWsGcCmdDrawPolyLineLocalBufLen(const TPoint *aPointList,TInt aNumPoints);
+	const TPoint *points;
+	TInt length;
+	};
+struct TWsGcCmdDrawBitmap
+	{
+	inline TWsGcCmdDrawBitmap(const TPoint &aPoint,TInt aHandle);
+	TInt handle;
+	TPoint pos;
+	};
+struct TWsGcCmdDrawBitmap2
+	{
+	inline TWsGcCmdDrawBitmap2(const TRect &aRect,TInt aHandle);
+	TInt handle;
+	TRect rect;
+	};
+struct TWsGcCmdDrawBitmap3
+	{
+	inline TWsGcCmdDrawBitmap3(const TRect &aRect,TInt aHandle,const TRect &aSrcRect);
+	TInt handle;
+	TRect rect;
+	TRect srcRect;
+	};
+struct TWsGcCmdDrawBitmapMasked
+	{
+	inline TWsGcCmdDrawBitmapMasked(const TRect &aDestRect,TInt aHandle,const TRect& aSrcRect,TInt aMaskHandle,TBool aInvertMask);
+	TInt iHandle;
+	TInt iMaskHandle;
+	TRect iRect;
+	TRect iSrcRect;
+	TBool iInvertMask;
+	};
+struct TWsGcCmdDrawBitmapLocal
+	{
+	inline TWsGcCmdDrawBitmapLocal(const TPoint &aPos,const CFbsBitmap *aBitmap);
+	const CFbsBitmap *bitmap;
+	TPoint pos;
+	};
+struct TWsGcCmdDrawBitmap2Local
+	{
+	inline TWsGcCmdDrawBitmap2Local(const TRect &aRect,const CFbsBitmap *aBitmap);
+	const CFbsBitmap *bitmap;
+	TRect rect;
+	};
+struct TWsGcCmdDrawBitmap3Local
+	{
+	inline TWsGcCmdDrawBitmap3Local(const TRect &aRect,const CFbsBitmap *aBitmap, const TRect &aSrcRect);
+	const CFbsBitmap *bitmap;
+	TRect rect;
+	TRect srcRect;
+	};
+struct TWsGcCmdDrawBitmapMaskedLocal
+	{
+	inline TWsGcCmdDrawBitmapMaskedLocal(const TRect &aDestRect,const CFbsBitmap* aBitmap,const TRect& aSrcRect,const CFbsBitmap* aMaskBitmap,TBool aInvertMask);
+	const CFbsBitmap* iBitmap;
+	const CFbsBitmap* iMaskBitmap;
+	TRect iRect;
+	TRect iSrcRect;
+	TBool iInvertMask;
+	};
+struct TWsGcCmdCopyRect
+	{
+	inline TWsGcCmdCopyRect(const TPoint &anOffset,const TRect &aRect);
+	TRect rect;		// Must be first
+	TPoint pos;
+	};
+struct TWsGcCmdGdiBlt2
+	{
+	inline TWsGcCmdGdiBlt2(const TPoint &aPoint, TInt aHandle);
+	TInt handle;
+	TPoint pos;
+	};
+struct TWsGcCmdGdiBlt3
+	{
+	inline TWsGcCmdGdiBlt3(const TPoint &aPoint, TInt aHandle, const TRect &aSrcRect);
+	TInt handle;
+	TPoint pos;
+	TRect rect;
+	};
+struct TWsGcCmdGdiBlt2Local
+	{
+	inline TWsGcCmdGdiBlt2Local(const TPoint &aPoint,const CFbsBitmap *aBitmap);
+	const CFbsBitmap *bitmap;
+	TPoint pos;
+	};
+struct TWsGcCmdGdiBlt3Local
+	{
+	inline TWsGcCmdGdiBlt3Local(const TPoint &aDestination,const CFbsBitmap *aBitmap,const TRect &aSource);
+	const CFbsBitmap *bitmap;
+	TPoint pos;
+	TRect rect;
+	};
+struct TWsGcCmdGdiBltMaskedLocal
+	{
+	inline TWsGcCmdGdiBltMaskedLocal(const TPoint& aPoint,const CFbsBitmap* aBitmap,const TRect& aSourceRect,const CFbsBitmap* aMaskBitmap,TBool aInvertMask);
+	const CFbsBitmap *bitmap;
+	const CFbsBitmap *maskBitmap;
+	TBool invertMask;
+	TPoint pos;
+	TRect rect;
+	};
+struct TWsGcCmdUsePatternBrush
+    {
+    TRgb *pdata;
+    TInt width;
+    TInt height;
+    TBool color;
+	};
+struct TWsGcCmdBltMasked
+	{
+	inline TWsGcCmdBltMasked();
+	inline TWsGcCmdBltMasked(const TPoint& aPoint,TInt aBitmap,const TRect& aSourceRect,TInt aMaskBitmap,TBool aInvertMask);
+	TPoint destination;
+	TInt handle;
+	TRect source;
+	TInt maskHandle;
+	TBool invertMask;
+	};
+struct TWsGcCmdAlphaBlendBitmaps
+	{
+	inline TWsGcCmdAlphaBlendBitmaps();
+	inline TWsGcCmdAlphaBlendBitmaps(const TPoint& aPoint, TInt aBitmap,const TRect& aSourceRect,TInt aAlpha,const TPoint& aAlphaPoint);
+	TPoint point;
+	TInt bitmapHandle;
+	TRect source;
+	TInt alphaHandle;
+	TPoint alphaPoint;
+	};
+
+struct TWsGcCmdAlphaBlendBitmapsLocal
+	{
+	inline TWsGcCmdAlphaBlendBitmapsLocal(const TPoint& aPoint, const CFbsBitmap* aBitmap, const TRect& aSourceRect, const CFbsBitmap* aAlpha, const TPoint& aAlphaPoint);
+	TPoint point;
+	const CFbsBitmap *iBitmap;
+	TRect source;
+	const CFbsBitmap *iAlpha;
+	TPoint alphaPoint;
+	};
+	
+struct TWsGcCmdMapColors
+	{
+	inline TWsGcCmdMapColors(const TRect &aRect, TInt aNumPairs, TBool aMapForwards);
+	TRect rect;
+	TInt numPairs;
+	TBool mapForwards;
+	};
+	
+struct TWsGcCmdMapColorsLocal
+	{
+	inline TWsGcCmdMapColorsLocal(const TRect &aRect, const TRgb* aColors, TInt aNumPairs, TBool aMapForwards);
+	TRect rect;
+	const TRgb *colors;
+	TInt numPairs;
+	TBool mapForwards;
+	};
+	
+struct TWsGcCmdDrawWsGraphic
+	{
+	inline TWsGcCmdDrawWsGraphic(const TWsGraphicId& aId,const TRect& aRect);
+	TUint iFlags; // TWsGraphicBitFlags
+	TInt iId;
+	TRect iRect;
+	TInt iDataLen;
+	};
+struct TWsGcCmdDrawTextInContext
+	{
+	inline TWsGcCmdDrawTextInContext(const TPoint &aPos, TInt aLength, TInt aStart, TInt aEnd);
+	TPoint pos;
+	TInt length;
+	TInt start;
+	TInt end;
+	};
+struct TWsGcCmdDrawTextInContextPtr
+	{
+	TPoint pos;
+	TDesC *text;
+	TInt start;
+	TInt end;
+	};
+struct TWsGcCmdDrawTextInContextVertical
+	{
+	inline TWsGcCmdDrawTextInContextVertical(const TPoint &aPos, TInt aLength, TBool aUp, TInt aStart, TInt aEnd);
+	TPoint pos;
+	TInt length;
+	TBool up;
+	TInt start;
+	TInt end;
+	};
+struct TWsGcCmdDrawTextInContextVerticalPtr
+	{
+	TPoint pos;
+	TBool up;
+	TDesC *text;
+	TInt start;
+	TInt end;
+	inline TWsGcCmdDrawTextInContextVerticalPtr(const TDesC *aDesc, const TPoint& aPos, const TBool aUp, const TInt aStart, const TInt aEnd);
+	};
+struct TWsGcCmdDrawTextInContextLocal
+	{
+	inline TWsGcCmdDrawTextInContextLocal(const TPoint &aPos,const TDesC *aDesc,const TInt aStart,const TInt aEnd);
+	TPoint pos;
+	const TDesC *desc;
+	TInt start;
+	TInt end;
+	};
+struct TWsGcCmdBoxTextInContextOptimised1
+	{
+	inline TWsGcCmdBoxTextInContextOptimised1(const TRect &aRect,TInt aBaselineOffset,TInt alength, TInt aStart, TInt aEnd);
+	TRect box;
+	TInt baselineOffset;
+	TInt length;
+	TInt start;
+	TInt end;
+	};
+struct TWsGcCmdBoxTextInContextOptimised2
+	{
+	inline TWsGcCmdBoxTextInContextOptimised2(const TRect &aRect,TInt aBaselineOffset,CGraphicsContext::TTextAlign aHoriz,TInt aLeftMrg,TInt aLength, TInt aStart, TInt aEnd);
+	TRect box;
+	TInt baselineOffset;
+	CGraphicsContext::TTextAlign horiz;
+	TInt leftMrg;
+	TInt length;
+	TInt start;
+	TInt end;
+	};
+struct TWsGcCmdBoxTextInContext
+	{
+	inline TWsGcCmdBoxTextInContext(const TRect &aRect,TInt aBaselineOffset,CGraphicsContext::TTextAlign aHoriz,TInt aLeftMrg,TInt aLength,TInt aWidth, TInt aStart, TInt aEnd);
+	TRect box;
+	TInt baselineOffset;
+	CGraphicsContext::TTextAlign horiz;
+	TInt leftMrg;
+	TInt length;
+	TInt width;
+	TInt start;
+	TInt end;
+	};
+struct TWsGcCmdBoxTextInContextPtr
+	{
+	TRect box;
+	TInt baselineOffset;
+	CGraphicsContext::TTextAlign horiz;
+	TInt leftMrg;
+	TInt width;
+	TDesC *text;
+	TInt start;
+	TInt end;
+	};
+struct TWsGcCmdBoxTextInContextVertical
+	{
+	inline TWsGcCmdBoxTextInContextVertical(const TRect& aBox);
+	TRect box;
+	TInt baselineOffset;
+	TBool up;
+	CGraphicsContext::TTextAlign vert;
+	TInt margin;
+	TInt length;
+	TInt width;
+	TInt start;
+	TInt end;
+	};
+struct TWsGcCmdBoxTextInContextVerticalPtr
+	{
+	TRect box;
+	TInt baselineOffset;
+	TBool up;
+	CGraphicsContext::TTextAlign vert;
+	TInt margin;
+	TInt width;
+	TInt start;
+	TInt end;
+	TDesC *text;
+	};
+struct TWsGcCmdBoxTextInContextLocal
+	{
+	inline TWsGcCmdBoxTextInContextLocal(const TRect &aBox,TInt aStart,TInt aEnd);
+	TRect box;
+	TInt baselineOffset;
+	CGraphicsContext::TTextAlign horiz;
+	TInt leftMrg;
+	TInt start;
+	TInt end;
+	const TDesC *desc;
+	};
+struct TWsGcCmdDrawResourceToPos
+	{
+	inline TWsGcCmdDrawResourceToPos(TInt aWsHandle, const TPoint &aPos, CWindowGc::TGraphicsRotation aRotation);
+	TInt wsHandle;
+	TPoint pos;
+	CWindowGc::TGraphicsRotation rotation;
+	};
+struct TWsGcCmdDrawResourceToRect
+	{
+	inline TWsGcCmdDrawResourceToRect(TInt aWsHandle, const TRect &aRect, CWindowGc::TGraphicsRotation aRotation);
+	TInt wsHandle;
+	TRect rect;
+	CWindowGc::TGraphicsRotation rotation;
+	};
+struct TWsGcCmdDrawResourceFromRectToRect
+	{
+	inline TWsGcCmdDrawResourceFromRectToRect(TInt aWsHandle, const TRect &aRectDest, const TRect &aRectSrc, CWindowGc::TGraphicsRotation aRotation);
+	TInt wsHandle;
+	TRect rectDest;
+	TRect rectSrc;
+	CWindowGc::TGraphicsRotation rotation;
+	};
+struct TWsGcCmdDrawResourceWithData
+	{
+	inline TWsGcCmdDrawResourceWithData(TInt aWsHandle, const TRect &aRect, const TDesC8* aDesc);
+	TInt wsHandle;
+	TRect rect;
+	const TDesC8* desc;
+	};
+
+union TWsGcCmdUnion
+	{
+	const TAny *any;
+	const TAny **pAny;
+	const TRect *Rect;
+	const TUint *UInt;
+	const TInt *Int;
+	const TInt *handle;
+	const TBool *Bool;
+	const TRgb *rgb;
+	const TPoint *Point;
+	const TSize *Size;
+	const TFontUnderline *SetUnderlineStyle;
+	const TFontStrikethrough *SetStrikethroughStyle;
+	const TWsGcCmdDrawText *DrawText;
+	const TWsGcCmdDrawTextInContext *DrawTextInContext;
+	const TWsGcCmdDrawTextVertical *DrawTextVertical;
+	const TWsGcCmdDrawTextInContextVertical *DrawTextInContextVertical;
+	const TWsGcCmdDrawLine *DrawLine;
+	const TWsGcCmdDrawPolyLine *PolyLine;
+	const TWsGcCmdStartSegmentedDrawPolygon *StartSegmentedDrawPolygon;
+	const TWsGcCmdSegmentedDrawPolygonData *SegmentedDrawPolygonData;
+	const TWsGcCmdDrawSegmentedPolygon *DrawSegmentedPolygon;
+	const TWsGcCmdDrawPolygonLocal *DrawPolygonLocal;
+	const TWsGcCmdDrawPolygonLocalBufLen *DrawPolygonLocalBufLen;
+	const TWsGcCmdDrawPolyLineLocalBufLen *DrawPolyLineLocalBufLen;
+	const TWsGcCmdDrawArcOrPie *ArcOrPie;
+	const TWsGcCmdDrawRoundRect *RoundRect;
+	const TWsGcCmdDrawPolygon *Polygon;
+	const TWsGcCmdDrawBitmap *Bitmap;
+	const TWsGcCmdDrawBitmap2 *Bitmap2;
+	const TWsGcCmdDrawBitmap3 *Bitmap3;
+	const TWsGcCmdDrawBitmapMasked* iBitmapMasked;
+	const TWsGcCmdCopyRect *CopyRect;
+	const TWsGcCmdGdiBlt2 *GdiBlt2;
+	const TWsGcCmdGdiBlt3 *GdiBlt3;
+	const TWsGcCmdUsePatternBrush *UsePatternBrush;
+	const TWsGcCmdBltMasked *GdiBltMasked;
+	const TWsGcCmdSetClippingRegion *SetClippingRegion;
+	const TWsGcCmdBoxText *BoxText;
+	const TWsGcCmdBoxTextInContext *BoxTextInContext;
+	const TWsGcCmdBoxTextOptimised1 *BoxTextO1;
+	const TWsGcCmdBoxTextOptimised2 *BoxTextO2;
+	const TWsGcCmdBoxTextInContextOptimised1 *BoxTextInContextO1;
+	const TWsGcCmdBoxTextInContextOptimised2 *BoxTextInContextO2;
+	const TWsGcCmdDrawTextLocal *DrawTextLocal;
+	const TWsGcCmdDrawTextInContextLocal *DrawTextInContextLocal;
+	const TWsGcCmdBoxTextVertical *DrawBoxTextVertical;
+	const TWsGcCmdBoxTextInContextVertical *DrawBoxTextInContextVertical;
+	const TWsGcCmdBoxTextLocal *BoxTextLocal;
+	const TWsGcCmdBoxTextInContextLocal *BoxTextInContextLocal;
+	const TWsGcCmdGdiBlt2Local *GdiBlt2Local;
+	const TWsGcCmdGdiBlt3Local *GdiBlt3Local;
+	const TWsGcCmdGdiBltMaskedLocal *GdiBltMaskedLocal;
+	const TWsGcCmdDrawBitmapLocal *BitmapLocal;
+	const TWsGcCmdDrawBitmap2Local *Bitmap2Local;
+	const TWsGcCmdDrawBitmap3Local *Bitmap3Local;
+	const TWsGcCmdDrawBitmapMaskedLocal* iBitmapMaskedLocal;
+	const CArrayFix<TPoint> *PointList;
+	const TWsGcCmdSetJustification *SetJustification;
+	const TWsGcCmdMapColors *MapColors;
+	TWsGcCmdDrawTextPtr *DrawTextPtr;
+	TWsGcCmdDrawTextVerticalPtr *DrawTextVerticalPtr;
+	TWsGcCmdDrawTextInContextVerticalPtr *DrawTextInContextVerticalPtr;
+	TWsGcCmdBoxTextPtr *DrawBoxTextPtr;
+	TWsGcCmdBoxTextInContextPtr *DrawBoxTextInContextPtr;
+	TWsGcCmdBoxTextVerticalPtr *DrawBoxTextVerticalPtr;
+	TWsGcCmdBoxTextInContextVerticalPtr *DrawBoxTextInContextVerticalPtr;
+	TWsGcCmdDrawTextInContextPtr *DrawTextInContextPtr;
+	const TWsGcLargeStruct *LargeStruct;
+	const TWsGcCmdAlphaBlendBitmaps *AlphaBlendBitmaps;
+	const TWsGcCmdAlphaBlendBitmapsLocal *AlphaBlendBitmapsLocal;
+	const TWsGcCmdMapColorsLocal *MapColorsLocal;
+	const TWsGcCmdDrawWsGraphic* WsGraphic;
+	const TWsGcCmdDrawResourceToPos* DrawWsResourceToPos;
+	const TWsGcCmdDrawResourceToRect* DrawWsResourceToRect;
+	const TWsGcCmdDrawResourceFromRectToRect* DrawWsResourceFromRectToRect;
+	const TWsGcCmdDrawResourceWithData* DrawWsResourceWithData;
+	};
+
+struct TWsSdCmdSetScreenRotation
+	{
+	inline TWsSdCmdSetScreenRotation(TInt aMode, CFbsBitGc::TGraphicsOrientation aRotation);
+	TInt mode;
+	CFbsBitGc::TGraphicsOrientation rotation;
+	};
+struct TWsSdCmdGetScanLine
+	{
+	inline TWsSdCmdGetScanLine(const TPoint &aPos, TInt aLen, TDisplayMode aDispMode);
+	TPoint pos;
+	TInt len;
+	TDisplayMode dispMode;
+	};
+struct TWsSdCmdRectCompare
+	{
+	inline TWsSdCmdRectCompare(const TRect &aRect1,const TRect &aRect2,TUint aFlags);
+	TRect rect1;
+	TRect rect2;
+	TUint flags;
+	};
+struct TWsSdCmdCopyScreenToBitmap
+	{
+	inline TWsSdCmdCopyScreenToBitmap(TInt aHandle);
+	TInt handle;
+	};
+struct TWsSdCmdCopyScreenToBitmap2
+	{
+	inline TWsSdCmdCopyScreenToBitmap2(const TRect &aRect, TInt aHandle);
+	TRect rect;
+	TInt handle;
+	};
+struct TWsSdCmdSetPalette
+	{
+	inline TWsSdCmdSetPalette(TPtr8& aPtr);
+	TPtr8* ptr;
+	TInt length;
+	};
+struct TWsSdCmdMapCoordinates
+	{
+	inline TWsSdCmdMapCoordinates(const TRect &aSource, TCoordinateSpace aSourceSpace, TCoordinateSpace aTargetSpace);
+	TRect sourceRect;
+	TCoordinateSpace sourceSpace;
+	TCoordinateSpace targetSpace;
+	};
+union TWsSdCmdUnion
+	{
+	const TAny *any;
+	const TAny **pAny;
+	const TUint *UInt;
+	const TInt *Int;
+	const TPoint *Point;
+	const TPixelsTwipsAndRotation *PixelsTwipsAndRotation;
+	const TPixelsAndRotation *PixelsAndRotation;
+	const TWsSdCmdSetScreenRotation *SetScreenRotation;
+	const TWsSdCmdGetScanLine *GetScanLine;
+	const TWsSdCmdRectCompare *RectCompare;
+	const TWsSdCmdCopyScreenToBitmap *CopyScreenToBitmap;
+	const TWsSdCmdCopyScreenToBitmap2 *CopyScreenToBitmap2;
+	const TWsSdCmdSetPalette *SetPalette;
+	const TSizeMode *ScreenSizeMode;
+	const TDisplayConfiguration *DisplayConfiguration;
+	const TWsSdCmdMapCoordinates *MapCoordinates;
+	};
+
+union TWsAnimDllCmdUnion 
+	{
+	const TAny *any;
+	const TUint *UInt;
+	};
+
+struct TWsSpriteCmdUpdateMember
+	{
+	inline TWsSpriteCmdUpdateMember(TInt aIndex,const TSpriteMember &aData);
+	TInt index;
+	TCmdSpriteMember data;
+	};
+union TWsSpriteCmdUnion
+	{
+	const TAny *any;
+	const TPoint *Point;
+	const TCmdSpriteMember *SpriteMember;
+	const TWsSpriteCmdUpdateMember *UpdateMember;
+	};
+
+struct TWsDirectCmdRequestReply
+	{
+	inline TWsDirectCmdRequestReply();
+	inline TWsDirectCmdRequestReply(TThreadId aId,TRequestStatus* aRequest);
+	TThreadId id;
+	TRequestStatus* request;
+	};
+union TWsDirectCmdUnion
+	{
+	const TAny *any;
+	const TInt *Int;
+	};
+
+union TWsClickCmdUnion
+	{
+	const TAny *any;
+	const TInt *Int;
+	const TBool *Bool;
+	};
+
+// Client side Panics and asserts
+
+enum TW32Assert	// used for w32 code errors
+	{
+	EW32AssertOddLengthData,
+	EW32AssertNotImplemented,
+	EW32AssertIllegalOpcode,
+	EW32AssertDirectMisuse,
+	EW32AssertBufferLogic,
+	EW32AssertUnexpectedOutOfRangePointerNumber, // Used for an out-of-range pointer number error within the old API's which doesn't take a pointer number.
+	EW32AssertWindowSizeCacheFailure,
+	};
+
+enum TW32Panic // used for application errors
+	{
+	EW32PanicReConnect,		//An attempt was made to reconnect to the window server using RWsSession::Connect() without having closed the existing one first
+	EW32PanicWindowAlreadyClosed,		//Not used
+	EW32PanicGcAlreadyClosed,		//Not used
+	EW32PanicPaletteAlreadyClosed,		//Not used
+	EW32PanicMapColorsTooManyPairs,		//Raised by CWindowGc::MapColors() when its aNumPairs argument has a value greater than 16.
+	EW32PanicDataExceedsBufferLength,		//A single string is too long to fit into the buffer.
+	EW32PanicNullPalette,		//CWsScreenDevice::SetCustomPalette() was called with a NULL pointer.
+	EW32PanicSilentFail,		//The caller would not know that the function was not successful
+	EW32PanicDirectMisuse,		//A direct screen access function is being called out of turn
+	EW32PanicInvalidRegion,        //An attempt to pass an invalid region to window server
+	EW32PanicUsingReservedIpcSlot,		//Raised when the Client is trying to use a wrong IpcSlot. The first slot if raised by: RAnim::CommandReply or RAnimDll::Construct. Either the first or the second if raised by RAnim::AsyncCommandReply
+	EW32PanicNullArray,        //A Function has been called with a NULL array pointer when it should not be
+	EW32PanicGraphicAlreadyConstructed,        //Not used
+	EW32PanicGraphicOrphaned,		//The CWsGraphic::CManager's RPointerArray<CWsGraphic> has still pointers to CWsGraphic left inside when it should be empty
+	EW32PanicGraphicInternal,		//Raised when one of the CWsGraphic::CManager's member has an inconsistent value (i.e. NULL when it should not be and viceversa)
+	EW32PanicGraphicBadBuffer,		//Raised if RWsGraphicMsgBuf has been passed an out of bounds index or an incorret type message
+	EW32PanicGraphicNullData,		//Raised when trying to send an empty TWsClCmdGdSendMessage
+	EW32PanicFunctionNotSupported,	//Operation not supported in the current OS distribution
+	EW32PanicInvalidParameter,		// Raised when an invalid parameter is passed to a function 
+	EW32PanicGraphicDoubleConstruction,		//Raised when Construct() is called on an already constructed client-side object
+	EW32PanicBadClientInterface,	//Debug: Trying to use an interface that is not initialised 
+	EW32PanicSizeNotExpected,		//Debug: Returned data does not match expected sizes or granularity
+	};
+
+enum WservShutdown
+	{EWservShutdownCheck=0x13572468};	// Parameter to EWservMessShutdown to stop accidental shutdowns
+
+enum WservMessages
+	{
+	EWservMessCommandBuffer,
+	EWservMessShutdown,
+	EWservMessInit,
+	EWservMessFinish,	
+	EWservMessSyncMsgBuf,
+	EWservMessAsynchronousService=0x010000,
+	EWservMessAnimDllAsyncCommand=0x100000,
+	};
+
+enum WH_HANDLES
+	{
+	WS_HANDLE_ROOT_WINDOW,
+	WS_HANDLE_CLIENT,
+	WS_HANDLE_WINDOW,
+	WS_HANDLE_GROUP_WINDOW,
+	WS_HANDLE_GC,
+	WS_HANDLE_CAPTURE_KEY,
+	WS_HANDLE_ANIM_DLL,
+	WS_HANDLE_SCREEN_DEVICE,
+	WS_HANDLE_SPRITE,
+	WS_HANDLE_POINTER_CURSOR,
+	WS_HANDLE_BITMAP,
+	WS_HANDLE_DIRECT,
+	WS_HANDLE_CLICK,
+	WS_HANDLE_TEXT_CURSOR,
+	WS_HANDLE_GRAPHIC_DRAWER,
+	WS_HANDLE_DRAWABLE_SOURCE,
+	WS_HANDLE_CAPTURE_KEY_UPDOWNS,
+	WS_HANDLE_CAPTURE_LONG_KEY,
+	};
+
+enum TClientPanic
+	{
+	EWservNoPanic=0,						// Dummy Value used to indicate no panic
+	EWservPanicOpcode=1,					// Out of range opcode
+	EWservPanicBuffer=2,					// Invalid command buffer
+	EWservPanicHandle=3,					// Invalid handle
+	EWservPanicNullHandle=4,				// Null handle given as a handle value
+	EWservPanicDrawable=5,					// Invalid drawable handle
+	EWservPanicWindow=6,					// Invalid window handle
+	EWservPanicBitmap=7,					// Invalid bitmap handle
+	EWservPanicReadOutstanding=8,			// Event read already outstanding
+	EWservPanicGcNotActive=9,				// Tried use a non-active GC
+	EWservPanicGcActive=10,					// Tried to activate an already active GC
+	EWservPanicWindowActive=11,				// Window already active
+	EWservPanicRedrawActive=12,				// Already inside a begin/end redraw pair
+	EWservPanicFont=13,						// Invalid font handle
+	EWservPanicNoFont=14,					// Printing with no active font
+	EWservPanicInvalidTextCursor=15,		// Tried to set invalid text cursor type
+	EWservPanicReadOnlyDrawable=16,			// Attempted to write to a read only drawable
+	EWservPanicInvalidRgb=17,				// Invalid RGB passed to window server
+	EWservPanicPatternBrush=18,				// Invalid pattern brush
+	EWservPanicNoBrush=19,					// Trying to paint without a brush
+	EWservPanicUninitialisedBitmap=20,		// Trying to use an uninitialised bitmap
+	EWservPanicDestroy=21,					// Trying to do a client destroy function on an illegal handle
+	EWservPanicAnimDll=22,					// Panic from Animator DLL
+	EWservPanicAnim=23,						// Invalid Anim object handle
+	EWservPanicAnimLeave=24,				// Leave from a non-leaving anim function
+	EWservPanicKeyOfDeath=25,				// Killed by the key of death!!!!
+	EWservPanicTmpFont=26,					// Tried to reuse tmp font
+	EWservPanicNoTmpFont=27,				// Tried to free tmp font when not allocated
+	EWservPanicBadPolyData=28,				// Inconsistent polygon/polyline data
+	EWservPanicNegativeShadowHeight=29,		// Tried to set a negative shadow height
+	EWservPanicRedrawToNonRedrawWindow=30,	// Tried to redraw a non-redrawable window
+	EWservPanicRedrawType=31,				// Init message contained invalid redraw type
+	EWservPanicInvalidRegionCount=32,		// InvalidRegion was passed a zero count
+	EWservPanicNoReplyBuffer=33,			// No reply buffer was passed to a function that requires one
+	EWservPanicBackedUpWindowGcActive=34,	// Attempting to reactive a backed up window's GC
+	EWservPanicCornerParams=35,				// Invalid corner type or flags
+	EWservPanicBitmapAccess=36,				// Bitmap access not enabled on a backed up window
+	EWservPanicDescriptor=37,				// Bad descriptor passed
+	EWservPanicWindowDestroyed=38,			// Accessing a sprite after it's window has been destroyed
+	EWservPanicUnsignalledEventData=39,		// A request for event data without a signal for that data being made
+	EWservPanicMaskSize=40,					// The mask for a sprite is smaller then the bitmap
+	EWservPanicSprite=41,					// bad sprite handle
+	EWservPanicNotSystemPointerCursorListOwner=42,	 // Trying to set/clear a system pointer cursor when not owning the list
+	EWservPanicNoPointerBuffer=43,			// Enabling the pointer buffer when there isn't one allocated
+	EWservPanicBufferPtr=44,				// Invalid Buf,Len in the window server command buffer
+	EWservPanicHotKey=45,					// Invalid hot key type
+	EWservPanicPassword=46,					// Invalid call to PasswordEntered()
+	EWservPanicSetComputeMode=47,			// Invalid value in call to SetComputeMode()
+	EWservPanicBackupDisplayMode=48,		// Trying to set the display mode of a backed up window
+	EWservPanicFetchMessage=49,				// Trying to fetch a message when one has not been signalled
+	EWservPanicReInitialise=50,				// Client sent a second Init() message
+	EWservPanicNoWindowSpecifed=51,			// Trying to get off messages without specifing a window to send them to
+	EWservPanicParentDeleted=52,			// Setting size, pos or extent of a window whose parent or ancestor has been deleted
+	EWservPanicResetingDefaultOwner=53,		// Calling the function RWindowGroup::DefaultOwningWindow() twice on the same group window
+	EWservPanicScreenModeNumber=54,			// Calling an API function with an illegal screen size mode index
+	EWservPanicScreenEnforcementMode=55,	// Illegal screen mode enforcement mode
+	EWservPanicEventType=56,				// Must be a pointer event
+	EWservPanicRotation=57,					// Not valid rotation
+	EWservPanicNotTopClient=58,				// Can only call this on a window whoes parent is a group window
+	EWservPanicDirectMisuse=59,				// Trying to do things to a Direct Screen Access object in the wrong order
+	EWservPanicDuplicateHandle=60,			// Client Handle already in use
+	EWservPanicNoCustomTextCursor=61,		// The custom text cursor has not been set
+	EWservPanicCustomTextCursorAlign=62,	// Illegal custom text cursor allignment used
+	EWservPanicNoSpriteMember=63,			// Use of a sprite that does not have any member set.
+	EWservPanicTransparencyObjNotCreated=64,// Trying to set a transparency operation to a window that has not been enabled to be transparent.
+	EWservPanicScreenNumber=65,				// Calling an multiple screen API function with an illegal screen number
+	EWservPanicPermissionDenied=66,
+	EWservPanicFunctionLeave=67,			// A leave occured while processing command in the middle of the buffer
+	EWservPanicGroupWinScreenDeviceDeleted=68,	//Trying to use a group window with a deleted Screen Device
+	EWservPanicDrawCommandsInvalidState=69,	//Redraw storing cannot be disabled for transparent window
+	EWservPanicWsGraphic=70,				// Bad internal state in CWsGraphic code
+	EWservPanicUninitialisedClient=71,	 	// Tried to use an uninitialised CWsClient
+	EWservPanicNullMessageFromClient=72,		// Client IPC message is NULL
+	EWservPanicTransparencyMisuse=73,		// Incompatible use of window transparency and background surface
+	EWservPanic_Removed1=74,	// Panic removed in CR1489, can be reused
+	EWservPanicInvalidSurface=75,			// An incorrect surface type has been used
+	EWservPanicInvalidSurfaceConfiguration=76,	// Use of a surface configuration without valid members
+	EWservPanic_Removed2=77,	// Panic removed in CR1489, can be reused
+	EwservPanicIllegalDisplayMode=78,           // Illegal display mode is used
+	EWservPanicWindowBeginRedrawNotCalled=79,   // A draw operation was performed on the CWindowGc outside a RWindow::BeginRedraw() / EndRedraw() pair. Enable AutoFlush to debug.
+	EWservPanicInvalidParameter=80,             // General invalid parameter code for invariant checking
+	EWservPanicDrawableSource=81,               // Invalid drawable source handle
+	EWservPanicWrongScreen=82,                  // Child apps can only be constructed on the same screen as their parent. See RWindowGroup::ConstructChildApp
+	EWservPanicScreenCaptureInvalidRequest=83,  // With Screen Capture disabled, an unexpected invalid request has been received
+	EWservPanicInvalidDisplayConfiguration=84,  // Use of a display configuration without valid members
+	};
+
+#if defined(__WINS__)
+	// Under WINS character code is passed in as HIWORD of the scan code,
+	// and will need to be removed in some situations
+	#define __REMOVE_WINS_CHARCODE &0x0000FFFF
+#else
+	#define __REMOVE_WINS_CHARCODE
+#endif
+
+class CDebugLogBase: public CBase
+	{
+public:
+	enum {EDummyConnectionId=0};		//This value is used to mean WSERV itself
+	enum
+		{
+		ELogEverything=1,	// Gives the complete WSERV client server interaction along with client logging.
+		ELogIntermediate=5,	// Gives the important WSERV client server interaction along with client logging.
+		ELogImportant=9,	// Gives logging of panics and client logging.
+		};
+public:
+	virtual void CommandBuf(TInt aApp)=0;
+	virtual void Command(TInt aClass, TInt aOpcode, const TAny *aCmdData, TInt aHandle)=0;
+	virtual void NewClient(TUint aConnectionHandle)=0;
+	virtual void Reply(TInt aData)=0;
+	virtual void ReplyBuf(const TDesC8 &aDes)=0;
+	virtual void ReplyBuf(const TDesC16 &aDes)=0;
+	virtual void SignalEvent(TInt aApp)=0;
+	virtual void Panic(TInt aApp, TInt aReason)=0;
+	virtual void MiscMessage(TInt aPriority,const TDesC &aFmt,TInt aParam=0)=0;
+	virtual void HeapDump()=0;
+	virtual void SetLoggingLevel(TInt aLevel)=0;
+	virtual void IniFileSettingRead(TInt aScreen, const TDesC& aVarName, TBool aFound, const TDesC& aResult)=0;
+	};
+
+inline TUint WservEncoding::Encode8BitValues(TUint8 aFirst,TUint8 aSecond)
+	{return aSecond<<8|aFirst;}
+inline TUint WservEncoding::Encode8BitValues(TUint8 aFirst,TUint8 aSecond,TUint8 aThird)
+	{return aThird<<16|Encode8BitValues(aFirst,aSecond);}
+inline TUint8 WservEncoding::ExtractFirst8BitValue(TUint aUint)
+	{return STATIC_CAST(TUint8,aUint&KMaxTUint8);}
+inline TUint8 WservEncoding::ExtractSecond8BitValue(TUint aUint)
+	{return STATIC_CAST(TUint8,aUint>>8&KMaxTUint8);}
+inline TUint8 WservEncoding::ExtractThird8BitValue(TUint aUint)
+	{return STATIC_CAST(TUint8,aUint>>16);}
+//
+inline TWsClCmdCreateSprite::TWsClCmdCreateSprite(TInt aWindow, const TPoint &aPos, TUint aFlags) :
+	window(aWindow),pos(aPos),flags(aFlags)
+	{}
+inline TWsClCmdSetWindowGroupOrdinalPosition::TWsClCmdSetWindowGroupOrdinalPosition(TInt aIdentifier, TInt aPosition) :
+	identifier(aIdentifier),position(aPosition)
+	{}
+inline TWsClCmdSetKeyboardRepeatRate::TWsClCmdSetKeyboardRepeatRate(const TTimeIntervalMicroSeconds32 &aInitial,const TTimeIntervalMicroSeconds32 &aTime) :
+	initial(aInitial), time(aTime)
+	{}
+inline TWsClCmdSetDoubleClick::TWsClCmdSetDoubleClick(const TTimeIntervalMicroSeconds32 &aInterval,TInt aDistance) :
+	interval(aInterval), distance(aDistance)
+	{}
+inline TWsClCmdSendEventToWindowGroup::TWsClCmdSendEventToWindowGroup(TInt aParameter, const TWsEvent &aEvent) :
+	parameter(aParameter), event(aEvent)
+	{}
+inline TWsClCmdFindWindowGroupIdentifier::TWsClCmdFindWindowGroupIdentifier(TInt aPreviousIdentifier,TInt aOffset,TInt aLength) :
+	identifier(aPreviousIdentifier),offset(aOffset),length(aLength)
+	{}
+inline TWsClCmdSendMessageToWindowGroup::TWsClCmdSendMessageToWindowGroup(TInt aIdentifier, TUid aUid, TInt aDataLength, const TDesC8 *aPtr) :
+	identifierOrPriority(aIdentifier), uid(aUid), dataLength(aDataLength), ptr(aPtr)
+	{}
+inline TWsClCmdFetchMessage::TWsClCmdFetchMessage(TInt aWindowGroupIdentifier) :
+	windowGroupIdentifier(aWindowGroupIdentifier)
+	{}
+inline TWsClCmdFindWindowGroupIdentifierThread::TWsClCmdFindWindowGroupIdentifierThread(TInt aPreviousIdentifier,TThreadId aThreadId) :
+	identifier(aPreviousIdentifier),threadId(aThreadId)
+	{}
+inline TWsClCmdGetWindowGroupNameFromIdentifier::TWsClCmdGetWindowGroupNameFromIdentifier(TInt aIdentifier,TInt aMaxLength) :
+	identifier(aIdentifier),maxLength(aMaxLength)
+	{}
+inline TWsClCmdOffEventsToShell::TWsClCmdOffEventsToShell(TBool aOn,TUint32 aWindow) :
+	on(aOn),window(aWindow)
+	{}
+inline TWsClCmdSetPointerCursorArea::TWsClCmdSetPointerCursorArea(TInt aMode,TRect aArea) :
+	mode(aMode),area(aArea)
+	{}
+inline TWsClCmdSetSystemFaded::TWsClCmdSetSystemFaded(TBool aFaded, TBool aUseDefaults/*=ETrue*/, TUint8 aBlackMap/*=0*/, TUint8 aWhiteMap/*=0*/)
+	{params=WservEncoding::Encode8BitValues(aBlackMap,aWhiteMap
+			,STATIC_CAST(TUint8,(aFaded?EFaded:0)|(aUseDefaults?EUseDefaultMap:0)));}
+inline TBool TWsClCmdSetSystemFaded::Faded() const
+	{return WservEncoding::ExtractThird8BitValue(params)&EFaded;}
+inline TBool TWsClCmdSetSystemFaded::UseDefaultMap() const
+	{return WservEncoding::ExtractThird8BitValue(params)&EUseDefaultMap;}
+inline void TWsClCmdSetSystemFaded::GetFadingParams(TUint8& aBlackMap,TUint8& aWhiteMap) const
+	{aBlackMap=WservEncoding::ExtractFirst8BitValue(params);aWhiteMap=WservEncoding::ExtractSecond8BitValue(params);}
+inline TWsClCmdDebugInfo::TWsClCmdDebugInfo(TInt aFunction, TInt aParam) : iFunction(aFunction), iParam(aParam)
+	{}
+#if defined(SYMBIAN_GRAPHICS_GCE)
+inline TWsClCmdCreateDrawableSource::TWsClCmdCreateDrawableSource(const TSgDrawableId& aDrawableId, TInt aScreenNumber)
+	: iDrawableId(aDrawableId), iScreenNumber(aScreenNumber)
+	{}
+inline TWsClCmdSurfaceRegister::TWsClCmdSurfaceRegister(TInt aScreenNumber, const TSurfaceId& aSurface):
+	screenNumber(aScreenNumber), surfaceId(aSurface)
+	{}
+#endif
+inline TWsWinCmdSetExtent::TWsWinCmdSetExtent(const TPoint &aPos,const TSize &aSize) :
+	pos(aPos),size(aSize)
+	{}
+inline TWsWinCmdCaptureLongKey::TWsWinCmdCaptureLongKey()
+	{}
+inline TWsWinCmdCaptureLongKey::TWsWinCmdCaptureLongKey(TUint aModifiers,TUint aModifierMask,TUint aInputKey,TUint aOutputKey
+																	,TTimeIntervalMicroSeconds32 aDelay,TInt aPriority,TUint aFlags) :
+	modifiers(aModifiers),modifierMask(aModifierMask),inputKey(aInputKey),outputKey(aOutputKey)
+																						,delay(aDelay),priority(aPriority),flags(aFlags)
+	{}
+inline TWsWinCmdScroll::TWsWinCmdScroll(const TRect &aClip,const TPoint &aOffset,const TRect &aRect) :
+	clip(aClip), offset(aOffset), rect(aRect)
+	{}
+inline TWsWinCmdSetTextCursor::TWsWinCmdSetTextCursor(TUint32 aWindow, const TPoint &aPos, const TTextCursor &aCursor, const TRect &aRect) :
+	window(aWindow), pos(aPos), cursor(aCursor), rect(aRect)
+	{}
+inline TWsWinCmdSetTextCursor::TWsWinCmdSetTextCursor(TUint32 aWindow, const TPoint &aPos, const TTextCursor &aCursor) :
+	window(aWindow), pos(aPos), cursor(aCursor)
+	{}
+inline TWsWinCmdGrabControl::TWsWinCmdGrabControl(const TUint aGrabControlFlags)
+: pointerNumber(KErrNotFound), flags(aGrabControlFlags)
+	{}
+inline TWsWinCmdGrabControl::TWsWinCmdGrabControl(const TUint8 aPointerNumber, const TUint aGrabControlFlags)
+: pointerNumber(aPointerNumber), flags(aGrabControlFlags)
+	{}
+inline TBool TWsWinCmdGrabControl::CheckFlags(TUint aFlags) const
+	{return (flags&aFlags)==aFlags;}
+inline TBool TWsWinCmdGrabControl::HasPointerNumber() const
+	{return KErrNotFound!=pointerNumber;}
+
+inline TWsWinCmdCancelPointerRepeatEventRequest::TWsWinCmdCancelPointerRepeatEventRequest()
+:	pointerNumber(KErrNotFound), flags(TWsWinCmdCancelPointerRepeatEventRequest::ECancelRepeatFlagsNone)
+	{}
+inline TWsWinCmdCancelPointerRepeatEventRequest::TWsWinCmdCancelPointerRepeatEventRequest(const TUint8 aPointerNumber)
+:	pointerNumber(aPointerNumber), flags(TWsWinCmdCancelPointerRepeatEventRequest::ECancelRepeatFlagsNone)
+	{}
+inline TWsWinCmdCancelPointerRepeatEventRequest::TWsWinCmdCancelPointerRepeatEventRequest(const TUint8 aPointerNumber, const TUint aFlags)
+:	pointerNumber(aPointerNumber), flags(aFlags)
+	{}
+inline TBool TWsWinCmdCancelPointerRepeatEventRequest::HasPointerNumber() const
+	{return KErrNotFound!=pointerNumber;}
+inline TWsWinCmdRequestPointerRepeatEvent::TWsWinCmdRequestPointerRepeatEvent(const TTimeIntervalMicroSeconds32 &aTime,const TRect &aRect)
+:	time(aTime),rect(aRect),pointerNumber(KErrNotFound),repeatFlags(ERepeatFlagsNone)
+	{}
+inline TWsWinCmdRequestPointerRepeatEvent::TWsWinCmdRequestPointerRepeatEvent(const TTimeIntervalMicroSeconds32 &aTime,const TRect &aRect,const TUint8 aPointerNumber, const TUint aRepeatFlags)
+:	time(aTime),rect(aRect),pointerNumber(aPointerNumber),repeatFlags(aRepeatFlags)
+	{}
+inline TBool TWsWinCmdRequestPointerRepeatEvent::HasPointerNumber() const
+	{return KErrNotFound!=pointerNumber;}
+inline TWsClCmdZThresholdPair::TWsClCmdZThresholdPair(const TInt aEnterThreshold, const TInt aExitThreshold)
+:	enterThreshold(aEnterThreshold),exitThreshold(aExitThreshold)
+	{}
+inline TWsWinCmdAddKeyRect::TWsWinCmdAddKeyRect(const TRect &aRect,TInt aScanCode, TBool aActivatedByPointerSwitchOn) :
+	rect(aRect), scanCode(aScanCode), activatedByPointerSwitchOn(aActivatedByPointerSwitchOn)
+	{}
+#if defined(SYMBIAN_GRAPHICS_GCE)
+inline TWsWinOpSetBackgroundSurfaceConfig::TWsWinOpSetBackgroundSurfaceConfig(const TSurfaceConfiguration& aConfiguration, TBool aTriggerRedraw) :
+	surfaceConfig(aConfiguration), triggerRedraw(aTriggerRedraw)
+	{}
+#endif
+inline TWsWinCmdEnableModifierChangedEvents::TWsWinCmdEnableModifierChangedEvents(TUint aModifierMask, TEventControl aCircumstances) :
+	modifierMask(aModifierMask), circumstances(aCircumstances)
+	{}
+inline TWsWinCmdSetFaded::TWsWinCmdSetFaded(TBool aFaded, TBool aIncludeChildren, TBool aUseDefaults/*=ETrue*/, TUint8 aBlackMap/*=0*/, TUint8 aWhiteMap/*=0*/)
+	{params=WservEncoding::Encode8BitValues(aBlackMap,aWhiteMap
+			,STATIC_CAST(TUint8,(aFaded?EFaded:0)|(aIncludeChildren?EIncludeChildren:0)|(aUseDefaults?EUseDefaultMap:0)));}
+inline TBool TWsWinCmdSetFaded::Faded() const
+	{return WservEncoding::ExtractThird8BitValue(params)&EFaded;}
+inline TBool TWsWinCmdSetFaded::IncludeChildren() const
+	{return WservEncoding::ExtractThird8BitValue(params)&EIncludeChildren;}
+inline TBool TWsWinCmdSetFaded::UseDefaultMap() const
+	{return WservEncoding::ExtractThird8BitValue(params)&EUseDefaultMap;}
+inline void TWsWinCmdSetFaded::GetFadingParams(TUint8& aBlackMap,TUint8& aWhiteMap) const
+	{aBlackMap=WservEncoding::ExtractFirst8BitValue(params);aWhiteMap=WservEncoding::ExtractSecond8BitValue(params);}
+//
+inline TWsGcCmdBoxTextVertical::TWsGcCmdBoxTextVertical(const TRect& aBox) : box(aBox)
+	{}
+inline TWsGcCmdBoxTextLocal::TWsGcCmdBoxTextLocal(const TRect &aBox) : box(aBox)
+	{}
+inline TWsGcCmdDrawTextLocal::TWsGcCmdDrawTextLocal(const TPoint &aPos,const TDesC *aDesc) :
+	pos(aPos), desc(aDesc)
+	{}
+inline TWsGcCmdDrawLine::TWsGcCmdDrawLine(const TPoint &aPnt1,const TPoint &aPnt2) : pnt1(aPnt1),pnt2(aPnt2)
+	{}
+inline TWsGcCmdDrawArcOrPie::TWsGcCmdDrawArcOrPie(const TRect &aRect,const TPoint &aStart,const TPoint &aEnd) :
+	rect(aRect),start(aStart),end(aEnd)
+	{}
+inline TWsGcCmdDrawText::TWsGcCmdDrawText(const TPoint &aPos, TInt aLength) : 
+	pos(aPos),length(aLength)
+	{}
+inline TWsGcCmdDrawTextVertical::TWsGcCmdDrawTextVertical(const TPoint &aPos, TInt aLength, TBool aUp) : 
+	pos(aPos),length(aLength),up(aUp)
+	{}
+inline TWsGcCmdBoxTextOptimised1::TWsGcCmdBoxTextOptimised1(const TRect &aRect, TInt aBaselineOffset,TInt aLength) :
+	box(aRect),baselineOffset(aBaselineOffset),length(aLength)
+	{}
+inline TWsGcCmdBoxTextOptimised2::TWsGcCmdBoxTextOptimised2(const TRect &aRect,TInt aBaselineOffset,CGraphicsContext::TTextAlign aHoriz,TInt aLeftMrg,TInt aLength) :
+	box(aRect),baselineOffset(aBaselineOffset),horiz(aHoriz),leftMrg(aLeftMrg),length(aLength)
+	{}
+inline TWsGcCmdBoxText::TWsGcCmdBoxText(const TRect &aRect,TInt aBaselineOffset,CGraphicsContext::TTextAlign aHoriz,TInt aLeftMrg,TInt aLength,TInt aWidth) :
+	box(aRect),baselineOffset(aBaselineOffset),horiz(aHoriz),leftMrg(aLeftMrg),length(aLength),width(aWidth)
+	{}
+inline TWsGcCmdDrawRoundRect::TWsGcCmdDrawRoundRect(const TRect &aRect,const TSize &aEllipse) : rect(aRect), ellipse(aEllipse)
+	{}
+inline TWsGcCmdDrawPolygonLocalBufLen::TWsGcCmdDrawPolygonLocalBufLen(const TPoint *aPointList,TInt aNumPoints, CGraphicsContext::TFillRule aFillRule) :
+	points(aPointList),length(aNumPoints),fillRule(aFillRule)
+	{}
+inline TWsGcCmdDrawPolyLineLocalBufLen::TWsGcCmdDrawPolyLineLocalBufLen(const TPoint *aPointList,TInt aNumPoints) :
+	points(aPointList),length(aNumPoints)
+	{}
+inline TWsGcCmdDrawBitmap::TWsGcCmdDrawBitmap(const TPoint &aPoint,TInt aHandle) : handle(aHandle), pos(aPoint)
+	{}
+inline TWsGcCmdDrawBitmap2::TWsGcCmdDrawBitmap2(const TRect &aRect,TInt aHandle) : handle(aHandle), rect(aRect)
+	{}
+inline TWsGcCmdDrawBitmap3::TWsGcCmdDrawBitmap3(const TRect &aRect,TInt aHandle,const TRect &aSrcRect) :
+	 handle(aHandle), rect(aRect), srcRect(aSrcRect)
+	{}
+inline TWsGcCmdDrawBitmapMasked::TWsGcCmdDrawBitmapMasked(const TRect &aDestRect,TInt aHandle,const TRect& aSrcRect,TInt aMaskHandle,TBool aInvertMask) :
+	 iHandle(aHandle),iMaskHandle(aMaskHandle),iRect(aDestRect),iSrcRect(aSrcRect),iInvertMask(aInvertMask)
+	 {}
+inline TWsGcCmdDrawBitmapLocal::TWsGcCmdDrawBitmapLocal(const TPoint &aPos,const CFbsBitmap *aBitmap) :
+	bitmap(aBitmap), pos(aPos)
+	{}
+inline TWsGcCmdDrawBitmap2Local::TWsGcCmdDrawBitmap2Local(const TRect &aRect,const CFbsBitmap *aBitmap) :
+	bitmap(aBitmap), rect(aRect)
+	{}
+inline TWsGcCmdDrawBitmap3Local::TWsGcCmdDrawBitmap3Local(const TRect &aRect,const CFbsBitmap *aBitmap,const TRect &aSrcRect) :
+	bitmap(aBitmap), rect(aRect), srcRect(aSrcRect)
+	{}
+inline TWsGcCmdDrawBitmapMaskedLocal::TWsGcCmdDrawBitmapMaskedLocal(const TRect &aDestRect,const CFbsBitmap* aBitmap,const TRect& aSrcRect,const CFbsBitmap* aMaskBitmap,TBool aInvertMask) :
+	iBitmap(aBitmap),iMaskBitmap(aMaskBitmap),iRect(aDestRect),iSrcRect(aSrcRect),iInvertMask(aInvertMask)
+	{}
+inline TWsGcCmdCopyRect::TWsGcCmdCopyRect(const TPoint &anOffset,const TRect &aRect) :
+	rect(aRect),pos(anOffset)
+	{}
+inline TWsGcCmdGdiBlt2::TWsGcCmdGdiBlt2(const TPoint &aPoint, TInt aHandle) :
+	handle(aHandle), pos(aPoint)
+	{}
+inline TWsGcCmdGdiBlt3::TWsGcCmdGdiBlt3(const TPoint &aPoint, TInt aHandle, const TRect &aSrcRect) :
+	handle(aHandle),pos(aPoint),rect(aSrcRect)
+	{}
+inline TWsGcCmdGdiBlt2Local::TWsGcCmdGdiBlt2Local(const TPoint &aPoint,const CFbsBitmap *aBitmap) :
+	bitmap(aBitmap), pos(aPoint)
+	{}
+inline TWsGcCmdGdiBlt3Local::TWsGcCmdGdiBlt3Local(const TPoint &aDestination,const CFbsBitmap *aBitmap,const TRect &aSource) :
+	bitmap(aBitmap), pos(aDestination), rect(aSource)
+	{}
+inline TWsGcCmdGdiBltMaskedLocal::TWsGcCmdGdiBltMaskedLocal(const TPoint& aPoint,const CFbsBitmap* aBitmap,const TRect &aSourceRect,const CFbsBitmap* aMaskBitmap,TBool aInvertMask) :
+	bitmap(aBitmap), maskBitmap(aMaskBitmap), invertMask(aInvertMask), pos(aPoint), rect(aSourceRect)
+	{}
+	inline TWsGcCmdBltMasked::TWsGcCmdBltMasked()
+	{}
+inline TWsGcCmdBltMasked::TWsGcCmdBltMasked(const TPoint& aPoint,TInt aBitmap,const TRect& aSourceRect,TInt aMaskBitmap,TBool aInvertMask) :
+	destination(aPoint), handle(aBitmap), source(aSourceRect), maskHandle(aMaskBitmap), invertMask(aInvertMask)
+	{}
+inline TWsGcCmdMapColors::TWsGcCmdMapColors(const TRect &aRect, TInt aNumPairs, TBool aMapForwards) :
+	rect(aRect), numPairs(aNumPairs), mapForwards(aMapForwards)
+	{}
+inline TWsGcCmdMapColorsLocal::TWsGcCmdMapColorsLocal(const TRect &aRect, const TRgb *aColors, TInt aNumPairs, TBool aMapForwards) :
+	rect(aRect), colors(aColors), numPairs(aNumPairs), mapForwards(aMapForwards)
+	{}	
+inline TWsGcCmdAlphaBlendBitmaps::TWsGcCmdAlphaBlendBitmaps()
+	{}
+inline TWsGcCmdAlphaBlendBitmaps::TWsGcCmdAlphaBlendBitmaps(const TPoint& aPoint, TInt aBitmap,const TRect& aSourceRect,TInt aAlpha,const TPoint& aAlphaPoint) :
+	point(aPoint), bitmapHandle(aBitmap), source(aSourceRect), alphaHandle(aAlpha), alphaPoint(aAlphaPoint)
+	{}
+inline TWsGcCmdAlphaBlendBitmapsLocal::TWsGcCmdAlphaBlendBitmapsLocal(const TPoint& aPoint, const CFbsBitmap *aBitmap, const TRect& aSourceRect, const CFbsBitmap *aAlpha, const TPoint& aAlphaPoint) :
+	point(aPoint), iBitmap(aBitmap), source(aSourceRect), iAlpha(aAlpha), alphaPoint(aAlphaPoint)
+	{}
+
+//
+inline TWsSdCmdSetScreenRotation::TWsSdCmdSetScreenRotation(TInt aMode, CFbsBitGc::TGraphicsOrientation aRotation) :
+	mode(aMode), rotation(aRotation)
+	{}
+inline TWsSdCmdGetScanLine::TWsSdCmdGetScanLine(const TPoint &aPos, TInt aLen, TDisplayMode aDispMode) :
+	pos(aPos), len(aLen), dispMode(aDispMode)
+	{}
+inline TWsSdCmdRectCompare::TWsSdCmdRectCompare(const TRect &aRect1,const TRect &aRect2,TUint aFlags) :
+	rect1(aRect1), rect2(aRect2), flags(aFlags)
+	{}
+inline TWsSdCmdCopyScreenToBitmap::TWsSdCmdCopyScreenToBitmap(TInt aHandle) :
+	handle(aHandle)
+	{}
+inline TWsSdCmdCopyScreenToBitmap2::TWsSdCmdCopyScreenToBitmap2(const TRect &aRect, TInt aHandle) :
+	rect(aRect), handle(aHandle)
+	{}
+inline TWsSdCmdSetPalette::TWsSdCmdSetPalette(TPtr8& aPtr) :
+	ptr(&aPtr), length(aPtr.Length())
+	{}
+inline TWsSdCmdMapCoordinates::TWsSdCmdMapCoordinates(const TRect &aSource, TCoordinateSpace aSourceSpace, TCoordinateSpace aTargetSpace):
+	sourceRect(aSource), sourceSpace(aSourceSpace), targetSpace(aTargetSpace)
+	{}
+//
+inline TWsSpriteCmdUpdateMember::TWsSpriteCmdUpdateMember(TInt aIndex,const TSpriteMember &aData) :
+	index(aIndex), data(aData)
+	{}
+//
+inline TWsDirectCmdRequestReply::TWsDirectCmdRequestReply()
+	{}
+inline TWsDirectCmdRequestReply::TWsDirectCmdRequestReply(TThreadId aId,TRequestStatus* aRequest) :
+	id(aId), request(aRequest)
+	{}
+//
+inline SKeyRepeatSettings::SKeyRepeatSettings()
+	{}
+inline SDoubleClickSettings::SDoubleClickSettings()
+	{}
+inline SDefModeMaxNumColors::SDefModeMaxNumColors()
+	{}
+//
+inline TCmdSpriteMember::TCmdSpriteMember()
+	{}
+	
+inline TWsGcCmdDrawTextVerticalPtr::TWsGcCmdDrawTextVerticalPtr(const TDesC *aDesc, const TPoint& aPos, const TBool aUp) : pos(aPos), up(aUp), text(const_cast<TDesC*>(aDesc))
+	{}
+	
+inline TWsGcCmdDrawWsGraphic::TWsGcCmdDrawWsGraphic(const TWsGraphicId& aId,const TRect& aRect):
+	iRect(aRect), iDataLen(0)
+	{
+	if(aId.IsUid())
+		{
+		iId = aId.Uid().iUid;
+		iFlags = EWsGraphicIdUid;
+		}
+	else
+		{
+		iId = aId.Id();
+		iFlags = EWsGraphicIdTransient;
+		}
+	}
+inline TWsGcCmdDrawTextInContext::TWsGcCmdDrawTextInContext(const TPoint &aPos, TInt aLength, TInt aStart, TInt aEnd) : 
+	pos(aPos),length(aLength),start(aStart),end(aEnd)
+	{}
+inline TWsGcCmdDrawTextInContextVertical::TWsGcCmdDrawTextInContextVertical(const TPoint &aPos, TInt aLength, TBool aUp,TInt aStart,TInt aEnd) : 
+	pos(aPos),length(aLength),up(aUp),start(aStart),end(aEnd)
+	{}
+inline TWsGcCmdDrawTextInContextVerticalPtr::TWsGcCmdDrawTextInContextVerticalPtr(const TDesC *aDesc, const TPoint& aPos, const TBool aUp,TInt aStart,TInt aEnd) : pos(aPos), up(aUp), text(const_cast<TDesC*>(aDesc)),start(aStart),end(aEnd)
+	{}
+inline TWsGcCmdBoxTextInContextLocal::TWsGcCmdBoxTextInContextLocal(const TRect &aBox,const TInt aStart,const TInt aEnd) : box(aBox),start(aStart),end(aEnd)
+	{}
+inline TWsGcCmdBoxTextInContextOptimised1::TWsGcCmdBoxTextInContextOptimised1(const TRect &aRect, TInt aBaselineOffset,TInt aLength,TInt aStart,TInt aEnd) :
+	box(aRect),baselineOffset(aBaselineOffset),length(aLength),start(aStart),end(aEnd)
+	{}
+inline TWsGcCmdBoxTextInContextOptimised2::TWsGcCmdBoxTextInContextOptimised2(const TRect &aRect,TInt aBaselineOffset,CGraphicsContext::TTextAlign aHoriz,TInt aLeftMrg,TInt aLength,TInt aStart,TInt aEnd) :
+	box(aRect),baselineOffset(aBaselineOffset),horiz(aHoriz),leftMrg(aLeftMrg),length(aLength),start(aStart),end(aEnd)
+	{}
+inline TWsGcCmdBoxTextInContext::TWsGcCmdBoxTextInContext(const TRect &aRect,TInt aBaselineOffset,CGraphicsContext::TTextAlign aHoriz,TInt aLeftMrg,TInt aLength,TInt aWidth,TInt aStart,TInt aEnd) :
+	box(aRect),baselineOffset(aBaselineOffset),horiz(aHoriz),leftMrg(aLeftMrg),length(aLength),width(aWidth),start(aStart),end(aEnd)
+	{}
+inline TWsGcCmdBoxTextInContextVertical::TWsGcCmdBoxTextInContextVertical(const TRect& aBox) : box(aBox)
+	{}
+inline TWsGcCmdDrawTextInContextLocal::TWsGcCmdDrawTextInContextLocal(const TPoint &aPos,const TDesC *aDesc,TInt aStart,TInt aEnd) :
+	pos(aPos), desc(aDesc),start(aStart),end(aEnd)
+	{}
+inline TWsGcCmdDrawResourceToPos::TWsGcCmdDrawResourceToPos(TInt aWsHandle, const TPoint &aPos, CWindowGc::TGraphicsRotation aRotation) : 
+	wsHandle(aWsHandle), pos(aPos), rotation(aRotation) 
+	{}
+inline TWsGcCmdDrawResourceToRect::TWsGcCmdDrawResourceToRect(TInt aWsHandle, const TRect &aRect, CWindowGc::TGraphicsRotation aRotation) : 
+	wsHandle(aWsHandle), rect(aRect), rotation(aRotation)
+	{}
+inline TWsGcCmdDrawResourceFromRectToRect::TWsGcCmdDrawResourceFromRectToRect(TInt aWsHandle, const TRect &aRectDest, const TRect &aRectSrc, CWindowGc::TGraphicsRotation aRotation) :
+	wsHandle(aWsHandle), rectDest(aRectDest), rectSrc(aRectSrc), rotation(aRotation)
+	{}
+inline TWsGcCmdDrawResourceWithData::TWsGcCmdDrawResourceWithData(TInt aWsHandle, const TRect &aRect, const TDesC8* aDesc) :
+	wsHandle(aWsHandle), rect(aRect), desc(aDesc)
+	{}
+#endif