Host components now buildable in their correct locations (although stil using CMake). Use build.bat in package root.
Note holdingarea build no longer works and everything except llvm will be removed soon.
Fix ups to references to components moved to vghwinterface.
Move package common headers up to pacakge level inc directory.
// Copyright (c) 2010 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:
// Client-side state information for Open VG handle based objects
#include "vgstate.h"
#include "remotefunctioncall.h"
#include "openvgrfc.h"
/////////////////////////////////////////////////////////////////////////////////////////////
// CVgFontInfo
/////////////////////////////////////////////////////////////////////////////////////////////
CVgFontInfo* CVgFontInfo::New()
{
RHeap* clientHeap = CVghwUtils::SwitchToVghwHeap();
CVgFontInfo* self = new CVgFontInfo();
CVghwUtils::SwitchFromVghwHeap(clientHeap);
return self;
}
CVgFontInfo::~CVgFontInfo()
{}
CVgFontInfo::CVgFontInfo() :
CVgHandleBase(EVgHandleForFont)
{}
TBool CVgFontInfo::DestroyObject(MVgContext& aVgContext)
{
VGPANIC_ASSERT_DEBUG(iIsDestroyed, EVgPanicTemp);
OPENVG_TRACE(" CVgFontInfo::DestroyObject HostHandle=0x%x", iHostHandle);
if (iHostHandle)
{
RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
vgApiData.Init(OpenVgRFC::EvgDestroyFont, RemoteFunctionCallData::EOpRequest);
vgApiData.AppendParam(iHostHandle);
aVgContext.ExecuteVgCommand(vgApiData);
}
return ETrue;
}
VGint CVgFontInfo::GetParameterVectorSize(MVgContext& aVgContext, VGint aParamType)
{
switch (aParamType)
{
case VG_FONT_NUM_GLYPHS:
return 1;
}
// invalid ParamType
aVgContext.SetVgError(VG_ILLEGAL_ARGUMENT_ERROR);
return 0;
}
void CVgFontInfo::SetGlyphToPath(MVgContext& aVgContext, VGuint aGlyphIndex, CVgPathInfo* aPathInfo, VGboolean aIsHinted,
const VGfloat aGlyphOrigin [2], const VGfloat aEscapement[2])
{
RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
vgApiData.Init(OpenVgRFC::EvgSetGlyphToPath, RemoteFunctionCallData::EOpRequest);
vgApiData.AppendParam(iHostHandle);
vgApiData.AppendParam(aGlyphIndex);
vgApiData.AppendParam( (aPathInfo == NULL) ? VG_INVALID_HANDLE : aPathInfo->HostHandle());
vgApiData.AppendParam(aIsHinted);
vgApiData.AppendVector(aGlyphOrigin, 2);
vgApiData.AppendVector(aEscapement, 2);
aVgContext.ExecuteVgCommand(vgApiData);
}
void CVgFontInfo::SetGlyphToImage(MVgContext& aVgContext, VGuint aGlyphIndex, CVgImageInfo* aImageInfo, const VGfloat aGlyphOrigin [2],
const VGfloat aEscapement[2])
{
// ToDo track use of VG Images (esp SgImages) as Font Glyphs
RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
vgApiData.Init(OpenVgRFC::EvgSetGlyphToImage, RemoteFunctionCallData::EOpRequest);
vgApiData.AppendParam(iHostHandle);
vgApiData.AppendParam(aGlyphIndex);
vgApiData.AppendParam( (aImageInfo == NULL) ? VG_INVALID_HANDLE : aImageInfo->HostHandle());
vgApiData.AppendVector(aGlyphOrigin, 2);
vgApiData.AppendVector(aEscapement, 2);
TUint64 sgId(0L);
if (aImageInfo && aImageInfo->IsEglSibling())
{
sgId = aImageInfo->SgImageId();
}
vgApiData.AppendTUint64(sgId);
aVgContext.ExecuteVgCommand(vgApiData);
}
void CVgFontInfo::ClearGlyph(MVgContext& aVgContext, VGuint aGlyphIndex)
{
// **** Desirable: verify aGlyphIndex, ToDo decrement SgImage reference count
RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
vgApiData.Init(OpenVgRFC::EvgClearGlyph, RemoteFunctionCallData::EOpRequest);
vgApiData.AppendParam(iHostHandle);
vgApiData.AppendParam(aGlyphIndex);
aVgContext.ExecuteVgCommand(vgApiData);
}
void CVgFontInfo::DrawGlyph(MVgContext& aVgContext, VGuint aGlyphIndex, VGbitfield aPaintModes, VGboolean aAllowAutoHinting)
{
// **** Desirable: verify aGlyphIndex
RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
vgApiData.Init(OpenVgRFC::EvgDrawGlyph, RemoteFunctionCallData::EOpRequest);
vgApiData.AppendParam(iHostHandle);
vgApiData.AppendParam(aGlyphIndex);
vgApiData.AppendParam(aPaintModes);
vgApiData.AppendParam(aAllowAutoHinting);
aVgContext.ExecuteVgCommand(vgApiData);
}
void CVgFontInfo::DrawGlyphs(MVgContext& aVgContext, VGint aGlyphCount, const VGuint * aGlyphIndices, const VGfloat * aAdjustmentsX,
const VGfloat * aAdjustmentsY, VGbitfield aPaintModes, VGboolean aAllowAutoHinting)
{
// **** Desirable: verify glyph indices?
if (aGlyphCount <= 0)
{
aVgContext.SetVgError(VG_ILLEGAL_ARGUMENT_ERROR);
}
else
{
RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
vgApiData.Init(OpenVgRFC::EvgDrawGlyphs, RemoteFunctionCallData::EOpRequest);
vgApiData.AppendParam(iHostHandle);
vgApiData.AppendParam(aGlyphCount);
vgApiData.AppendVector(aGlyphIndices, aGlyphCount);
vgApiData.AppendVector(aAdjustmentsX, (aAdjustmentsX == NULL) ? 0 : aGlyphCount);
vgApiData.AppendVector(aAdjustmentsY, (aAdjustmentsY == NULL) ? 0 : aGlyphCount);
vgApiData.AppendParam(aPaintModes);
vgApiData.AppendParam(aAllowAutoHinting);
aVgContext.ExecuteVgCommand(vgApiData);
}
}
// end of file vgfont.cpp