guestrendering/guestopenvg/src/vgpath.cpp
author Faisal Memon <faisal.memon@nokia.com>
Wed, 08 Sep 2010 17:02:34 +0100
branchbug235_bringup_0
changeset 14 acbd4400e82b
child 24 a3f46bb01be2
permissions -rwxr-xr-x
Add Guest OpenVG
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     1
// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     2
// All rights reserved.
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     3
// This component and the accompanying materials are made available
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     5
// which accompanies this distribution, and is available
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     7
//
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     8
// Initial Contributors:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    10
//
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    11
// Contributors:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    12
//
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    13
// Description:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    14
// Client-side state information for OpenVG handle based objects
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    15
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    16
#include "vgstate.h"
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    17
#include "remotefunctioncall.h"
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    18
#include "openvgrfc.h"
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    19
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    20
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    21
/////////////////////////////////////////////////////////////////////////////////////////////
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    22
// CVgPathInfo
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    23
/////////////////////////////////////////////////////////////////////////////////////////////
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    24
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    25
CVgPathInfo* CVgPathInfo::New(VGPathDatatype aDatatype, VGfloat aScale, VGfloat aBias, VGbitfield aCapabilities)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    26
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    27
	RHeap* clientHeap = CVghwUtils::SwitchToVghwHeap();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    28
	CVgPathInfo* self = new CVgPathInfo(aDatatype, aScale, aBias, aCapabilities);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    29
	CVghwUtils::SwitchFromVghwHeap(clientHeap);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    30
	return self;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    31
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    32
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    33
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    34
void CVgPathInfo::ClearPath(MVgContext& aVgContext, VGbitfield aCapabilities)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    35
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    36
	iCapabilities = aCapabilities & VG_PATH_CAPABILITY_ALL;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    37
	RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    38
	vgApiData.Init(OpenVgRFC::EvgClearPath, RemoteFunctionCallData::EOpRequest);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    39
	vgApiData.AppendParam(HostHandle());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    40
	vgApiData.AppendParam(aCapabilities);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    41
	aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    42
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    43
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    44
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    45
void CVgPathInfo::RemovePathCapabilities(MVgContext& aVgContext, VGbitfield aCapabilities)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    46
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    47
	if (aCapabilities & VG_PATH_CAPABILITY_ALL)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    48
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    49
		iCapabilities = (iCapabilities & ~aCapabilities);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    50
		RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    51
		vgApiData.Init(OpenVgRFC::EvgRemovePathCapabilities, RemoteFunctionCallData::EOpRequest);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    52
		vgApiData.AppendParam(HostHandle());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    53
		vgApiData.AppendParam(aCapabilities & VG_PATH_CAPABILITY_ALL);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    54
		aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    55
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    56
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    57
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    58
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    59
VGbitfield CVgPathInfo::GetPathCapabilities(MVgContext& aVgContext)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    60
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    61
	// value is tracked in Client side - but Debug builds verify state with the Host Open VG
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    62
#ifdef _DEBUG
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    63
	RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    64
	vgApiData.Init(OpenVgRFC::EvgGetPathCapabilities);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    65
	vgApiData.AppendParam(HostHandle());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    66
	VGPANIC_ASSERT_DEBUG(vgApiData.Data().Header().iOpType == RemoteFunctionCallData::EOpRequestWithReply, EVgPanicNotReplyOpcode);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    67
	aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    68
	VGbitfield hostCapabilities = static_cast<VGbitfield>(vgApiData.ReturnValue());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    69
	VGPANIC_ASSERT_DEBUG(hostCapabilities == iCapabilities, EVgPanicTemp);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    70
