guestrendering/guestopenvg/src/vgmask.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 Open VG 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
// CVgMaskLayerInfo
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
CVgMaskLayerInfo* CVgMaskLayerInfo::New(VGint aWidth, VGint aHeight)
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
	CVgMaskLayerInfo* self = new CVgMaskLayerInfo(aWidth, aHeight);
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
CVgMaskLayerInfo::~CVgMaskLayerInfo()
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
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    37
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    38
CVgMaskLayerInfo::CVgMaskLayerInfo(VGint aWidth, VGint aHeight) :
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    39
		CVgImageBase(EVgHandleForMaskLayer, aWidth, aHeight)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    40
	{}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    41
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
TBool CVgMaskLayerInfo::DestroyObject(MVgContext& aVgContext)
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
	VGPANIC_ASSERT_DEBUG(iIsDestroyed, EVgPanicTemp);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    46
	OPENVG_TRACE("  CVgMaskLayerInfo::DestroyObject HostHandle=0x%x", iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    47
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    48
	if (iHostHandle)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    49
		{
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::EvgDestroyMaskLayer, RemoteFunctionCallData::EOpRequest);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    52
		vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    53
		aVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    54
		}
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
	return ETrue;
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
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    60
VGint CVgMaskLayerInfo::GetParameterVectorSize(MVgContext& aVgContext, VGint)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    61
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    62
	aVgContext.SetVgError(VG_ILLEGAL_ARGUMENT_ERROR); // VGMasks do not have any parameters
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    63
	return 0;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    64
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    65
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    66
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    67
void CVgMaskLayerInfo::FillMaskLayer(MVgContext& aVgContext, VGint aX, VGint aY, VGint aWidth, VGint aHeight, VGfloat aValue)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    68
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    69
	if ( (aValue < 0.0f) || (aValue > 1.0f) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    70
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    71
		aVgContext.SetVgError(VG_ILLEGAL_ARGUMENT_ERROR);
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
	else
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
		RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    76
		vgApiData.Init(OpenVgRFC::EvgFillMaskLayer, RemoteFunctionCallData::EOpRequest);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    77
		vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    78
		vgApiData.AppendParam(aX);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    79
		vgApiData.AppendParam(aY);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    80
		vgApiData.AppendParam(aWidth);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    81
		vgApiData.AppendParam(aHeight);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    82
		vgApiData.AppendParam(aValue);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    83
		aVgContext.ExecuteVgCommand(vgApiData);
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
	}
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
void CVgMaskLayerInfo::CopyMask(MVgContext& aVgContext, VGint aSx, VGint aSy, VGint aDx, VGint aDy, VGint aWidth, VGint aHeight)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    89
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    90
	// **** Desirable: check maskLayer is compatible with the current surface mask
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    91
	RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    92
	vgApiData.Init(OpenVgRFC::EvgCopyMask, RemoteFunctionCallData::EOpRequest);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    93
	vgApiData.AppendParam(iHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    94
	vgApiData.AppendParam(aSx);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    95
	vgApiData.AppendParam(aSy);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    96
	vgApiData.AppendParam(aDx);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    97
	vgApiData.AppendParam(aDy);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    98
	vgApiData.AppendParam(aWidth);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    99
	vgApiData.AppendParam(aHeight);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   100
	aVgContext.ExecuteVgCommand(vgApiData);
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
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   104
// end of file vgmask.cpp