--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicsapitest/graphicssvs/fntstore/src/T_TestOpenFont.cpp Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,211 @@
+// Copyright (c) 2007-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:
+// Creates a dummy rasterizer and a dummy shaper for FontStore APIs testing.
+//
+//
+
+#include <e32std.h>
+#include <f32file.h>
+#include "T_TestOpenFont.h"
+
+CTestRasterizer* CTestRasterizer::NewL()
+ {
+ return new(ELeave) CTestRasterizer;
+ }
+
+COpenFontFile* CTestRasterizer::NewFontFileL(TInt aUid,const TDesC& aFileName,RFs& /*aFileSession*/)
+ {
+ TParse parse;
+ parse.Set(aFileName, NULL, NULL);
+
+ if (parse.Name().CompareF(KTestFont1) == 0 || parse.Name().CompareF(KTestFont2) == 0)
+ {
+ // create a dummy font.
+ return CTestFontFile::NewL(aUid,aFileName);
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+CTestFontFile::CTestFontFile(TInt aUid, const TDesC& aFileName)
+: COpenFontFile(aUid, aFileName)
+ {
+ }
+
+CTestFontFile* CTestFontFile::NewL(TInt aUid, const TDesC& aFileName)
+ {
+ CTestFontFile* self = new(ELeave)CTestFontFile(aUid,aFileName);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+TBool CTestFontFile::GetNearestFontHelper(const TOpenFontSpec& aDesiredFontSpec, TInt aPixelWidth, TInt aPixelHeight,
+ TInt& aFaceIndex, TOpenFontSpec& aActualFontSpec) const
+ {
+ return COpenFontFile::GetNearestFontHelper(aDesiredFontSpec, aPixelWidth, aPixelHeight, aFaceIndex, aActualFontSpec);
+ }
+
+void CTestFontFile::ConstructL()
+ {
+ const TDesC& filename = FileName();
+ TOpenFontFaceAttrib attrib;
+
+ if (filename.CompareF(KTestFont1) == 0)
+ attrib.SetFullName(_L("Test Font1"));
+ else if (filename.CompareF(KTestFont2) == 0)
+ {
+ attrib.SetFullName(_L("Test Font2"));
+ attrib.SetBold(TRUE);
+ attrib.SetItalic(TRUE);
+ }
+ attrib.SetFamilyName(_L("Test"));
+ attrib.SetLocalFullName(attrib.FullName());
+ attrib.SetCoverage(TOpenFontFaceAttrib::ELatinSet);
+ attrib.SetMinSizeInPixels(8);
+ AddFaceL(attrib);
+ }
+
+void CTestFontFile::GetNearestFontInPixelsL(RHeap* aHeap,COpenFontSessionCacheList* aSessionCacheList,
+ const TOpenFontSpec& aDesiredFontSpec,TInt aPixelWidth,TInt aPixelHeight,
+ COpenFont*& aFont,TOpenFontSpec& aActualFontSpec)
+ {
+ aFont = NULL;
+ TInt face_index = 0;
+ if (GetNearestFontHelper(aDesiredFontSpec,aPixelWidth,aPixelHeight,face_index,aActualFontSpec))
+ {
+ aFont = CTestFont::NewL(aHeap,aSessionCacheList,this,aActualFontSpec.Height());
+ }
+ }
+
+void CTestFontFile::GetNearestFontToDesignHeightInPixelsL(RHeap* aHeap,COpenFontSessionCacheList* aSessionCacheList,
+ const TOpenFontSpec& aDesiredFontSpec,TInt aPixelWidth,TInt aPixelHeight,
+ COpenFont*& aFont,TOpenFontSpec& aActualFontSpec)
+ {
+ aFont = NULL;
+ TInt face_index = 0;
+ if (GetNearestFontHelper(aDesiredFontSpec,aPixelWidth,aPixelHeight,face_index,aActualFontSpec))
+ {
+ aFont = CTestFont::NewL(aHeap,aSessionCacheList,this,aActualFontSpec.Height());
+ }
+ }
+
+void CTestFontFile::GetNearestFontToMaxHeightInPixelsL(RHeap* aHeap,COpenFontSessionCacheList* aSessionCacheList,
+ const TOpenFontSpec& aDesiredFontSpec,TInt aPixelWidth,TInt aPixelHeight,
+ COpenFont*& aFont,TOpenFontSpec& aActualFontSpec,TInt /*aMaxHeight*/)
+ {
+ aFont = NULL;
+ TInt face_index = 0;
+ if (GetNearestFontHelper(aDesiredFontSpec,aPixelWidth,aPixelHeight,face_index,aActualFontSpec))
+ {
+ aFont = CTestFont::NewL(aHeap,aSessionCacheList,this,aActualFontSpec.Height());
+ }
+ }
+
+TBool CTestFontFile::HasUnicodeCharacterL(TInt /*aFaceIndex*/,TInt /*aCode*/) const
+ {
+ // has no characters
+ return EFalse;
+ }
+
+CTestFont* CTestFont::NewL(RHeap* aHeap,COpenFontSessionCacheList* aSessionCacheList,
+ CTestFontFile* aFontFile,TInt aSizeInPixels)
+ {
+ CTestFont* f = (CTestFont*)aHeap->AllocL(sizeof(CTestFont));
+ new(f) CTestFont(aHeap,aSessionCacheList,aFontFile,aSizeInPixels);
+ return f;
+ }
+
+CTestFont::CTestFont(RHeap* aHeap,COpenFontSessionCacheList* aSessionCacheList,CTestFontFile* aFontFile,
+ TInt aSizeInPixels):
+ COpenFont(aHeap,aSessionCacheList,aFontFile)
+ {
+ iMetrics.SetSize(aSizeInPixels);
+ iMetrics.SetAscent(aSizeInPixels * 3 / 4);
+ iMetrics.SetDescent(aSizeInPixels - iMetrics.Ascent());
+ iMetrics.SetMaxHeight(iMetrics.Ascent());
+ iMetrics.SetMaxDepth(iMetrics.Descent());
+ iMetrics.SetMaxWidth(aSizeInPixels * 2);
+ }
+
+void CTestFont::RasterizeL(TInt /*aCode*/,TOpenFontGlyphData* /*aGlyphData*/)
+ {
+ // has no glyphs
+ User::Leave(KErrNotSupported);
+ }
+
+
+CTestShaperFactory* CTestShaperFactory::NewL()
+ {
+ return new(ELeave) CTestShaperFactory;
+ }
+
+CTestShaperFactory::CTestShaperFactory()
+ {
+ }
+
+CTestShaperFactory::~CTestShaperFactory()
+ {
+ }
+
+
+CShaper* CTestShaperFactory::NewShaperL(CBitmapFont* aBitmapfont, TInt aScript, TInt aLanguage, RHeap* aHeap)
+ {
+ return CTestShaper::NewL(aBitmapfont, aScript, aLanguage, aHeap);
+ }
+
+void* CShaperFactory::ExtendedInterface(TUid /*aInterfaceId*/)
+ {
+ return 0;
+ }
+
+
+CShaper * CTestShaper::NewL(CBitmapFont* aBitmapfont, TInt aScript, TInt aLanguage, RHeap* aHeap)
+ {
+ CTestShaper* self = new(ELeave) CTestShaper();
+ CleanupStack::PushL(self);
+ TInt error = self->ConstructL(aBitmapfont, aScript, aLanguage, aHeap);
+ if (KErrNone == error)
+ {
+ CleanupStack::Pop();
+ return self;
+ }
+ else
+ {
+ CleanupStack::PopAndDestroy();
+ return NULL;
+ }
+ }
+
+ TInt CTestShaper::ConstructL(CBitmapFont* /*aBitmapfont*/, TInt /*aScript*/, TInt /*aLanguage*/, RHeap* /*aHeap*/ )
+ {
+ return KErrNone;
+ }
+
+CTestShaper::CTestShaper()
+ {
+ }
+
+ CTestShaper::~CTestShaper()
+ {
+ }
+
+TInt CTestShaper::ShapeText(TShapeHeader*& /*aOutput*/, const TInput& /*aInput*/, RHeap* /*aHeapForOutput*/)
+ {
+ return KErrNotSupported;
+ }
+