Fully Tested
============
class RWindow : public RWindowBase
	{
	IMPORT_C void Scroll(const TPoint &aOffset);
	IMPORT_C void Scroll(const TPoint &aOffset, const TRect &aRect);
	IMPORT_C void Scroll(const TRect &aClipRect, const TPoint &aOffset);
	IMPORT_C void Scroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect);
	IMPORT_C TInt OrdinalPosition() const;
	IMPORT_C void SetOrdinalPosition(TInt aPos);
	IMPORT_C void SetOrdinalPosition(TInt aPos,TOrdinalPriority aOrdinalPriority);
	}

class RWs : public RSessionBase
	{
	}

class RBitmap : public RDrawBase
	{
	}

class RWindowBase : public RDrawBase
	{
	}

class RRootWindow : public RWindowBase
	{
	}

class RFont : public RFontBase
	{
	}

class RBrush : public RBrushBase
	{
	}

class RPalette : public RPaletteBase
	{
	}

class RGc : public RGdiBase
	{
	IMPORT_C void GetPixels(const TPoint &aPoint,TInt aNumOfPixels,TPtr8 &aScanLine)const;
	IMPORT_C void DrawLine(const TPoint &aPoint1,const TPoint &aPoint2);
	IMPORT_C void ClearDI(TRgb aColour);
	IMPORT_C void ClearDI(TRgb aColour,const TRect &aRect);
	IMPORT_C void ClearTrapezium(const TRect &aRect,TInt aSkew,TBool aHorizontal);
	IMPORT_C void DrawDottedLine(const TPoint &aPoint1,const TPoint &aPoint2,TUint aDashPattern,TInt aDashedLength);
	IMPORT_C void DrawTrapezium(const TRect &aRect,TInt aSkew,TBool aHorizontal);
	IMPORT_C void FillTrapezium(const TRect &aRect,TInt aSkew,TBool aHorizontal);
	IMPORT_C void GdiBltMasked(const TPoint &aDestination,const RDrawBase &aDrawPtr,const TRect &aSource,const RDrawBase &aMask,TRgb aCutoff,TBool aLowMasked);
	IMPORT_C void DrawParallelogram(const TRect &aRect,TInt aSkew,TBool aHorizontal);
	IMPORT_C void ClearParallelogram(const TRect &aRect,TInt aSkew,TBool aHorizontal);
	IMPORT_C void FillParallelogram(const TRect &aRect,TInt aSkew,TBool aHorizontal);
	IMPORT_C void PaintParallelogram(const TRect &aRect,TInt aSkew,TBool aHorizontal);
	IMPORT_C void PaintTrapezium(const TRect &aRect,TInt aSkew,TBool aHorizontal);
	IMPORT_C void ResetDotParam();
	}

Partially tested
================
class RWindow : public RWindowBase
	{
	}

class RWs : public RSessionBase
	{
	}

class RBitmap : public RDrawBase
	{
	}

class RWindowBase : public RDrawBase
	{
	}

class RRootWindow : public RWindowBase
	{
	}

class RFont : public RFontBase
	{
	}

class RBrush : public RBrushBase
	{
	}

class RPalette : public RPaletteBase
	{
	}

class RGc : public RGdiBase
	{
	}


Not tested
==========
class RWs : public RSessionBase
	{
	IMPORT_C RWs();
	IMPORT_C TInt Connect(TUint32 aHandle);
	IMPORT_C void Disconnect();
	IMPORT_C TVersion Version();
	IMPORT_C TInt SetHotKey(THotKeyType aType, TUint aKeycode, TUint aModifier, TUint aModifierMask);
	IMPORT_C TInt CaptureKey(TUint keyCode,TUint mod_mask,TUint modifiers);
	IMPORT_C void CancelHotKey(TInt aHotKey);
	IMPORT_C void CancelCaptureKey(TInt aCaptureKey);
	IMPORT_C void DisplayInfo(TUint aMode, TDisplayInfo *aInfo);
	IMPORT_C void ComputeMode(TComputeMode mode);
	IMPORT_C void Info(TInt aClientHandle,TxInfo &aInfo);
	IMPORT_C void ReadEvent(TPckgBuf<TWsEvent> &aEvent,TInt *stat,TUint blocks=0);
	IMPORT_C void ReadEventUpdate(TUint blocks);
	IMPORT_C void ReadEventCancel();
	IMPORT_C TInt BufferSize(TInt aBufSize);
	IMPORT_C void Flush();
	IMPORT_C TBool SetAutoFlush(TBool aState);
	IMPORT_C TInt HeapCount() const;
	IMPORT_C void SetTextCursor(RWindow &aWin, const TPoint &aPos, const TTextCursor &aCursor);
	IMPORT_C void CancelTextCursor();
	IMPORT_C void MarkStart();
	IMPORT_C void CheckNum(TUint aCount);
	IMPORT_C void MarkEnd(TUint aCount);
	IMPORT_C TInt ResourceCount();
	inline RBuffer *Buffer() const;
	};

