summaryrefslogtreecommitdiffstats
path: root/o3d/plugin/idl/processed_path.idl
diff options
context:
space:
mode:
Diffstat (limited to 'o3d/plugin/idl/processed_path.idl')
-rw-r--r--o3d/plugin/idl/processed_path.idl119
1 files changed, 119 insertions, 0 deletions
diff --git a/o3d/plugin/idl/processed_path.idl b/o3d/plugin/idl/processed_path.idl
new file mode 100644
index 0000000..0ba7ca8
--- /dev/null
+++ b/o3d/plugin/idl/processed_path.idl
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2010, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace o3d {
+
+%[
+ A ProcessedPath holds a series of 2D vector drawing commands (i.e.,
+ move-to, line-to, quad-to, cubic-to) and the results of processing
+ this series of commands into a triangle mesh for rendering on the
+ GPU. It is only an internal class; this functionality is exposed via
+ the o3djs.gpu2d library.
+%]
+
+[nocpp, include="core/cross/processed_path.h"] class ProcessedPath
+ : ObjectBase {
+ %[
+ Clears out all of the curve segments that have been added to this
+ path.
+ %]
+ [nodocs]
+ void Clear();
+
+ %[
+ Moves the pen to the given absolute X,Y coordinates. If a contour
+ isn't currently open on this path, one is opened.
+ \param x the x coordinate to move to
+ \param y the y coordinate to move to
+ %]
+ [nodocs]
+ void MoveTo(float x, float y);
+
+ %[
+ Draws a line from the current coordinates to the given absolute
+ X,Y coordinates.
+ \param x the x coordinate to draw a line to
+ \param y the y coordinate to draw a line to
+ %]
+ [nodocs]
+ void LineTo(float x, float y);
+
+ %[
+ Draws a quadratic curve from the current coordinates through the
+ given control point and end point, specified in absolute
+ coordinates.
+ \param cx the x coordinate of the quadratic's control point
+ \param cy the y coordinate of the quadratic's control point
+ \param x the x coordinate of the quadratic's end point
+ \param y the y coordinate of the quadratic's end point
+ %]
+ [nodocs]
+ void QuadraticTo(float cx, float cy, float x, float y);
+
+ %[
+ Draws a cubic curve from the current coordinates through the
+ given control points and end point, specified in absolute
+ coordinates.
+ \param c0x the x coordinate of the cubic's first control point
+ \param c0y the y coordinate of the cubic's first control point
+ \param c1x the x coordinate of the cubic's second control point
+ \param c1y the y coordinate of the cubic's second control point
+ \param x the x coordinate of the cubic's end point
+ \param y the y coordinate of the cubic's end point
+ %]
+ [nodocs]
+ void CubicTo(float c0x, float c0y,
+ float c1x, float c1y,
+ float x, float y);
+
+ %[
+ Closes the currently open contour on this path.
+ %]
+ [nodocs]
+ void Close();
+
+ %[
+ Creates the triangle mesh which will render the given curve
+ segments. There are two regions: exterior and interior. The
+ exterior region covers the portions containing the curve
+ segments. It has two associated fields: a 2D floating point field
+ for the positions, and a 3D floating point field for the
+ Loop/Blinn texture coordinates. The interior region has one 2D
+ floating point field for the positions. The contents of the fields
+ are organized for rendering as non-indexed triangles.
+ %]
+ [nodocs]
+ void CreateMesh(Field exterior_positions,
+ Field exterior_texture_coordinates,
+ Field interior_positions);
+};
+
+} // namespace o3d