| author | William Roberts <williamr@symbian.org> |
| Fri, 11 Jun 2010 16:28:08 +0100 | |
| branch | GCC_SURGE |
| changeset 96 | faed0e24b58a |
| parent 43 | 7579f232bae7 |
| permissions | -rw-r--r-- |
|
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 |
} |