class RBitmap : public RDrawBase
	{
	IMPORT_C RBitmap();
	IMPORT_C RBitmap(RWs &aWs);
	IMPORT_C void Close();
	IMPORT_C void Destroy();
//	IMPORT_C void Construct(TSize &size,TInt colourBits);
	IMPORT_C TInt Construct(TSize &size);
	IMPORT_C TInt Load(const TDesC &aFileName,TReadWrite access=EReadOnly);
	IMPORT_C void Attributes(TAttributes *attrib);
	IMPORT_C TUint Handle() const;
	IMPORT_C TGdiAttributes Attributes()const;
	IMPORT_C TSize Size()const;
	};

class RWindowBase : public RDrawBase
	{
	IMPORT_C RWindowBase();
	IMPORT_C RWindowBase(RWs &aWs);
	IMPORT_C void Close();
	IMPORT_C void Destroy();
	IMPORT_C TAttributes Attributes(TInt handle);
	IMPORT_C TUint32 Parent() const;
	IMPORT_C TUint32 PrevSibling() const;
	IMPORT_C TUint32 NextSibling() const;
	IMPORT_C TUint32 Child() const;
	IMPORT_C TPoint InquireOffset(const RWindowBase &aWindow) const;
	IMPORT_C TGdiAttributes Attributes() const;
	IMPORT_C TUint Handle() const;
	IMPORT_C TSize Size() const;
	IMPORT_C TPoint Position() const;
	};

class RWindow : public RWindowBase
	{
	IMPORT_C RWindow();
	IMPORT_C RWindow(RWs &aWs);
	IMPORT_C TInt Construct(const RWindowBase &parent,TUint32 handle);
	IMPORT_C void Activate();
	IMPORT_C TAttributes Attributes();
	IMPORT_C void BeginRedraw();
	IMPORT_C void BeginRedraw(const TRect &rect);
	IMPORT_C void EndRedraw();
	IMPORT_C void Invalidate();
	IMPORT_C void Invalidate(const TRect &rect);
	IMPORT_C void Validate();
	IMPORT_C void Validate(const TRect &rect);
	IMPORT_C void SetPosition(const TPoint &point);
	IMPORT_C TInt SetSize(const TSize &size);
	IMPORT_C TInt SetExtent(const TPoint &point,const TSize &size);
	IMPORT_C TInt SetExtent(TInt tlx,TInt tly,TInt width, TInt height);
	IMPORT_C void SetAttributes(TUint flags,const TAttributes &windata);
	IMPORT_C void SetTextCursor(const TTextCursor cursor);
	IMPORT_C void CancelTextCursor();
	IMPORT_C void PointerFilter(TUint32 aFilter);
	IMPORT_C void SetPointerGrab(TBool aState);
	IMPORT_C void SetPointerCapture(TBool aState);
	IMPORT_C void SetBackgroundColour(TRgb aColour);
	IMPORT_C void SetVisible(TBool aState);
	IMPORT_C TInt SetCurrentRegion(const TRegion &aRegion);
	IMPORT_C void CancelCurrentRegion();
	};

class RRootWindow : public RWindowBase
	{
	IMPORT_C RRootWindow();
	IMPORT_C RRootWindow(RWs &aWs);
	IMPORT_C TInt Construct(TUint32 clientHandle);
	};

class RFont : public RFontBase
	{
	IMPORT_C RFont();
	IMPORT_C RFont(RWs &aWs);
	IMPORT_C void Close();
	IMPORT_C void Destroy();
	IMPORT_C TInt Construct(const TFont &aFont);
	IMPORT_C TUint Handle()const;
	IMPORT_C TInt Height()const;
	IMPORT_C TInt Ascent()const;
	IMPORT_C TInt Descent()const;
	IMPORT_C TInt AverageWidth()const;
	IMPORT_C TInt MaximumWidth()const;
	IMPORT_C TBool Bold()const;
	IMPORT_C TBool Italic()const;
	IMPORT_C TBool Underline()const;
	IMPORT_C TBool CrossOut()const;
	IMPORT_C void WidthTable(TUint aStartChar,TUint aFinishChar,TPtr8 &)const;
	IMPORT_C TInt TextWidth(const TDesC &aBuf)const;
	IMPORT_C TInt TextCount(const TDesC &aBuf,TInt aPixelCount)const;
	IMPORT_C TInt TextCount(const TDesC &aBuf,TInt aPixelCount,TInt &aWidth)const;
	};

class RBrush : public RBrushBase
	{
public:
	IMPORT_C RBrush();
	IMPORT_C RBrush(RWs &aWs);
	IMPORT_C void Close();
	IMPORT_C void Destroy();
	IMPORT_C TInt Construct(const TDesC &aFileName,RFs &aFileSys);
	IMPORT_C TUint Handle()const;
	IMPORT_C TSize Size()const;
	IMPORT_C TRgb Pixel(const TPoint &aPoint)const;
	IMPORT_C void GetPixels(const TPoint &aPoint,TInt aPelLength,TInt aMode,TPtr8 &aBuffer)const;
	IMPORT_C void SetThreshold(TUint aThreshold);
private:
	TInt32 iHandle;
	RBuffer *iBuffer;
	};

