sl@0: // Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // Test GDI scaling (pixels<->twips) functions sl@0: // You can probably delete this test as it is now done by TMSCRMOD for each screen mode. sl@0: // sl@0: // sl@0: sl@0: #include sl@0: #include "W32STD.H" sl@0: #include "../tlib/testbase.h" sl@0: #include "TMAN.H" sl@0: sl@0: class TScaleTest; sl@0: sl@0: class CScaleWindow : public CTWin sl@0: { sl@0: public: sl@0: CScaleWindow(TScaleTest *aTest); sl@0: void SetUpLD(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc); sl@0: void Draw(); sl@0: void WinKeyL(const TKeyEvent &aKey,const TTime &aTime); sl@0: private: sl@0: TScaleTest *iTest; sl@0: }; sl@0: sl@0: class TScaleTest : public CTestBase sl@0: { sl@0: public: sl@0: TScaleTest(); sl@0: ~TScaleTest(); sl@0: TestState DoTestL(); sl@0: void ConstructL(); sl@0: private: sl@0: CScaleWindow *iWin; sl@0: TSize iWinSize; sl@0: TInt iState; sl@0: }; sl@0: sl@0: GLDEF_C CTestBase *CreateScaleTest() sl@0: { sl@0: return(new(ELeave) TScaleTest()); sl@0: } sl@0: sl@0: CScaleWindow::CScaleWindow(TScaleTest *aTest) : CTWin(), iTest(aTest) sl@0: {} sl@0: sl@0: void CScaleWindow::SetUpLD(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc) sl@0: { sl@0: ConstructExtLD(*parent,pos,size); sl@0: Activate(); sl@0: AssignGC(aGc); sl@0: } sl@0: sl@0: void CScaleWindow::Draw() sl@0: { sl@0: iGc->Clear(); sl@0: TSize twips=Client()->iScreen->SizeInTwips(); sl@0: TSize pixels=Client()->iScreen->SizeInPixels(); sl@0: // Horizontal line sl@0: TInt inches=twips.iWidth/KTwipsPerInch-1; sl@0: TInt lineLen=Client()->iScreen->HorizontalTwipsToPixels(inches*KTwipsPerInch); sl@0: TPoint linePos=TPoint((pixels.iWidth-lineLen)/2,pixels.iHeight/2); sl@0: iGc->DrawLine(linePos,linePos+TPoint(lineLen,0)); sl@0: TBuf<0x20> buf; sl@0: buf.Format(TRefByValue(_L("Width %d\"")),inches); sl@0: iGc->DrawText(buf,TPoint((pixels.iWidth-iFont->TextWidthInPixels(buf))/2,linePos.iY-iFont->HeightInPixels()+iFont->AscentInPixels()-2)); sl@0: TInt index; sl@0: for(index=0;index<=inches;index++) sl@0: { sl@0: TInt dx=Client()->iScreen->HorizontalTwipsToPixels(index*KTwipsPerInch); sl@0: TInt dy=Client()->iScreen->VerticalTwipsToPixels(KTwipsPerInch/(index==0 || index==inches ? 8 : 16)); sl@0: iGc->DrawLine(linePos+TPoint(dx,1), linePos+TPoint(dx,dy)); sl@0: } sl@0: // Vertical line sl@0: inches=twips.iHeight/KTwipsPerInch; sl@0: lineLen=Client()->iScreen->VerticalTwipsToPixels(inches*KTwipsPerInch); sl@0: linePos.iY=(pixels.iHeight-lineLen)/2; sl@0: iGc->DrawLine(linePos,linePos+TPoint(0,lineLen)); sl@0: buf.Format(TRefByValue(_L("Height %d\"")),inches); sl@0: iGc->DrawText(buf,TPoint(linePos.iX+10, pixels.iHeight/4)); sl@0: for(index=0;index<=inches;index++) sl@0: { sl@0: TInt dx=Client()->iScreen->HorizontalTwipsToPixels(KTwipsPerInch/(index==0 || index==inches ? 8 : 16)); sl@0: TInt dy=Client()->iScreen->VerticalTwipsToPixels(index*KTwipsPerInch); sl@0: iGc->DrawLine(linePos+TPoint(1,dy), linePos+TPoint(dx,dy)); sl@0: } sl@0: } sl@0: sl@0: void CScaleWindow::WinKeyL(const TKeyEvent &,const TTime &) sl@0: { sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: sl@0: TScaleTest::TScaleTest() : CTestBase(_L("Scale")) sl@0: {} sl@0: sl@0: TScaleTest::~TScaleTest() sl@0: { sl@0: CTWin::Delete(iWin); sl@0: } sl@0: sl@0: void TScaleTest::ConstructL() sl@0: { sl@0: CScaleWindow *win=new(ELeave) CScaleWindow(this); sl@0: win->SetUpLD(TPoint(0,0),Client()->iScreen->SizeInPixels(),Client()->iGroup,*Client()->iGc); sl@0: iWin=win; sl@0: Client()->iGroup->SetCurrentWindow(iWin); sl@0: } sl@0: sl@0: TestState TScaleTest::DoTestL() sl@0: { sl@0: switch(iState) sl@0: { sl@0: case 0: sl@0: LogSubTest(_L("Scale 1"),1); sl@0: CActiveScheduler::Start(); sl@0: iState++; sl@0: break; sl@0: default: sl@0: return(EFinished); sl@0: } sl@0: return(ENext); sl@0: } sl@0: