/* * 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