author | Faisal Memon <faisal.memon@nokia.com> |
Wed, 08 Sep 2010 17:21:01 +0100 | |
branch | bug235_bringup_0 |
changeset 15 | 86401090b67f |
child 24 | a3f46bb01be2 |
permissions | -rwxr-xr-x |
15
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
1 |
// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
2 |
// All rights reserved. |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
3 |
// This component and the accompanying materials are made available |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
4 |
// under the terms of "Eclipse Public License v1.0" |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
5 |
// which accompanies this distribution, and is available |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
6 |
// at the URL "http://www.eclipse.org/legal/epl-v10.html". |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
7 |
// |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
8 |
// Initial Contributors: |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
9 |
// Nokia Corporation - initial contribution. |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
10 |
// |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
11 |
// Contributors: |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
12 |
// |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
13 |
// Description: |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
14 |
// Implementation of OpenVGU stub functions |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
15 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
16 |
#include "vghwutils.h" |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
17 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
18 |
#define __VG_OPENVG_H_ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
19 |
#include <VG/1.1/openvg.h> |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
20 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
21 |
#include "openvgrfc.h" |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
22 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
23 |
class RemoteFunctionCall; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
24 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
25 |
// tracing |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
26 |
#ifdef _DEBUG |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
27 |
#include <e32debug.h> |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
28 |
#define OPENVGU_TRACE(fmt, args...) RDebug::Printf(fmt, ##args) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
29 |
#else |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
30 |
#define OPENVGU_TRACE(fmt, args...) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
31 |
#endif |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
32 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
33 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
34 |
extern "C" { |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
35 |
/* |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
36 |
Note: Comments at the start of each Open VG api are adapted from the Open VG 1.1 specification. |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
37 |
The text has been chosen/adapted to give a helpful overview of the function, and the errors |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
38 |
that it may generate. For more details and diagrams see the full Open VG specification. |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
39 |
*/ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
40 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
41 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
42 |
/* |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
43 |
Append a line segment to a path. |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
44 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
45 |
ERRORS |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
46 |
VGU_BAD_HANDLE_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
47 |
– if path is not a valid path handle, or is not shared with the current context |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
48 |
VGU_PATH_CAPABILITY_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
49 |
– if VG_PATH_CAPABILITY_APPEND_TO is not enabled for path |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
50 |
*/ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
51 |
EXPORT_C VGUErrorCode |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
52 |
vguLine(VGPath path, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
53 |
VGfloat x0, VGfloat y0, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
54 |
VGfloat x1, VGfloat y1) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
55 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
56 |
OPENVGU_TRACE("vguLine path=%d x0=0x%x, y0=0x%x, x1=0x%x, y1=0x%x", path, x0, y0, x1, y1); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
57 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
58 |
MVgContext* vgContext = CVghwUtils::VgContext(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
59 |
VGUErrorCode error = VGU_OUT_OF_MEMORY_ERROR; // nearest VGU has to an Invalid Context error |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
60 |
if (vgContext) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
61 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
62 |
RemoteFunctionCallData rfcdata; OpenVgRFC vguApiData(rfcdata); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
63 |
vguApiData.Init(OpenVgRFC::EvguLine); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
64 |
vguApiData.AppendParam(path); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
65 |
vguApiData.AppendParam(x0); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
66 |
vguApiData.AppendParam(y0); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
67 |
vguApiData.AppendParam(x1); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
68 |
vguApiData.AppendParam(y1); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
69 |
// TODO return type specific functions for VGU operations |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
70 |
vgContext->ExecuteVgCommand(vguApiData); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
71 |
error = (VGUErrorCode)vguApiData.ReturnValue(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
72 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
73 |
return error; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
74 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
75 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
76 |
/* |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
77 |
Append a polyline (connected sequence of line segments) or polygon to a path. |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
78 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
79 |
ERRORS |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
80 |
VGU_BAD_HANDLE_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
81 |
– if path is not a valid path handle, or is not shared with the current context |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
82 |
VGU_PATH_CAPABILITY_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
83 |
– if VG_PATH_CAPABILITY_APPEND_TO is not enabled for path |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
84 |
VGU_ILLEGAL_ARGUMENT_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
85 |
– if points is NULL |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
86 |
– if points is not properly aligned |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
87 |
– if count is less than or equal to 0 |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
88 |
*/ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
89 |
EXPORT_C VGUErrorCode |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
90 |
vguPolygon(VGPath path, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
91 |
const VGfloat * points, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
92 |
VGint count, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
93 |
VGboolean closed) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
94 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
95 |
OPENVGU_TRACE("vguPolygon path=%d, points=0x%x, count=%d, closed=%d", path, points, count, closed); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
96 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
97 |
MVgContext* vgContext = CVghwUtils::VgContext(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
98 |
VGUErrorCode error = VGU_OUT_OF_MEMORY_ERROR; // nearest VGU has to an Invalid Context error |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
99 |
if (vgContext) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
100 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
101 |
if ( (points == NULL) || (count <= 0) || (3ul & (unsigned)points) ) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
102 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
103 |
error = VGU_ILLEGAL_ARGUMENT_ERROR; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
104 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
105 |
else |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
106 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
107 |
RemoteFunctionCallData rfcdata; OpenVgRFC vguApiData(rfcdata); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
108 |
vguApiData.Init(OpenVgRFC::EvguPolygon); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
109 |
vguApiData.AppendParam(path); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
110 |
vguApiData.AppendParam(count); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
111 |
vguApiData.AppendParam(closed); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
112 |
vguApiData.AppendVector(points, count * 2); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
113 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
114 |
vgContext->ExecuteVgCommand(vguApiData); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
115 |
error = (VGUErrorCode)vguApiData.ReturnValue(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
116 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
117 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
118 |
return error; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
119 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
120 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
121 |
/* |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
122 |
Append an axis-aligned rectangle with its lower-left corner at (x, y) and |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
123 |
a given width and height to a path. |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
124 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
125 |
ERRORS |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
126 |
VGU_BAD_HANDLE_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
127 |
– if path is not a valid path handle, or is not shared with the current context |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
128 |
VGU_PATH_CAPABILITY_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
129 |
– if VG_PATH_CAPABILITY_APPEND_TO is not enabled for path |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
130 |
VGU_ILLEGAL_ARGUMENT_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
131 |
– if width or height are less than or equal to 0 |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
132 |
*/ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
133 |
EXPORT_C VGUErrorCode |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
134 |
vguRect(VGPath path, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
135 |
VGfloat x, VGfloat y, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
136 |
VGfloat width, VGfloat height) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
137 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
138 |
OPENVGU_TRACE("vguRect path=%d, x=0x%x, y=0x%x, width=0x%x, height=0x%x", path, x, y, width, height); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
139 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
140 |
MVgContext* vgContext = CVghwUtils::VgContext(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
141 |
VGUErrorCode error = VGU_OUT_OF_MEMORY_ERROR; // nearest VGU has to an Invalid Context error |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
142 |
if (vgContext) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
143 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
144 |
if ( (width <= 0) || (height <= 0) ) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
145 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
146 |
error = VGU_ILLEGAL_ARGUMENT_ERROR; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
147 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
148 |
else |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
149 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
150 |
RemoteFunctionCallData rfcdata; OpenVgRFC vguApiData(rfcdata); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
151 |
vguApiData.Init(OpenVgRFC::EvguRect); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
152 |
vguApiData.AppendParam(path); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
153 |
vguApiData.AppendParam(x); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
154 |
vguApiData.AppendParam(y); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
155 |
vguApiData.AppendParam(width); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
156 |
vguApiData.AppendParam(height); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
157 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
158 |
vgContext->ExecuteVgCommand(vguApiData); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
159 |
error = (VGUErrorCode)vguApiData.ReturnValue(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
160 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
161 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
162 |
return error; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
163 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
164 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
165 |
/* |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
166 |
Append an axis-aligned round-cornered rectangle with the lower-left corner of |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
167 |
its rectangular bounding box at (x, y) and a given width, height, arcWidth, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
168 |
and arcHeight to a path. |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
169 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
170 |
ERRORS |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
171 |
VGU_BAD_HANDLE_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
172 |
– if path is not a valid path handle, or is not shared with the current context |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
173 |
VGU_PATH_CAPABILITY_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
174 |
– if VG_PATH_CAPABILITY_APPEND_TO is not enabled for path |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
175 |
VGU_ILLEGAL_ARGUMENT_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
176 |
– if width or height is less than or equal to 0 |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
177 |
*/ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
178 |
EXPORT_C VGUErrorCode |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
179 |
vguRoundRect(VGPath path, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
180 |
VGfloat x, VGfloat y, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
181 |
VGfloat width, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
182 |
VGfloat height, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
183 |
VGfloat arcWidth, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
184 |
VGfloat arcHeight) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
185 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
186 |
OPENVGU_TRACE("vguRoundRect path=%d, x=0x%x, y=0x%x, width=0x%x, height=0x%x, arcWidth=0x%x, arcHeight=0x%x", |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
187 |
path, x, y, width, height, arcWidth, arcHeight); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
188 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
189 |
MVgContext* vgContext = CVghwUtils::VgContext(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
190 |
VGUErrorCode error = VGU_OUT_OF_MEMORY_ERROR; // nearest VGU has to an Invalid Context error |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
191 |
if (vgContext) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
192 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
193 |
if ( (width <= 0) || (height <= 0) ) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
194 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
195 |
error = VGU_ILLEGAL_ARGUMENT_ERROR; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
196 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
197 |
else |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
198 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
199 |
RemoteFunctionCallData rfcdata; OpenVgRFC vguApiData(rfcdata); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
200 |
vguApiData.Init(OpenVgRFC::EvguRoundRect); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
201 |
vguApiData.AppendParam(path); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
202 |
vguApiData.AppendParam(x); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
203 |
vguApiData.AppendParam(y); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
204 |
vguApiData.AppendParam(width); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
205 |
vguApiData.AppendParam(height); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
206 |
vguApiData.AppendParam(arcWidth); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
207 |
vguApiData.AppendParam(arcHeight); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
208 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
209 |
vgContext->ExecuteVgCommand(vguApiData); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
210 |
error = (VGUErrorCode)vguApiData.ReturnValue(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
211 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
212 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
213 |
return error; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
214 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
215 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
216 |
/* |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
217 |
Append an axis-aligned ellipse to a path. The center of the ellipse is given by |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
218 |
(cx, cy) and the dimensions of the axis-aligned rectangle enclosing the ellipse are |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
219 |
given by width and height. The ellipse begins at (cx + width/2, cy) and is stroked |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
220 |
as two equal counter-clockwise arcs. |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
221 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
222 |
ERRORS |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
223 |
VGU_BAD_HANDLE_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
224 |
– if path is not a valid path handle, or is not shared with the current context |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
225 |
VGU_PATH_CAPABILITY_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
226 |
– if VG_PATH_CAPABILITY_APPEND_TO is not enabled for path |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
227 |
VGU_ILLEGAL_ARGUMENT_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
228 |
– if width or height is less than or equal to 0 |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
229 |
*/ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
230 |
EXPORT_C VGUErrorCode |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
231 |
vguEllipse(VGPath path, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
232 |
VGfloat cx, VGfloat cy, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
233 |
VGfloat width, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
234 |
VGfloat height) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
235 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
236 |
OPENVGU_TRACE("vguEllipse path=%d, cx=0x%x, cy=0x%x, width=0x%x, height=0x%x", path, cx, cy, width, height); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
237 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
238 |
MVgContext* vgContext = CVghwUtils::VgContext(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
239 |
VGUErrorCode error = VGU_OUT_OF_MEMORY_ERROR; // nearest VGU has to an Invalid Context error |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
240 |
if (vgContext) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
241 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
242 |
if ( (width <= 0) || (height <= 0) ) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
243 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
244 |
error = VGU_ILLEGAL_ARGUMENT_ERROR; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
245 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
246 |
else |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
247 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
248 |
RemoteFunctionCallData rfcdata; OpenVgRFC vguApiData(rfcdata); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
249 |
vguApiData.Init(OpenVgRFC::EvguEllipse); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
250 |
vguApiData.AppendParam(path); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
251 |
vguApiData.AppendParam(cx); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
252 |
vguApiData.AppendParam(cy); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
253 |
vguApiData.AppendParam(width); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
254 |
vguApiData.AppendParam(height); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
255 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
256 |
vgContext->ExecuteVgCommand(vguApiData); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
257 |
error = (VGUErrorCode)vguApiData.ReturnValue(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
258 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
259 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
260 |
return error; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
261 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
262 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
263 |
/* |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
264 |
Append an elliptical arc to a path, possibly along with one or two line segments, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
265 |
according to the arcType parameter. The startAngle and angleExtent parameters are |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
266 |
given in degrees, proceeding counter-clockwise from the positive X axis. The arc |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
267 |
is defined on the unit circle, then scaled by the width and height of the ellipse. |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
268 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
269 |
ERRORS |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
270 |
VGU_BAD_HANDLE_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
271 |
– if path is not a valid path handle, or is not shared with the current context |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
272 |
VGU_PATH_CAPABILITY_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
273 |
– if VG_PATH_CAPABILITY_APPEND_TO is not enabled for path |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
274 |
VGU_ILLEGAL_ARGUMENT_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
275 |
– if width or height is less than or equal to 0 |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
276 |
– if arcType is not one of the values from the VGUArcType enumeration |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
277 |
*/ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
278 |
EXPORT_C VGUErrorCode |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
279 |
vguArc(VGPath path, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
280 |
VGfloat x, VGfloat y, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
281 |
VGfloat width, VGfloat height, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
282 |
VGfloat startAngle, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
283 |
VGfloat angleExtent, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
284 |
VGUArcType arcType) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
285 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
286 |
OPENVGU_TRACE("vguArc path=%d, x=0x%x, y=0x%x, width=0x%x, height=0x%x, startAngle=0x%x, angleExtent=0x%x, arcType=%d", |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
287 |
path, x, y, width, height, startAngle, angleExtent, arcType); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
288 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
289 |
MVgContext* vgContext = CVghwUtils::VgContext(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
290 |
VGUErrorCode error = VGU_OUT_OF_MEMORY_ERROR; // nearest VGU has to an Invalid Context error |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
291 |
if (vgContext) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
292 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
293 |
const unsigned int n_posinf = 0x7f800000u; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
294 |
const unsigned int n_neginf = 0xff800000u; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
295 |
VGfloat posinf = *(VGfloat*)&n_posinf; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
296 |
VGfloat neginf = *(VGfloat*)&n_neginf; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
297 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
298 |
if ( (width <= 0) || (height <= 0) || ( (arcType != VGU_ARC_OPEN) && (arcType == VGU_ARC_CHORD) && (arcType == VGU_ARC_PIE) ) ) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
299 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
300 |
error = VGU_ILLEGAL_ARGUMENT_ERROR; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
301 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
302 |
// Tony TODO review NaN detection; not convinced that this works |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
303 |
else if ( ((x + x - x) != x) || ((y + y - y) != y) ) /* NaN's */ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
304 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
305 |
error = VGU_ILLEGAL_ARGUMENT_ERROR; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
306 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
307 |
else if ( ((startAngle + startAngle - startAngle) != startAngle) || ((angleExtent + angleExtent - angleExtent) != angleExtent) ) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
308 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
309 |
error = VGU_ILLEGAL_ARGUMENT_ERROR; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
310 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
311 |
else if ( (startAngle <= neginf) || (startAngle >= posinf) ) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
312 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
313 |
error = VGU_ILLEGAL_ARGUMENT_ERROR; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
314 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
315 |
else if ( (angleExtent <= neginf) || (angleExtent >= posinf) ) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
316 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
317 |
error = VGU_ILLEGAL_ARGUMENT_ERROR; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
318 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
319 |
else if ( (x <= neginf) || (x >= posinf) ) /*Infinity x */ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
320 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
321 |
error = VGU_ILLEGAL_ARGUMENT_ERROR; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
322 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
323 |
else if ( (y <= neginf) || (y >= posinf) ) /*Infinity x */ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
324 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
325 |
error = VGU_ILLEGAL_ARGUMENT_ERROR; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
326 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
327 |
else |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
328 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
329 |
RemoteFunctionCallData rfcdata; OpenVgRFC vguApiData(rfcdata); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
330 |
vguApiData.Init(OpenVgRFC::EvguArc); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
331 |
vguApiData.AppendParam(path); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
332 |
vguApiData.AppendParam(x); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
333 |
vguApiData.AppendParam(y); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
334 |
vguApiData.AppendParam(width); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
335 |
vguApiData.AppendParam(height); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
336 |
vguApiData.AppendParam(startAngle); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
337 |
vguApiData.AppendParam(angleExtent); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
338 |
vguApiData.AppendParam(arcType); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
339 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
340 |
vgContext->ExecuteVgCommand(vguApiData); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
341 |
error = (VGUErrorCode)vguApiData.ReturnValue(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
342 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
343 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
344 |
return error; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
345 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
346 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
347 |
/* |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
348 |
Sets the entries of matrix to a projective transformation that maps the point |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
349 |
(sx0, sy0) to (0, 0); (sx1, sy1) to (1, 0); (sx2, sy2) to (0, 1); and (sx3, sy3) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
350 |
to (1, 1). If no non-degenerate matrix satisfies the constraints, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
351 |
VGU_BAD_WARP_ERROR is returned and matrix is unchanged. |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
352 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
353 |
ERRORS |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
354 |
VGU_ILLEGAL_ARGUMENT_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
355 |
– if matrix is NULL |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
356 |
– if matrix is not properly aligned |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
357 |
VGU_BAD_WARP_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
358 |
– if no non-degenerate transformation satisfies the constraints |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
359 |
*/ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
360 |
EXPORT_C VGUErrorCode |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
361 |
vguComputeWarpQuadToSquare(VGfloat sx0, VGfloat sy0, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
362 |
VGfloat sx1, VGfloat sy1, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
363 |
VGfloat sx2, VGfloat sy2, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
364 |
VGfloat sx3, VGfloat sy3, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
365 |
VGfloat * matrix) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
366 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
367 |
OPENVGU_TRACE("vguComputeWarpQuadToSquare sx0=0x%x, sy0=0x%x, sx1=0x%x, sy1=0x%x, sx2=0x%x, sy2=0x%x, sx3=0x%x, sy3=0x%x, matrix=0x%x", |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
368 |
sx0, sy0, sx1, sy1, sx2, sy2, sx3, sy3, matrix); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
369 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
370 |
MVgContext* vgContext = CVghwUtils::VgContext(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
371 |
VGUErrorCode error = VGU_OUT_OF_MEMORY_ERROR; // nearest VGU has to an Invalid Context error |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
372 |
if (vgContext) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
373 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
374 |
if ( (matrix == NULL) || (3ul & (unsigned)matrix)) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
375 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
376 |
error = VGU_ILLEGAL_ARGUMENT_ERROR; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
377 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
378 |
else |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
379 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
380 |
RemoteFunctionCallData rfcdata; OpenVgRFC vguApiData( rfcdata ); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
381 |
vguApiData.Init(OpenVgRFC::EvguComputeWarpQuadToSquare); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
382 |
vguApiData.AppendParam(sx0); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
383 |
vguApiData.AppendParam(sy0); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
384 |
vguApiData.AppendParam(sx1); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
385 |
vguApiData.AppendParam(sy1); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
386 |
vguApiData.AppendParam(sx2); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
387 |
vguApiData.AppendParam(sy2); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
388 |
vguApiData.AppendParam(sx3); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
389 |
vguApiData.AppendParam(sy3); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
390 |
vguApiData.AppendVector(matrix, 9, RemoteFunctionCallData::EOut); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
391 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
392 |
vgContext->ExecuteVgCommand(vguApiData); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
393 |
error = (VGUErrorCode)vguApiData.ReturnValue(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
394 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
395 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
396 |
return error; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
397 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
398 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
399 |
/* |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
400 |
Sets the entries of matrix to a projective transformation that maps the point |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
401 |
(0, 0) to (dx0, dy0); (1, 0) to (dx1, dy1); (0, 1) to (dx2, dy2); and (1, 1) to |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
402 |
(dx3, dy3). If no non-degenerate matrix satisfies the constraints, VGU_BAD_WARP_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
403 |
is returned and matrix is unchanged. |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
404 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
405 |
ERRORS |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
406 |
VGU_ILLEGAL_ARGUMENT_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
407 |
– if matrix is NULL |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
408 |
– if matrix is not properly aligned |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
409 |
VGU_BAD_WARP_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
410 |
– if no non-degenerate transformation satisfies the constraints |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
411 |
*/ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
412 |
EXPORT_C VGUErrorCode |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
413 |
vguComputeWarpSquareToQuad(VGfloat dx0, VGfloat dy0, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
414 |
VGfloat dx1, VGfloat dy1, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
415 |
VGfloat dx2, VGfloat dy2, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
416 |
VGfloat dx3, VGfloat dy3, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
417 |
VGfloat * matrix) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
418 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
419 |
OPENVGU_TRACE("vguComputeWarpSquareToQuad dx0=0x%x, dy0=0x%x, dx1=0x%x, dy1=0x%x, dx2=0x%x, dy2=0x%x, dx3=0x%x, dy3=0x%x, matrix=0x%x", |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
420 |
dx0, dy0, dx1, dy1, dx2, dy2, dx3, dy3, matrix); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
421 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
422 |
MVgContext* vgContext = CVghwUtils::VgContext(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
423 |
VGUErrorCode error = VGU_OUT_OF_MEMORY_ERROR; // nearest VGU has to an Invalid Context error |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
424 |
if (vgContext) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
425 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
426 |
if ( (matrix == NULL) || (3ul & (unsigned)matrix)) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
427 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
428 |
error = VGU_ILLEGAL_ARGUMENT_ERROR; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
429 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
430 |
else |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
431 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
432 |
RemoteFunctionCallData rfcdata; OpenVgRFC vguApiData(rfcdata); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
433 |
vguApiData.Init(OpenVgRFC::EvguComputeWarpSquareToQuad); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
434 |
vguApiData.AppendParam(dx0); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
435 |
vguApiData.AppendParam(dy0); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
436 |
vguApiData.AppendParam(dx1); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
437 |
vguApiData.AppendParam(dy1); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
438 |
vguApiData.AppendParam(dx2); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
439 |
vguApiData.AppendParam(dy2); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
440 |
vguApiData.AppendParam(dx3); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
441 |
vguApiData.AppendParam(dy3); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
442 |
vguApiData.AppendVector(matrix, 9, RemoteFunctionCallData::EOut); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
443 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
444 |
vgContext->ExecuteVgCommand(vguApiData); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
445 |
error = (VGUErrorCode)vguApiData.ReturnValue(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
446 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
447 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
448 |
return error; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
449 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
450 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
451 |
/* |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
452 |
Sets the entries of matrix to a projective transformation that maps the point |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
453 |
(sx0, sy0) to (dx0, dy0); (sx1, sy1) to (dx1, dy1); (sx2, sy2) to (dx2, dy2); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
454 |
and (sx3, sy3) to (dx3, dy3). If no non-degenerate matrix satisfies the constraints, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
455 |
VGU_BAD_WARP_ERROR is returned and matrix is unchanged. |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
456 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
457 |
ERRORS |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
458 |
VGU_ILLEGAL_ARGUMENT_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
459 |
– if matrix is NULL |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
460 |
– if matrix is not properly aligned |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
461 |
VGU_BAD_WARP_ERROR |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
462 |
– if no non-degenerate transformation satisfies the constraints |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
463 |
*/ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
464 |
EXPORT_C VGUErrorCode |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
465 |
vguComputeWarpQuadToQuad(VGfloat dx0, VGfloat dy0, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
466 |
VGfloat dx1, VGfloat dy1, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
467 |
VGfloat dx2, VGfloat dy2, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
468 |
VGfloat dx3, VGfloat dy3, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
469 |
VGfloat sx0, VGfloat sy0, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
470 |
VGfloat sx1, VGfloat sy1, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
471 |
VGfloat sx2, VGfloat sy2, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
472 |
VGfloat sx3, VGfloat sy3, |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
473 |
VGfloat * matrix) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
474 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
475 |
OPENVGU_TRACE("vguComputeWarpQuadToQuad"); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
476 |
MVgContext* vgContext = CVghwUtils::VgContext(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
477 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
478 |
VGUErrorCode error = VGU_OUT_OF_MEMORY_ERROR; // nearest VGU has to an Invalid Context error |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
479 |
if (vgContext) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
480 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
481 |
if ( (matrix == NULL) || (3ul & (unsigned)matrix)) |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
482 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
483 |
error = VGU_ILLEGAL_ARGUMENT_ERROR; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
484 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
485 |
else |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
486 |
{ |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
487 |
RemoteFunctionCallData rfcdata; OpenVgRFC vguApiData(rfcdata); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
488 |
vguApiData.Init(OpenVgRFC::EvguComputeWarpQuadToQuad); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
489 |
vguApiData.AppendParam(dx0); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
490 |
vguApiData.AppendParam(dy0); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
491 |
vguApiData.AppendParam(dx1); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
492 |
vguApiData.AppendParam(dy1); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
493 |
vguApiData.AppendParam(dx2); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
494 |
vguApiData.AppendParam(dy2); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
495 |
vguApiData.AppendParam(dx3); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
496 |
vguApiData.AppendParam(dy3); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
497 |
vguApiData.AppendParam(sx0); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
498 |
vguApiData.AppendParam(sy0); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
499 |
vguApiData.AppendParam(sx1); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
500 |
vguApiData.AppendParam(sy1); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
501 |
vguApiData.AppendParam(sx2); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
502 |
vguApiData.AppendParam(sy2); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
503 |
vguApiData.AppendParam(sx3); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
504 |
vguApiData.AppendParam(sy3); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
505 |
vguApiData.AppendVector(matrix, 9, RemoteFunctionCallData::EOut); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
506 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
507 |
vgContext->ExecuteVgCommand(vguApiData); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
508 |
error = (VGUErrorCode)vguApiData.ReturnValue(); |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
509 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
510 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
511 |
return error; |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
512 |
} |
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
513 |
|
86401090b67f
Add OpenVGU guest library
Faisal Memon <faisal.memon@nokia.com>
parents:
diff
changeset
|
514 |
} /* extern "C" */ |