class RPalette : public RPaletteBase
	{
	IMPORT_C RPalette();
	IMPORT_C RPalette(RWs &aWs);
	IMPORT_C void Close();
	IMPORT_C void Destroy();
	IMPORT_C void Clear();
	IMPORT_C void SetEntry(TInt aPaletteIndex,TRgb aPaletteEntry);
	IMPORT_C void SetBlock(TInt aStartIndex,TInt aNumberOfEntries,TPtr8 &aBufferOfEntries);
	IMPORT_C TRgb GetEntry(TInt aPaletteIndex) const;
	IMPORT_C void GetBlock(TInt aStartIndex,TInt aNumberOfEntries,TPtr8 &aBuffer) const;
	IMPORT_C TInt Entries() const;
	IMPORT_C TUint Handle()const;
	};

class RGc : public RGdiBase
	{
	IMPORT_C RGc();
	IMPORT_C RGc(RWs &aWs);
	IMPORT_C void Close();
	IMPORT_C void Destroy();
	IMPORT_C TInt Construct();
	IMPORT_C void Activate(const RDrawBase &aDrawable);
	IMPORT_C void Deactivate();
	IMPORT_C void FillRect(const TRect &aRect);
	IMPORT_C void PrintText(const TPoint &aPosition,const TDesC &aString);
	IMPORT_C void PrintText(const TDesC &aString);
	IMPORT_C void SetPenGrey4(TUint aGrey4);
	IMPORT_C void SetPenGrey16(TUint aGrey16);
	IMPORT_C void SetPenGrey256(TUint aGrey256);
	IMPORT_C void Clear();
	IMPORT_C void CopyRect(const TPoint &anOffset,const TRect &aRect);
	IMPORT_C void DrawEllipse(const TRect &aRect);
	IMPORT_C void DrawRect(const TRect &aRect);
	IMPORT_C void ClearRect(const TRect &aRect);
	IMPORT_C void FillEllipse(const TRect &aRect);
	IMPORT_C void PaintEllipse(const TRect &aRect);
	IMPORT_C void ClearEllipse(const TRect &aRect);
	IMPORT_C void PaintRect(const TRect &aRect);
	IMPORT_C void GdiBlt(const RDrawBase &aDevice);
	IMPORT_C void GdiBlt(const TPoint &aDestination,const RDrawBase &aDevice);
	IMPORT_C void GdiBlt(const TPoint &aDestination,const RDrawBase &aDevice,const TRect &aSource);
	IMPORT_C TInt DisplayMode()const;
	IMPORT_C TGdiDrawMode DrawMode()const;
//	IMPORT_C TUint DisplayModesAvailable()const;
	IMPORT_C TRgb Pixel(const TPoint &aPixel)const;
	IMPORT_C TSize Size()const;
	IMPORT_C RBrushBase *PatternBrush()const;
	IMPORT_C TRgb PenColour()const;
	IMPORT_C TRgb BrushColour()const;
	IMPORT_C TTextBackGround TextBackGround()const;
	IMPORT_C void Plot(const TPoint &aPoint);
	IMPORT_C void SetBrushGrey4(TUint aGrey4);
	IMPORT_C void SetBrushGrey16(TUint aGrey16);
	IMPORT_C void SetBrushGrey256(TUint aGrey256);
	IMPORT_C void SetPenColour(const TRgb &aColour);
	IMPORT_C void SetBrushColour(const TRgb &aColour);
	IMPORT_C TInt SetDisplayMode(TUint aDisplayMode);
	IMPORT_C void SetDrawMode(TGdiDrawMode aDrawingMode);
	IMPORT_C void SetLineWidth(TInt aWidth);
	IMPORT_C void SetPatternBrushOrigin(const TPoint &aOrigin);
	IMPORT_C void SetTextBackGround(TTextBackGround aBackGroundSetting);
	IMPORT_C RFont Font()const;
	IMPORT_C void UseFont(const RFontBase &aFont);
	IMPORT_C void UsePalette(const RPaletteBase &aPalette);
	IMPORT_C void UsePatternBrush(const RBrushBase &aBrush);
	IMPORT_C void DiscardFont();
	IMPORT_C void DiscardPalette();
	IMPORT_C void DiscardPatternBrush();
	IMPORT_C TUint Handle() const;
	IMPORT_C TInt LoadBitmap(const TDesC &aFileName, RFs &aFileSys);
	IMPORT_C TInt LoadBitmapDI(const TDesC &aFileName,RFs &aFileSys);
	IMPORT_C TGdiAttributes Attributes()const;
	IMPORT_C void RefreshPalette();
	}
