summaryrefslogtreecommitdiffstats
path: root/o3d/plugin/idl/processed_path.idl
blob: 0ba7ca800cab61131d942e937ee0d67bddff37a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
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