// EIKDUTIL.CPP
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//

#include <coedef.h>
#include <eikdutil.h>

// class EikDrawUtils

EXPORT_C void EikDrawUtils::DrawText(CGraphicsContext& aGc,const TDesC& aString,const TRect& aBox,TInt aBaseLineOffset,
									 CGraphicsContext::TTextAlign aHoriz,TInt aMargin,const CFont* aFont)
	{ // static
	if (aHoriz!=CGraphicsContext::ELeft)
        {
		const TInt extraWidth=aBox.Width()-aFont->TextWidthInPixels(aString)-aMargin;
        if (aHoriz==CGraphicsContext::ECenter)
            aMargin+=extraWidth/2;
		else
			aMargin=extraWidth;
        }
	aGc.DrawText(aString,aBox,aBaseLineOffset,CGraphicsContext::ELeft,aMargin);
	}

EXPORT_C void EikDrawUtils::ClearBetweenRects(CGraphicsContext& aGc,const TRect& aOuterRect,const TRect& aInnerRect)
    { // static
    aGc.SetPenStyle(CGraphicsContext::ENullPen);
    aGc.SetBrushStyle(CGraphicsContext::ESolidBrush);
    DrawBetweenRects(aGc,aOuterRect,aInnerRect);
    aGc.SetPenStyle(CGraphicsContext::ESolidPen);
    aGc.SetBrushStyle(CGraphicsContext::ENullBrush);
    }

EXPORT_C void EikDrawUtils::DrawBetweenRects(CGraphicsContext& aGc,const TRect& aOuterRect,const TRect& aInnerRect)
    { // static
    TRect rect=aOuterRect;
    rect.iBr.iY=aInnerRect.iTl.iY;
    aGc.DrawRect(rect);
    rect.iBr.iY=aOuterRect.iBr.iY;
    rect.iTl.iY=aInnerRect.iBr.iY;
    aGc.DrawRect(rect);
    rect=aInnerRect;
    rect.iTl.iX=aOuterRect.iTl.iX;
    rect.iBr.iX=aInnerRect.iTl.iX;
    aGc.DrawRect(rect);
    rect.iTl.iX=aInnerRect.iBr.iX;
    rect.iBr.iX=aOuterRect.iBr.iX;
    aGc.DrawRect(rect);
    }

// TMargins8

EXPORT_C void TMargins8::SetAllValuesTo(TInt aCommonValue)
	{
	iLeft=iRight=iTop=iBottom=(TInt8)aCommonValue;
	}

EXPORT_C TRect TMargins8::InnerRect(const TRect& aOuterRect) const
	{
    TRect inner=aOuterRect;
    inner.iTl.iX+=iLeft;
    inner.iTl.iY+=iTop;
    inner.iBr.iX-=iRight;
    inner.iBr.iY-=iBottom;
    return inner;
	}

EXPORT_C TRect TMargins8::OuterRect(const TRect& aInnerRect) const
	{
    TRect outer=aInnerRect;
    outer.iTl.iX-=iLeft;
    outer.iTl.iY-=iTop;
    outer.iBr.iX+=iRight;
    outer.iBr.iY+=iBottom;
    return outer;
	}

EXPORT_C TSize TMargins8::SizeDelta() const
	{
	return TSize(iLeft+iRight,iTop+iBottom);
	}
