openvg/openvgrefimplementation/sfopenvg/sfopenvg/riVGU.cpp
author William Roberts <williamr@symbian.org>
Fri, 11 Jun 2010 16:28:08 +0100
branchGCC_SURGE
changeset 96 faed0e24b58a
parent 43 7579f232bae7
permissions -rw-r--r--
Branch for GCC_SURGE fixes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
43
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     1
/*------------------------------------------------------------------------
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     2
 *
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     3
 * VGU library for OpenVG 1.1 Reference Implementation
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     4
 * ---------------------------------------------------
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     5
 *
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     6
 * Copyright (c) 2007 The Khronos Group Inc.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     7
 *
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     8
 * Permission is hereby granted, free of charge, to any person obtaining a
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
     9
 * copy of this software and /or associated documentation files
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    10
 * (the "Materials "), to deal in the Materials without restriction,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    11
 * including without limitation the rights to use, copy, modify, merge,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    12
 * publish, distribute, sublicense, and/or sell copies of the Materials,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    13
 * and to permit persons to whom the Materials are furnished to do so,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    14
 * subject to the following conditions: 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    15
 *
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    16
 * The above copyright notice and this permission notice shall be included 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    17
 * in all copies or substantial portions of the Materials. 
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    18
 *
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    19
 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    20
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    21
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    22
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    23
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    24
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    25
 * THE USE OR OTHER DEALINGS IN THE MATERIALS.
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    26
 *
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    27
 *//**
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    28
 * \file
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    29
 * \brief	Implementation of the VGU utility library for OpenVG
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    30
 *//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    31
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    32
#include "vgu.h"
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    33
#include "openvg.h"
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    34
#include "riMath.h"
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    35
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    36
#ifdef BUILD_WITH_PRIVATE_VGU
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    37
#include "vguinternal.h"
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    38
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    39
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    40
#ifdef BUILD_WITH_PRIVATE_OPENVG
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    41
#include "openvginternal.h"
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    42
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    43
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    44
using namespace OpenVGRI;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    45
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    46
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    47
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    48
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    49
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    50
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    51
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    52
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    53
static void append(VGPath path, int numSegments, const VGubyte* segments, int numCoordinates, const VGfloat* coordinates)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    54
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    55
	RI_ASSERT(numCoordinates <= 26);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    56
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    57
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    58
#ifdef BUILD_WITH_PRIVATE_OPENVG
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    59
	VGPathDatatype datatype = (VGPathDatatype)/*do_vg*/vgGetParameteri(path, VG_PATH_DATATYPE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    60
	VGfloat scale = /*do_vg*/vgGetParameterf(path, VG_PATH_SCALE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    61
	VGfloat bias = /*do_vg*/vgGetParameterf(path, VG_PATH_BIAS);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    62
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    63
	VGPathDatatype datatype = (VGPathDatatype)vgGetParameteri(path, VG_PATH_DATATYPE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    64
	VGfloat scale = vgGetParameterf(path, VG_PATH_SCALE);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    65
	VGfloat bias = vgGetParameterf(path, VG_PATH_BIAS);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    66
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    67
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    68
	switch(datatype)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    69
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    70
	case VG_PATH_DATATYPE_S_8:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    71
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    72
		RIint8 data[26];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    73
		for(int i=0;i<numCoordinates;i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    74
			data[i] = (RIint8)floor((coordinates[i] - bias) / scale + 0.5f);	//add 0.5 for correct rounding
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    75
#ifdef BUILD_WITH_PRIVATE_OPENVG
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    76
		/*do_vg*/vgAppendPathData(path, numSegments, segments, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    77
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    78
		vgAppendPathData(path, numSegments, segments, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    79
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    80
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    81
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    82
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    83
	case VG_PATH_DATATYPE_S_16:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    84
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    85
		RIint16 data[26];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    86
		for(int i=0;i<numCoordinates;i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    87
			data[i] = (RIint16)floor((coordinates[i] - bias) / scale + 0.5f);	//add 0.5 for correct rounding
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    88
#ifdef BUILD_WITH_PRIVATE_OPENVG
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    89
		/*do_vg*/vgAppendPathData(path, numSegments, segments, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    90
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    91
		vgAppendPathData(path, numSegments, segments, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    92
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    93
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    94
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    95
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    96
	case VG_PATH_DATATYPE_S_32:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    97
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    98
		RIint32 data[26];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
    99
		for(int i=0;i<numCoordinates;i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   100
			data[i] = (RIint32)floor((coordinates[i] - bias) / scale + 0.5f);	//add 0.5 for correct rounding
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   101
#ifdef BUILD_WITH_PRIVATE_OPENVG
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   102
		/*do_vg*/vgAppendPathData(path, numSegments, segments, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   103
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   104
		vgAppendPathData(path, numSegments, segments, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   105
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   106
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   107
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   108
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   109
	default:
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   110
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   111
		RI_ASSERT(datatype == VG_PATH_DATATYPE_F);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   112
		RIfloat32 data[26];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   113
		for(int i=0;i<numCoordinates;i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   114
			data[i] = (RIfloat32)((coordinates[i] - bias) / scale);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   115
#ifdef BUILD_WITH_PRIVATE_OPENVG
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   116
		/*do_vg*/vgAppendPathData(path, numSegments, segments, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   117
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   118
		vgAppendPathData(path, numSegments, segments, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   119
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   120
		break;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   121
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   122
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   123
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   124
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   125
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   126
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   127
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   128
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   129
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   130
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   131
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   132
#ifdef BUILD_WITH_PRIVATE_VGU
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   133
VGUErrorCode RI_APIENTRY do_vguLine(VGPath path, VGfloat x0, VGfloat y0, VGfloat x1, VGfloat y1)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   134
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   135
VGUErrorCode RI_APIENTRY vguLine(VGPath path, VGfloat x0, VGfloat y0, VGfloat x1, VGfloat y1)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   136
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   137
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   138
	VGErrorCode error = vgGetError();	//clear the error state
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   139
	static const VGubyte segments[2] = {VG_MOVE_TO | VG_ABSOLUTE, VG_LINE_TO | VG_ABSOLUTE};
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   140
	const VGfloat data[4] = {x0, y0, x1, y1};
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   141
	append(path, 2, segments, 4, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   142
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   143
	error = vgGetError();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   144
	if(error == VG_BAD_HANDLE_ERROR)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   145
		return VGU_BAD_HANDLE_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   146
	else if(error == VG_PATH_CAPABILITY_ERROR)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   147
		return VGU_PATH_CAPABILITY_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   148
	return VGU_NO_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   149
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   150
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   151
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   152
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   153
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   154
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   155
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   156
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   157
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   158
#ifdef BUILD_WITH_PRIVATE_VGU
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   159
VGUErrorCode RI_APIENTRY do_vguPolygon(VGPath path, const VGfloat * points, VGint count, VGboolean closed)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   160
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   161
VGUErrorCode RI_APIENTRY vguPolygon(VGPath path, const VGfloat * points, VGint count, VGboolean closed)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   162
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   163
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   164
	VGErrorCode error = vgGetError();	//clear the error state
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   165
	if(!points || (((RIuintptr)points) & 3) || count <= 0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   166
		return VGU_ILLEGAL_ARGUMENT_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   167
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   168
	VGubyte segments[1] = {VG_MOVE_TO | VG_ABSOLUTE};
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   169
	VGfloat data[2];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   170
	for(int i=0;i<count;i++)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   171
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   172
		data[0] = points[i*2+0];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   173
		data[1] = points[i*2+1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   174
		append(path, 1, segments, 2, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   175
		segments[0] = VG_LINE_TO | VG_ABSOLUTE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   176
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   177
	if(closed)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   178
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   179
		segments[0] = VG_CLOSE_PATH;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   180
		append(path, 1, segments, 0, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   181
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   182
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   183
	error = vgGetError();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   184
	if(error == VG_BAD_HANDLE_ERROR)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   185
		return VGU_BAD_HANDLE_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   186
	else if(error == VG_PATH_CAPABILITY_ERROR)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   187
		return VGU_PATH_CAPABILITY_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   188
	return VGU_NO_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   189
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   190
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   191
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   192
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   193
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   194
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   195
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   196
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   197
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   198
#ifdef BUILD_WITH_PRIVATE_VGU
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   199
VGUErrorCode RI_APIENTRY do_vguRect(VGPath path, VGfloat x, VGfloat y, VGfloat width, VGfloat height)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   200
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   201
VGUErrorCode RI_APIENTRY vguRect(VGPath path, VGfloat x, VGfloat y, VGfloat width, VGfloat height)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   202
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   203
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   204
	VGErrorCode error = vgGetError();	//clear the error state
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   205
	if(width <= 0 || height <= 0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   206
		return VGU_ILLEGAL_ARGUMENT_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   207
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   208
	static const VGubyte segments[5] = {VG_MOVE_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   209
										VG_HLINE_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   210
										VG_VLINE_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   211
										VG_HLINE_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   212
										VG_CLOSE_PATH};
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   213
	const VGfloat data[5] = {x, y, x + width, y + height, x};
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   214
	append(path, 5, segments, 5, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   215
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   216
	error = vgGetError();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   217
	if(error == VG_BAD_HANDLE_ERROR)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   218
		return VGU_BAD_HANDLE_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   219
	else if(error == VG_PATH_CAPABILITY_ERROR)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   220
		return VGU_PATH_CAPABILITY_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   221
	return VGU_NO_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   222
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   223
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   224
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   225
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   226
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   227
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   228
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   229
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   230
#ifdef BUILD_WITH_PRIVATE_VGU
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   231
VGUErrorCode RI_APIENTRY do_vguRoundRect(VGPath path, VGfloat x, VGfloat y, VGfloat width, VGfloat height, VGfloat arcWidth, VGfloat arcHeight)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   232
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   233
VGUErrorCode RI_APIENTRY vguRoundRect(VGPath path, VGfloat x, VGfloat y, VGfloat width, VGfloat height, VGfloat arcWidth, VGfloat arcHeight)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   234
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   235
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   236
	VGErrorCode error = vgGetError();	//clear the error state
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   237
	if(width <= 0 || height <= 0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   238
		return VGU_ILLEGAL_ARGUMENT_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   239
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   240
	arcWidth = RI_CLAMP(arcWidth, 0.0f, width);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   241
	arcHeight = RI_CLAMP(arcHeight, 0.0f, height);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   242
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   243
	static const VGubyte segments[10] = {VG_MOVE_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   244
										 VG_HLINE_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   245
										 VG_SCCWARC_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   246
										 VG_VLINE_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   247
										 VG_SCCWARC_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   248
										 VG_HLINE_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   249
										 VG_SCCWARC_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   250
										 VG_VLINE_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   251
										 VG_SCCWARC_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   252
										 VG_CLOSE_PATH};
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   253
	const VGfloat data[26] = {x + arcWidth/2, y,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   254
							  x + width - arcWidth/2,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   255
							  arcWidth/2, arcHeight/2, 0, x + width, y + arcHeight/2,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   256
							  y + height - arcHeight/2,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   257
							  arcWidth/2, arcHeight/2, 0, x + width - arcWidth/2, y + height,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   258
							  x + arcWidth/2,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   259
							  arcWidth/2, arcHeight/2, 0, x, y + height - arcHeight/2,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   260
							  y + arcHeight/2,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   261
							  arcWidth/2, arcHeight/2, 0, x + arcWidth/2, y};
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   262
	append(path, 10, segments, 26, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   263
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   264
	error = vgGetError();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   265
	if(error == VG_BAD_HANDLE_ERROR)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   266
		return VGU_BAD_HANDLE_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   267
	else if(error == VG_PATH_CAPABILITY_ERROR)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   268
		return VGU_PATH_CAPABILITY_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   269
	return VGU_NO_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   270
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   271
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   272
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   273
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   274
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   275
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   276
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   277
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   278
#ifdef BUILD_WITH_PRIVATE_VGU
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   279
VGUErrorCode RI_APIENTRY do_vguEllipse(VGPath path, VGfloat cx, VGfloat cy, VGfloat width, VGfloat height)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   280
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   281
VGUErrorCode RI_APIENTRY vguEllipse(VGPath path, VGfloat cx, VGfloat cy, VGfloat width, VGfloat height)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   282
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   283
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   284
	VGErrorCode error = vgGetError();	//clear the error state
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   285
	if(width <= 0 || height <= 0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   286
		return VGU_ILLEGAL_ARGUMENT_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   287
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   288
	static const VGubyte segments[4] = {VG_MOVE_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   289
										VG_SCCWARC_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   290
										VG_SCCWARC_TO | VG_ABSOLUTE,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   291
										VG_CLOSE_PATH};
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   292
	const VGfloat data[12] = {cx + width/2, cy,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   293
							  width/2, height/2, 0, cx - width/2, cy,
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   294
							  width/2, height/2, 0, cx + width/2, cy};
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   295
	append(path, 4, segments, 12, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   296
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   297
	error = vgGetError();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   298
	if(error == VG_BAD_HANDLE_ERROR)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   299
		return VGU_BAD_HANDLE_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   300
	else if(error == VG_PATH_CAPABILITY_ERROR)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   301
		return VGU_PATH_CAPABILITY_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   302
	return VGU_NO_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   303
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   304
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   305
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   306
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   307
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   308
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   309
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   310
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   311
#ifdef BUILD_WITH_PRIVATE_VGU
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   312
VGUErrorCode RI_APIENTRY do_vguArc(VGPath path, VGfloat x, VGfloat y, VGfloat width, VGfloat height, VGfloat startAngle, VGfloat angleExtent, VGUArcType arcType)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   313
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   314
VGUErrorCode RI_APIENTRY vguArc(VGPath path, VGfloat x, VGfloat y, VGfloat width, VGfloat height, VGfloat startAngle, VGfloat angleExtent, VGUArcType arcType)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   315
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   316
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   317
	VGErrorCode error = vgGetError();	//clear the error state
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   318
	if((arcType != VGU_ARC_OPEN && arcType != VGU_ARC_CHORD && arcType != VGU_ARC_PIE) || width <= 0.0f || height <= 0.0f)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   319
		return VGU_ILLEGAL_ARGUMENT_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   320
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   321
	startAngle = RI_DEG_TO_RAD(startAngle);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   322
	angleExtent = RI_DEG_TO_RAD(angleExtent);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   323
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   324
	VGfloat w = width/2.0f;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   325
	VGfloat h = height/2.0f;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   326
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   327
	VGubyte segments[1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   328
	VGfloat data[5];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   329
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   330
	segments[0] = VG_MOVE_TO | VG_ABSOLUTE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   331
	data[0] = x + w * (VGfloat)cos(startAngle);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   332
	data[1] = y + h * (VGfloat)sin(startAngle);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   333
	append(path, 1, segments, 2, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   334
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   335
	data[0] = w;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   336
	data[1] = h;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   337
	data[2] = 0.0f;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   338
	VGfloat endAngle = startAngle + angleExtent;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   339
	if(angleExtent >= 0.0f)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   340
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   341
		segments[0] = VG_SCCWARC_TO | VG_ABSOLUTE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   342
		for(VGfloat a = startAngle + PI;a < endAngle; a += PI)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   343
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   344
			data[3] = x + w * (VGfloat)cos(a);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   345
			data[4] = y + h * (VGfloat)sin(a);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   346
			append(path, 1, segments, 5, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   347
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   348
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   349
	else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   350
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   351
		segments[0] = VG_SCWARC_TO | VG_ABSOLUTE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   352
		for(VGfloat a = startAngle - PI;a > endAngle; a -= PI)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   353
		{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   354
			data[3] = x + w * (VGfloat)cos(a);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   355
			data[4] = y + h * (VGfloat)sin(a);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   356
			append(path, 1, segments, 5, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   357
		}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   358
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   359
	data[3] = x + w * (VGfloat)cos(endAngle);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   360
	data[4] = y + h * (VGfloat)sin(endAngle);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   361
	append(path, 1, segments, 5, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   362
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   363
	if(arcType == VGU_ARC_CHORD)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   364
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   365
		segments[0] = VG_CLOSE_PATH;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   366
		append(path, 1, segments, 0, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   367
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   368
	else if(arcType == VGU_ARC_PIE)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   369
	{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   370
		segments[0] = VG_LINE_TO | VG_ABSOLUTE;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   371
		data[0] = x;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   372
		data[1] = y;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   373
		append(path, 1, segments, 2, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   374
		segments[0] = VG_CLOSE_PATH;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   375
		append(path, 1, segments, 0, data);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   376
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   377
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   378
	error = vgGetError();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   379
	if(error == VG_BAD_HANDLE_ERROR)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   380
		return VGU_BAD_HANDLE_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   381
	else if(error == VG_PATH_CAPABILITY_ERROR)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   382
		return VGU_PATH_CAPABILITY_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   383
	return VGU_NO_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   384
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   385
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   386
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   387
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   388
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   389
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   390
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   391
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   392
#ifdef BUILD_WITH_PRIVATE_VGU
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   393
VGUErrorCode RI_APIENTRY do_vguComputeWarpQuadToSquare(VGfloat sx0, VGfloat sy0, VGfloat sx1, VGfloat sy1, VGfloat sx2, VGfloat sy2, VGfloat sx3, VGfloat sy3, VGfloat * matrix)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   394
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   395
VGUErrorCode RI_APIENTRY vguComputeWarpQuadToSquare(VGfloat sx0, VGfloat sy0, VGfloat sx1, VGfloat sy1, VGfloat sx2, VGfloat sy2, VGfloat sx3, VGfloat sy3, VGfloat * matrix)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   396
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   397
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   398
	if(!matrix || ((RIuintptr)matrix) & 3)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   399
		return VGU_ILLEGAL_ARGUMENT_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   400
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   401
	VGfloat mat[9];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   402
#ifdef BUILD_WITH_PRIVATE_VGU
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   403
	VGUErrorCode ret = do_vguComputeWarpSquareToQuad(sx0, sy0, sx1, sy1, sx2, sy2, sx3, sy3, mat);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   404
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   405
	VGUErrorCode ret = vguComputeWarpSquareToQuad(sx0, sy0, sx1, sy1, sx2, sy2, sx3, sy3, mat);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   406
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   407
	if(ret == VGU_BAD_WARP_ERROR)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   408
		return VGU_BAD_WARP_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   409
	Matrix3x3 m(mat[0], mat[3], mat[6],
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   410
				mat[1], mat[4], mat[7],
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   411
				mat[2], mat[5], mat[8]);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   412
	bool nonsingular = m.invert();
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   413
	if(!nonsingular)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   414
		return VGU_BAD_WARP_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   415
	matrix[0] = m[0][0];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   416
	matrix[1] = m[1][0];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   417
	matrix[2] = m[2][0];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   418
	matrix[3] = m[0][1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   419
	matrix[4] = m[1][1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   420
	matrix[5] = m[2][1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   421
	matrix[6] = m[0][2];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   422
	matrix[7] = m[1][2];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   423
	matrix[8] = m[2][2];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   424
	return VGU_NO_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   425
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   426
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   427
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   428
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   429
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   430
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   431
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   432
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   433
#ifdef BUILD_WITH_PRIVATE_VGU
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   434
VGUErrorCode RI_APIENTRY do_vguComputeWarpSquareToQuad(VGfloat dx0, VGfloat dy0, VGfloat dx1, VGfloat dy1, VGfloat dx2, VGfloat dy2, VGfloat dx3, VGfloat dy3, VGfloat * matrix)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   435
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   436
VGUErrorCode RI_APIENTRY vguComputeWarpSquareToQuad(VGfloat dx0, VGfloat dy0, VGfloat dx1, VGfloat dy1, VGfloat dx2, VGfloat dy2, VGfloat dx3, VGfloat dy3, VGfloat * matrix)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   437
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   438
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   439
	if(!matrix || ((RIuintptr)matrix) & 3)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   440
		return VGU_ILLEGAL_ARGUMENT_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   441
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   442
	//from Heckbert:Fundamentals of Texture Mapping and Image Warping
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   443
	//Note that his mapping of vertices is different from OpenVG's
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   444
	//(0,0) => (dx0,dy0)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   445
	//(1,0) => (dx1,dy1)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   446
	//(0,1) => (dx2,dy2)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   447
	//(1,1) => (dx3,dy3)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   448
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   449
	VGfloat diffx1 = dx1 - dx3;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   450
	VGfloat diffy1 = dy1 - dy3;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   451
	VGfloat diffx2 = dx2 - dx3;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   452
	VGfloat diffy2 = dy2 - dy3;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   453
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   454
	VGfloat det = diffx1*diffy2 - diffx2*diffy1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   455
	if(det == 0.0f)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   456
		return VGU_BAD_WARP_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   457
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   458
	VGfloat sumx = dx0 - dx1 + dx3 - dx2;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   459
	VGfloat sumy = dy0 - dy1 + dy3 - dy2;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   460
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   461
	if(sumx == 0.0f && sumy == 0.0f)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   462
	{	//affine mapping
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   463
		matrix[0] = dx1 - dx0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   464
		matrix[1] = dy1 - dy0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   465
		matrix[2] = 0.0f;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   466
		matrix[3] = dx3 - dx1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   467
		matrix[4] = dy3 - dy1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   468
		matrix[5] = 0.0f;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   469
		matrix[6] = dx0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   470
		matrix[7] = dy0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   471
		matrix[8] = 1.0f;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   472
		return VGU_NO_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   473
	}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   474
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   475
	VGfloat oodet = 1.0f / det;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   476
	VGfloat g = (sumx*diffy2 - diffx2*sumy) * oodet;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   477
	VGfloat h = (diffx1*sumy - sumx*diffy1) * oodet;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   478
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   479
	matrix[0] = dx1-dx0+g*dx1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   480
	matrix[1] = dy1-dy0+g*dy1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   481
	matrix[2] = g;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   482
	matrix[3] = dx2-dx0+h*dx2;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   483
	matrix[4] = dy2-dy0+h*dy2;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   484
	matrix[5] = h;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   485
	matrix[6] = dx0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   486
	matrix[7] = dy0;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   487
	matrix[8] = 1.0f;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   488
	return VGU_NO_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   489
}
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   490
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   491
/*-------------------------------------------------------------------*//*!
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   492
* \brief	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   493
* \param	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   494
* \return	
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   495
* \note		
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   496
*//*-------------------------------------------------------------------*/
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   497
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   498
#ifdef BUILD_WITH_PRIVATE_VGU
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   499
VGUErrorCode RI_APIENTRY do_vguComputeWarpQuadToQuad(VGfloat dx0, VGfloat dy0, VGfloat dx1, VGfloat dy1, VGfloat dx2, VGfloat dy2, VGfloat dx3, VGfloat dy3, VGfloat sx0, VGfloat sy0, VGfloat sx1, VGfloat sy1, VGfloat sx2, VGfloat sy2, VGfloat sx3, VGfloat sy3, VGfloat * matrix)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   500
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   501
VGUErrorCode RI_APIENTRY vguComputeWarpQuadToQuad(VGfloat dx0, VGfloat dy0, VGfloat dx1, VGfloat dy1, VGfloat dx2, VGfloat dy2, VGfloat dx3, VGfloat dy3, VGfloat sx0, VGfloat sy0, VGfloat sx1, VGfloat sy1, VGfloat sx2, VGfloat sy2, VGfloat sx3, VGfloat sy3, VGfloat * matrix)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   502
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   503
{
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   504
	if(!matrix || ((RIuintptr)matrix) & 3)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   505
		return VGU_ILLEGAL_ARGUMENT_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   506
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   507
	VGfloat qtos[9];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   508
#ifdef BUILD_WITH_PRIVATE_VGU
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   509
	VGUErrorCode ret1 = do_vguComputeWarpQuadToSquare(sx0, sy0, sx1, sy1, sx2, sy2, sx3, sy3, qtos);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   510
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   511
	VGUErrorCode ret1 = vguComputeWarpQuadToSquare(sx0, sy0, sx1, sy1, sx2, sy2, sx3, sy3, qtos);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   512
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   513
	if(ret1 == VGU_BAD_WARP_ERROR)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   514
		return VGU_BAD_WARP_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   515
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   516
	VGfloat stoq[9];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   517
#ifdef BUILD_WITH_PRIVATE_VGU
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   518
	VGUErrorCode ret2 = do_vguComputeWarpSquareToQuad(dx0, dy0, dx1, dy1, dx2, dy2, dx3, dy3, stoq);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   519
#else
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   520
	VGUErrorCode ret2 = vguComputeWarpSquareToQuad(dx0, dy0, dx1, dy1, dx2, dy2, dx3, dy3, stoq);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   521
#endif
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   522
	if(ret2 == VGU_BAD_WARP_ERROR)
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   523
		return VGU_BAD_WARP_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   524
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   525
	Matrix3x3 m1(qtos[0], qtos[3], qtos[6],
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   526
				 qtos[1], qtos[4], qtos[7],
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   527
				 qtos[2], qtos[5], qtos[8]);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   528
	Matrix3x3 m2(stoq[0], stoq[3], stoq[6],
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   529
				 stoq[1], stoq[4], stoq[7],
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   530
				 stoq[2], stoq[5], stoq[8]);
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   531
	Matrix3x3 r = m2 * m1;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   532
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   533
	matrix[0] = r[0][0];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   534
	matrix[1] = r[1][0];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   535
	matrix[2] = r[2][0];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   536
	matrix[3] = r[0][1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   537
	matrix[4] = r[1][1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   538
	matrix[5] = r[2][1];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   539
	matrix[6] = r[0][2];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   540
	matrix[7] = r[1][2];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   541
	matrix[8] = r[2][2];
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   542
	return VGU_NO_ERROR;
7579f232bae7 Transplant KhronosRI changeset 22d01ad3515c -
Shabe Razvi <shaber@symbian.org>
parents:
diff changeset
   543
}