graphicsapitest/graphicssvs/fntstore/src/T_TestOpenFont.cpp
changeset 0 5d03bc08d59c
--- /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;
+	}
+