#endif
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    71
	return iCapabilities;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    72
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    73
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    74
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    75
CVgPathInfo::~CVgPathInfo()
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    76
	{}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    77
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    78
CVgPathInfo::CVgPathInfo(VGPathDatatype aDatatype, VGfloat aScale, VGfloat aBias, VGbitfield aCapabilities) :
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    79
	CVgHandleBase(EVgHandleForPath), iDatatype(aDatatype), iScale(aScale), iBias(aBias), iCapabilities(aCapabilities)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    80
	{}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    81
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    82
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    83
VGPathDatatype CVgPathInfo::PathDatatype() const
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    84
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    85
	return iDatatype;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    86
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    87
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    88
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    89
TBool CVgPathInfo::CheckHasPathCapabilities(MVgContext& aVgContext, VGbitfield aCapabilities)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    90
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    91
	if ( aCapabilities == (aCapabilities & iCapabilities) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    92
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    93
		return ETrue;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    94
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    95
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    96
	OPENVG_TRACE("CVgPathInfo::CheckHasPathCapabilities (iCapabilities=0x%x, aCapabilities=0x%x) setting VG_PATH_CAPABILITY_ERROR",
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    97
			iCapabilities, aCapabilities);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    98
	aVgContext.SetVgError(VG_PATH_CAPABILITY_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    99
	return EFalse;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   100
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   101
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   102
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   103
TBool CVgPathInfo::CheckPathDataAlignment(MVgContext& aVgContext, const void* aPathData)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   104
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   105
	TBool result = EFalse;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   106
	if (aPathData != NULL)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   107
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   108
		switch (iDatatype)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   109
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   110
			case VG_PATH_DATATYPE_S_8:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   111
				result = ETrue;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   112
				break;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   113
			case VG_PATH_DATATYPE_S_16:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   114
				result = !( 1ul & (unsigned)aPathData );
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   115
				break;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   116
			case VG_PATH_DATATYPE_S_32:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   117
			case VG_PATH_DATATYPE_F:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   118
				result = !( 3ul & (unsigned)aPathData );
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   119
				break;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   120
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   121
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   122
	if (!result)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   123
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   124
		OPENVG_TRACE("CVgPathInfo::CheckPathDataAlignment (iDatatype=%d, aPathData=0x%x) setting VG_ILLEGAL_ARGUMENT_ERROR",
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   125
				iDatatype, aPathData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   126
		aVgContext.SetVgError(VG_ILLEGAL_ARGUMENT_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   127
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   128
	return result;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   129
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   130
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   131
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   132
//
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   133
TBool CVgPathInfo::CheckPathDataSize(MVgContext& aVgContext, const VGubyte* aPathSegments, VGint aNumSegments, VGint* aPathDataSize)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   134
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   135
	TBool checkOkay = EFalse;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   136
	VGint pathDataSize = 0;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   137
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   138
	if ( (aNumSegments > 0) && (aPathSegments != NULL) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   139
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   140
		checkOkay = ETrue;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   141
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   142
#define SEGMENT_COMMAND(command) ((command) >> 1)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   143
		// Number of coordinates for each command
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   144
		static const VGint KNumCoords[] = {0,2,2,1,1,4,6,2,4,5,5,5,5};
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   145
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   146
		for (VGint segIdx = 0; segIdx < aNumSegments; )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   147
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   148
			VGubyte segmentType = aPathSegments[segIdx++];
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   149
			if (segmentType > 25) // VGPathSegment max value 12 << 1 or'd with 0|1
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   150
				{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   151
				OPENVG_TRACE("   CheckPathDataSize - unknown segmentType-0x%x", segmentType);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   152
				checkOkay = EFalse;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   153
				break;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   154
				}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   155
			VGint command = SEGMENT_COMMAND(segmentType);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   156
			pathDataSize += KNumCoords[command];
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   157
			OPENVG_TRACE("   CheckPathDataSize segmentType=0x%x: command=0x%x, Total Coord Count=%d", segmentType, command, pathDataSize);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   158
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   159
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   160
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   161
	if ( !checkOkay )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   162
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   163
		aVgContext.SetVgError(VG_ILLEGAL_ARGUMENT_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   164
		OPENVG_TRACE("   CheckPathDataSize - Illegal Argument Error, aPathSegments=0x%x, aNumSegments=%d", aPathSegments, aNumSegments);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   165
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   166
	else
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   167
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   168
		// Number of bytes for each VGPathDatatype
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   169
		static const VGint KNumBytes[] = {1,2,4,4};
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   170
		// convert coord count to bytes
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   171
		pathDataSize *= KNumBytes[iDatatype];
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   172
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   173
		*aPathDataSize = pathDataSize;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   174
		OPENVG_TRACE("   CheckPathDataSize - success, pathDataSize=%d bytes", pathDataSize);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   175
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   176
	return checkOkay;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   177
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   178
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   179
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   180
// Check path parameters for vgAppendPathData
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   181
TBool CVgPathInfo::CheckAppendPathData(MVgContext& aVgContext, VGint aNumSegments, const VGubyte* aPathSegments, const void* aPathData,
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   182
		VGint* aPathDataSize)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   183
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   184
	return CheckPathDataAlignment(aVgContext, aPathData) && CheckPathDataSize(aVgContext, aPathSegments, aNumSegments, aPathDataSize);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   185
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   186
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   187
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   188
TBool CVgPathInfo::DestroyObject(MVgContext& aVgContext)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   189
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   190
	VGPANIC_ASSERT_DEBUG(iIsDestroyed, EVgPanicTemp);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   191
	OPENVG_TRACE("  CVgPathInfo::DestroyObject HostHandle=0x%x", iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   192
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   193
	if (iHostHandle)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   194
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   195
		RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   196
		vgApiData.Init(OpenVgRFC::EvgDestroyPath, RemoteFunctionCallData::EOpRequest);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   197
		vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   198
		aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   199
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   200
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   201
	return ETrue;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   202
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   203
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   204
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   205
VGint CVgPathInfo::GetParameterVectorSize(MVgContext& aVgContext, VGint aParamType)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   206
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   207
	switch (aParamType)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   208
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   209
		case VG_PATH_FORMAT:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   210
		case VG_PATH_DATATYPE:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   211
		case VG_PATH_SCALE:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   212
		case VG_PATH_BIAS:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   213
		case VG_PATH_NUM_SEGMENTS:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   214
		case VG_PATH_NUM_COORDS:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   215
			return 1;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   216
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   217
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   218
	// invalid ParamType
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   219
	aVgContext.SetVgError(VG_ILLEGAL_ARGUMENT_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   220
	return 0;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   221
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   222
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   223
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   224
VGfloat CVgPathInfo::GetParameterf(MVgContext& aVgContext, VGint aParamType)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   225
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   226
	switch (aParamType)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   227
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   228
		case VG_PATH_DATATYPE:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   229
			return (VGfloat) iDatatype;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   230
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   231
		case VG_PATH_SCALE:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   232
			return iScale;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   233
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   234
		case VG_PATH_BIAS:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   235
			return iBias;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   236
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   237
		case VG_PATH_FORMAT:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   238
		case VG_PATH_NUM_SEGMENTS:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   239
		case VG_PATH_NUM_COORDS:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   240
			return HostVgGetParameterf(aVgContext, aParamType);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   241
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   242
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   243
	// invalid ParamType
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   244
	aVgContext.SetVgError(VG_ILLEGAL_ARGUMENT_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   245
	return 0;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   246
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   247
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   248
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   249
VGint CVgPathInfo::GetParameteri(MVgContext& aVgContext, VGint aParamType)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   250
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   251
	switch (aParamType)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   252
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   253
		case VG_PATH_DATATYPE:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   254
			return iDatatype;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   255
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   256
		case VG_PATH_SCALE:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   257
			return (VGint) iScale;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   258
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   259
		case VG_PATH_BIAS:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   260
			return (VGint) iBias;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   261
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   262
		case VG_PATH_FORMAT:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   263
		case VG_PATH_NUM_SEGMENTS:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   264
		case VG_PATH_NUM_COORDS:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   265
			return HostVgGetParameteri(aVgContext, aParamType);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   266
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   267
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   268
	// invalid ParamType
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   269
	aVgContext.SetVgError(VG_ILLEGAL_ARGUMENT_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   270
	return 0;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   271
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   272
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   273
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   274
void CVgPathInfo::AppendPath(MVgContext& aVgContext, CVgPathInfo& aSrcPathInfo)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   275
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   276
	RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   277
	vgApiData.Init(OpenVgRFC::EvgAppendPath, RemoteFunctionCallData::EOpRequest);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   278
	vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   279
	vgApiData.AppendParam(aSrcPathInfo.HostHandle());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   280
	aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   281
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   282
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   283
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   284
void CVgPathInfo::AppendPathData(MVgContext& aVgContext, VGint aNumSegments, const VGubyte * aPathSegments, const void* aPathData)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   285
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   286
	VGint pathDataSize = 0;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   287
	if ( CheckAppendPathData(aVgContext, aNumSegments, aPathSegments, aPathData, &pathDataSize) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   288
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   289
		RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   290
		vgApiData.Init(OpenVgRFC::EvgAppendPathData, RemoteFunctionCallData::EOpRequest);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   291
		vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   292
		vgApiData.AppendParam(aNumSegments);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   293
		vgApiData.AppendVector(aPathSegments, aNumSegments);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   294
		vgApiData.AppendVector(aPathData, pathDataSize);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   295
		aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   296
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   297
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   298
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   299
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   300
//Private extension to Open VG API to get the path length
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   301
VGint CVgPathInfo::HostVgeGetPathCoordsSizeInBytes(MVgContext& aVgContext, VGint aStartIndex, VGint aNumSegments)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   302
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   303
	RemoteFunctionCallData rfcdata; OpenVgRFC vgApiData(rfcdata);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   304
	vgApiData.Init(OpenVgRFC::EvgePathCoordsSizeInBytes);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   305
	vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   306
	vgApiData.AppendParam(aStartIndex);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   307
	vgApiData.AppendParam(aNumSegments);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   308
	VGPANIC_ASSERT_DEBUG(vgApiData.Data().Header().iOpType == RemoteFunctionCallData::EOpRequestWithReply, EVgPanicNotReplyOpcode);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   309
	aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   310
	return static_cast<VGint>(vgApiData.ReturnValue());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   311
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   312
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   313
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   314
void CVgPathInfo::ModifyPathCoords(MVgContext& aVgContext, VGint aStartIndex, VGint aNumSegments, const void* aPathData)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   315
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   316
	if (CheckPathDataAlignment(aVgContext, aPathData))
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   317
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   318
		// The host OpenVG implementation returns -1 if vgePathCoordsSizeInBytes is not supported
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   319
		// It does not seem simple to reliably implement vgePathCoordsSizeInBytes in the Symbian client
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   320
		VGint dataSize = HostVgeGetPathCoordsSizeInBytes(aVgContext, aStartIndex, aNumSegments);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   321
		OPENVG_TRACE("TGuestOpenVg::vgModifyPathCoords - dataSize=%d", dataSize);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   322
		if (dataSize <= 0)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   323
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   324
			aVgContext.SetVgError(VG_ILLEGAL_ARGUMENT_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   325
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   326
		else
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   327
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   328
			RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   329
			vgApiData.Init(OpenVgRFC::EvgModifyPathCoords, RemoteFunctionCallData::EOpRequest);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   330
			vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   331
			vgApiData.AppendParam(aStartIndex);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   332
			vgApiData.AppendParam(aNumSegments);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   333
			vgApiData.AppendVector(aPathData, dataSize);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   334
			aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   335
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   336
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   337
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   338
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   339
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   340
void CVgPathInfo::TransformPath(MVgContext& aVgContext, CVgPathInfo& aSrcPathInfo)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   341
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   342
	RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   343
	vgApiData.Init(OpenVgRFC::EvgTransformPath, RemoteFunctionCallData::EOpRequest);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   344
	vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   345
	vgApiData.AppendParam(aSrcPathInfo.HostHandle());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   346
	aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   347
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   348
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   349
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   350
VGboolean CVgPathInfo::InterpolatePath(MVgContext& aVgContext, CVgPathInfo& aStartPathInfo, CVgPathInfo& aEndPathInfo, VGfloat aAmount)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   351
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   352
	RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   353
	vgApiData.Init(OpenVgRFC::EvgInterpolatePath);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   354
	vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   355
	vgApiData.AppendParam(aStartPathInfo.HostHandle());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   356
	vgApiData.AppendParam(aEndPathInfo.HostHandle());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   357
	vgApiData.AppendParam(aAmount);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   358
	VGPANIC_ASSERT_DEBUG(vgApiData.Data().Header().iOpType == RemoteFunctionCallData::EOpRequestWithReply, EVgPanicNotReplyOpcode);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   359
	aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   360
	return static_cast<VGboolean>(vgApiData.ReturnValue());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   361
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   362
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   363
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   364
VGfloat CVgPathInfo::PathLength(MVgContext& aVgContext, VGint aStartSegment, VGint aNumSegments)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   365
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   366
	RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   367
	vgApiData.Init(OpenVgRFC::EvgPathLength);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   368
	vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   369
	vgApiData.AppendParam(aStartSegment);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   370
	vgApiData.AppendParam(aNumSegments);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   371
	VGPANIC_ASSERT_DEBUG(vgApiData.Data().Header().iOpType == RemoteFunctionCallData::EOpRequestWithReply, EVgPanicNotReplyOpcode);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   372
	aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   373
	return static_cast<VGfloat>(vgApiData.ReturnValue());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   374
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   375
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   376
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   377
void CVgPathInfo::PointAlongPath(MVgContext& aVgContext, VGint aStartSegment, VGint aNumSegments, VGfloat aDistance,
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   378
		VGfloat* aX, VGfloat* aY, VGfloat* aTangentX, VGfloat* aTangentY)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   379
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   380
	TBool getPoint = (aX && aY);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   381
	TBool getTangent = (aTangentX && aTangentY);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   382
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   383
	if ( getPoint && !TCheck::Chk2x32bitPtr(aVgContext, aX, aY) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   384
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   385
		return;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   386
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   387
	if ( getTangent && !TCheck::Chk2x32bitPtr(aVgContext, aTangentX, aTangentY) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   388
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   389
		return;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   390
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   391
	if (getPoint || getTangent)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   392
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   393
		RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   394
		vgApiData.Init(OpenVgRFC::EvgPointAlongPath);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   395
		vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   396
		vgApiData.AppendParam(aStartSegment);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   397
		vgApiData.AppendParam(aNumSegments);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   398
		vgApiData.AppendParam(aDistance);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   399
		vgApiData.AppendVector(aX, getPoint ? 1 : 0, RemoteFunctionCallData::EOut);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   400
		vgApiData.AppendVector(aY, getPoint ? 1 : 0, RemoteFunctionCallData::EOut);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   401
		vgApiData.AppendVector(aTangentX, getTangent ? 1 : 0, RemoteFunctionCallData::EOut);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   402
		vgApiData.AppendVector(aTangentY, getTangent ? 1 : 0, RemoteFunctionCallData::EOut);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   403
		aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   404
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   405
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   406
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   407
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   408
void CVgPathInfo::PathBounds(MVgContext& aVgContext, VGfloat* aMinX, VGfloat* aMinY, VGfloat* aWidth, VGfloat* aHeight)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   409
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   410
	if (TCheck::Chk4x32bitPtr(aVgContext, aMinX, aMinY, aWidth, aHeight) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   411
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   412
		RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   413
		vgApiData.Init(OpenVgRFC::EvgPathBounds);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   414
		vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   415
		vgApiData.AppendVector(aMinX, 1, RemoteFunctionCallData::EOut);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   416
		vgApiData.AppendVector(aMinY, 1, RemoteFunctionCallData::EOut);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   417
		vgApiData.AppendVector(aWidth, 1, RemoteFunctionCallData::EOut);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   418
		vgApiData.AppendVector(aHeight, 1, RemoteFunctionCallData::EOut);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   419
		aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   420
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   421
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   422
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   423
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   424
void CVgPathInfo::PathTransformedBounds(MVgContext& aVgContext, VGfloat* aMinX, VGfloat* aMinY, VGfloat* aWidth, VGfloat* aHeight)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   425
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   426
	if (TCheck::Chk4x32bitPtr(aVgContext, aMinX, aMinY, aWidth, aHeight) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   427
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   428
		RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   429
		vgApiData.Init(OpenVgRFC::EvgPathTransformedBounds);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   430
		vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   431
		vgApiData.AppendVector(aMinX, 1, RemoteFunctionCallData::EOut);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   432
		vgApiData.AppendVector(aMinY, 1, RemoteFunctionCallData::EOut);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   433
		vgApiData.AppendVector(aWidth, 1, RemoteFunctionCallData::EOut);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   434
		vgApiData.AppendVector(aHeight, 1, RemoteFunctionCallData::EOut);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   435
		aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   436
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   437
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   438
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   439
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   440
void CVgPathInfo::DrawPath(MVgContext& aVgContext, VGbitfield aPaintModes)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   441
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   442
	if ( TCheck::ChkVGPaintModesCombination(aVgContext, aPaintModes) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   443
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   444
		RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   445
		vgApiData.Init(OpenVgRFC::EvgDrawPath, RemoteFunctionCallData::EOpRequest);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   446
		vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   447
		vgApiData.AppendParam(aPaintModes);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   448
		aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   449
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   450
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   451
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   452
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   453
void CVgPathInfo::RenderToMask(MVgContext& aVgContext, VGbitfield aPaintModes, VGMaskOperation aOperation)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   454
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   455
	if ( TCheck::ChkVGPaintModesCombination(aVgContext, aPaintModes) && TCheck::ChkVGMaskOperation(aVgContext, aOperation) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   456
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   457
		RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   458
		vgApiData.Init(OpenVgRFC::EvgRenderToMask, RemoteFunctionCallData::EOpRequest);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   459
		vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   460
		vgApiData.AppendParam(aPaintModes);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   461
		vgApiData.AppendParam(aOperation);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   462
		aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   463
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   464
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   465
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   466
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   467
// end of file vgpath.cpp