vghwinterface/vghwserialiser/inc/openvgrfc.h
author Matt Plumtree <matt.plumtree@nokia.com>
Wed, 06 Oct 2010 15:43:10 +0100
branchbug235_bringup_0
changeset 51 4f400a6ea71f
parent 1 guestrendering/vghwserialiser/inc/openvgrfc.h@d8d95053303a
permissions -rwxr-xr-x
Rearrange the package to put certain components into a new collection, vghwinterface. Remove unpopulated syborggraphicswrapper, as it will be integrated into the vghwapiwrapper (ne khronosapiwrapper).

// 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:

#ifndef OPENVGREMOTEFUNCTIONCALL_H_
#define OPENVGREMOTEFUNCTIONCALL_H_

#include "remotefunctioncall.h"

#ifdef __SYMBIAN32__
	#define __VG_OPENVG_H_
	#include <VG/1.1/openvg.h>
	#include <VG/vgu.h>
#else
    #define __OPENVGHEADERS_USE_VG_1_1
    #include <VG/openvg.h>
    #include "VG/vgu.h"
#endif

//OpenVG remote function call
// Represents a function call and contains information about 
// parameters but does not serialize the data
NONSHARABLE_CLASS(OpenVgRFC): public RemoteFunctionCall
    {
public:

    //Openvg pperation code
    enum TOperationCode
        {
        EvgGetError,
        EvgGetPaint,
        EvgCreatePaint,
        EvgInterpolatePath,
        EvgPathLength,
        EvgGetPathCapabilities,
        EvgCreatePath,
        EvgGetf,
        EvgGeti,
        EvgGetVectorSize,
        EvgGetParameterf, //10
        EvgGetParameteri,
        EvgGetParameterVectorSize,
        EvgCreateMaskLayer,
        EvgGetColor,
        EvgCreateImage,
        EvgChildImage,
        EvgGetParent, // now handled in Client DLL
        EvgCreateFont,
        EvgHardwareQuery,
        EvgGetParameterfv, //20
        EvgGetParameteriv,
        EvgGetString,
        EvgGetfv,
        EvgGetiv,
        EvgGetMatrix,
        EvgGetImageSubData,
        EvgReadPixels,
        EvgFlush,
        EvgFinish,
        EvgSetf, //30
        EvgSeti,
        EvgSetfv,
        EvgSetiv,
        EvgSetParameterf,
        EvgSetParameteri,
        EvgSetParameterfv,
        EvgSetParameteriv,
        EvgLoadIdentity,
        EvgLoadMatrix,
        EvgMultMatrix, //40
        EvgTranslate,
        EvgScale,
        EvgShear,
        EvgRotate,
        EvgMask,
        EvgRenderToMask,
        EvgDestroyMaskLayer,
        EvgFillMaskLayer,
        EvgCopyMask,
        EvgClear, //50
        EvgClearPath,
        EvgDestroyPath,
        EvgRemovePathCapabilities,
        EvgAppendPath,
        EvgAppendPathData, //55
        EvgModifyPathCoords,
        EvgTransformPath,
        EvgPointAlongPath,
        EvgPathBounds,
        EvgPathTransformedBounds, //60
        EvgDrawPath,
        EvgDestroyPaint,
        EvgSetPaint,
        EvgSetColor,
        EvgPaintPattern,
        EvgDestroyImage,
        EvgClearImage,
        EvgImageSubData,
        EvgCopyImage,
        EvgDrawImage,
        EvgSetPixels,
        EvgWritePixels,
        EvgGetPixels,
        EvgCopyPixels,
        EvgDestroyFont,
        EvgSetGlyphToPath,
        EvgSetGlyphToImage,
        EvgClearGlyph,
        EvgDrawGlyph,
        EvgDrawGlyphs, //80
        EvgColorMatrix,
        EvgConvolve,
        EvgSeparableConvolve,
        EvgGaussianBlur,
        EvgLookup,
        EvgLookupSingle,
		EvgePathCoordsSizeInBytes, //Not part of OpenVG 1.1
        //Openvgu 1.1
        EvguLine,
        EvguPolygon,
        EvguRect,
        EvguRoundRect,
        EvguEllipse,
        EvguArc,
        EvguComputeWarpQuadToSquare,
        EvguComputeWarpSquareToQuad,
        EvguComputeWarpQuadToQuad,
		EClientShutdown,
		// /* OpenVG extension #4, KHR_EGL_image */
		EvgCreateEGLImageTargetKHR,
        };

    //Parameter data type
    enum TParamType
        {
        EVGfloat,
        EVGbyte,
        EVGubyte,
        EVGshort,
        EVGint,
        EVGuint,
        EVGbitfield,
        EVGboolean,
        EVGHandle,
        EVGErrorCode,
        EVGParamType, //10
        EVGRenderingQuality,
        EVGPixelLayout,
        EVGMatrixMode,
        EVGMaskOperation,
        EVGPathDatatype,
        EVGPathAbsRel,
        EVGPathSegment,
        EVGPathCommand,
        EVGPath,
        EVGPathCapabilities, //20
        EVGPathParamType,
        EVGCapStyle,
        EVGJoinStyle,
        EVGFillRule,
        EVGPaintMode,
        EVGPaint,
        EVGPaintParamType,
        EVGPaintType,
        EVGColorRampSpreadMode,
        EVGTilingMode, //30
        EVGImageFormat,
        EVGImage,
        EVGImageQuality,
        EVGImageParamType,
        EVGImageMode,
        EVGImageChannel,
        EVGBlendMode,
        EVGHardwareQueryType,
        EVGHardwareQueryResult,
        EVGStringID, //40
        EVGvoid,
        EVGUArcType,
        EVGeglImageKHR,
        ETUint64
        };

    OpenVgRFC( RemoteFunctionCallData& aData );
    
    //Appends a simple parameter to the parameter array
    // Does not serialize any data
    inline void AppendTUint64( const TUint64& aParam, RemoteFunctionCallData::TParamDirection aDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGfloat& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGbyte& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGubyte& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGshort& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGint& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGuint& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGboolean& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGErrorCode& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGParamType& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGRenderingQuality& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGPixelLayout& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGMatrixMode& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGMaskOperation& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGPathDatatype& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGPathAbsRel& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGPathSegment& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGPathCommand& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );   
    inline void AppendParam( const VGPathCapabilities& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGPathParamType& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGCapStyle& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGJoinStyle& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGFillRule& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGPaintMode& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGPaintParamType& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGPaintType& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGColorRampSpreadMode& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGTilingMode& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGImageFormat& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGImageQuality& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGImageParamType& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGImageMode& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGImageChannel& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGBlendMode& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGHardwareQueryType& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGHardwareQueryResult& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGStringID& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const VGUArcType& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
#ifdef __SYMBIAN32__
    inline void AppendParam( const VGeglImageKHR& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
#endif
        
    //Gets a simple parameter value from parameter array
    inline void GetTUint64( TUint64& aParam, TInt aIndex );
    inline void GetParamValue( VGfloat& aParam, TInt aIndex );
    inline void GetParamValue( VGbyte& aParam, TInt aIndex );
    inline void GetParamValue( VGubyte& aParam, TInt aIndex );
    inline void GetParamValue( VGshort& aParam, TInt aIndex );
    inline void GetParamValue( VGint& aParam, TInt aIndex );
    inline void GetParamValue( VGuint& aParam, TInt aIndex );
    inline void GetParamValue( VGboolean& aParam, TInt aIndex );
    inline void GetParamValue( VGErrorCode& aParam, TInt aIndex );
    inline void GetParamValue( VGParamType& aParam, TInt aIndex );
    inline void GetParamValue( VGRenderingQuality& aParam, TInt aIndex );
    inline void GetParamValue( VGPixelLayout& aParam, TInt aIndex );
    inline void GetParamValue( VGMatrixMode& aParam, TInt aIndex );
    inline void GetParamValue( VGMaskOperation& aParam, TInt aIndex );
    inline void GetParamValue( VGPathDatatype& aParam, TInt aIndex );
    inline void GetParamValue( VGPathAbsRel& aParam, TInt aIndex );
    inline void GetParamValue( VGPathSegment& aParam, TInt aIndex );
    inline void GetParamValue( VGPathCommand& aParam, TInt aIndex );   
    inline void GetParamValue( VGPathCapabilities& aParam, TInt aIndex );
    inline void GetParamValue( VGPathParamType& aParam, TInt aIndex );
    inline void GetParamValue( VGCapStyle& aParam, TInt aIndex );
    inline void GetParamValue( VGJoinStyle& aParam, TInt aIndex );
    inline void GetParamValue( VGFillRule& aParam, TInt aIndex );
    inline void GetParamValue( VGPaintMode& aParam, TInt aIndex );
    inline void GetParamValue( VGPaintParamType& aParam, TInt aIndex );
    inline void GetParamValue( VGPaintType& aParam, TInt aIndex );
    inline void GetParamValue( VGColorRampSpreadMode& aParam, TInt aIndex );
    inline void GetParamValue( VGTilingMode& aParam, TInt aIndex );
    inline void GetParamValue( VGImageFormat& aParam, TInt aIndex );
    inline void GetParamValue( VGImageQuality& aParam, TInt aIndex );
    inline void GetParamValue( VGImageParamType& aParam, TInt aIndex );
    inline void GetParamValue( VGImageMode& aParam, TInt aIndex );
    inline void GetParamValue( VGImageChannel& aParam, TInt aIndex );
    inline void GetParamValue( VGBlendMode& aParam, TInt aIndex );
    inline void GetParamValue( VGHardwareQueryType& aParam, TInt aIndex );
    inline void GetParamValue( VGHardwareQueryResult& aParam, TInt aIndex );
    inline void GetParamValue( VGStringID& aParam, TInt aIndex );
    inline void GetParamValue( VGUArcType& aParam, TInt aIndex );

    //Gets a pointer to an array parameter from parameter array
    inline void GetVectorData( VGfloat* &aData, TInt& aSize, TInt aIndex );
    inline void GetVectorData( VGint* &aData, TInt& aSize, TInt aIndex );
    inline void GetVectorData( VGuint* &aData, TInt& aSize, TInt aIndex );
    inline void GetVectorData( VGshort* &aData, TInt& aSize, TInt aIndex );
    inline void GetVectorData( VGubyte* &aData, TInt& aSize, TInt aIndex );
    inline void GetVectorData( void* &aData, TInt& aSize, TInt aIndex );

    //Sets a pointer to the data of an array parameter
    inline void SetVectorData( const VGfloat* aData, TInt aLength, TInt aIndex );
    inline void SetVectorData( const VGint* aData, TInt aLength, TInt aIndex );
    inline void SetVectorData( const VGuint* aData, TInt aLength, TInt aIndex );
    inline void SetVectorData( const VGshort* aData, TInt aLength, TInt aIndex );
    inline void SetVectorData( const VGubyte* aData, TInt aLength, TInt aIndex );
    inline void SetVectorData( const void* aData, TInt aLength, TInt aIndex );

    //Appends an array parameter to the parameter array
    // Does not serialize any data
    inline void AppendVector( const VGfloat* aData, TInt aLength, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendVector( const VGint* aData, TInt aLength, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendVector( const VGuint* aData, TInt aLength, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendVector( const VGshort* aData, TInt aLength, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendVector( const VGubyte* aData, TInt aLength, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendVector( const void* aData, TInt aLength, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    
    //Size of type aType
    TInt GetTypeSize( TInt32 aParamType ) const;

    //Alignemnt of type aType
	TInt GetTypeAlignment( TInt32 aParamType ) const;

    //Alignemnt of type aType
	TUint32 GetAPIUid() const;
    };

#include "openvgrfc.inl"
#endif