0N/A/*
2362N/A * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
2362N/A * published by the Free Software Foundation. Oracle designates this
0N/A * particular file as subject to the "Classpath" exception as provided
2362N/A * by Oracle in the LICENSE file that accompanied this code.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A * or visit www.oracle.com if you need additional information or have any
2362N/A * questions.
0N/A */
0N/A
0N/A#ifndef _Included_PathConsumer2D
0N/A#define _Included_PathConsumer2D
0N/A
0N/A/* For forward referencing - struct defined below. */
0N/Astruct _PathConsumerVec;
0N/A
0N/A/*
0N/A * Note on Error Conditions:
0N/A * The following functions all return true on an error condition which
0N/A * precludes any further processing. The module calling these functions
0N/A * should cease the operation and invoke its own error handling.
0N/A * The return value is the only indication of the error, no exceptions
0N/A * should be thrown by the consumer - the caller is solely responsible
0N/A * for reporting the error/exception.
0N/A * The most common cause of failure is an allocation failure so a
0N/A * true return code could be reported as an "out of memory" error
0N/A * if so desired.
0N/A * No cleanup of the native consumer is required upon either a successful
0N/A * completion of the path or upon an error return. Such cleanup will
0N/A * be handled elsewhere via other mechanisms (finalization, try/finally,
0N/A * etc.)
0N/A */
0N/A
0N/A/* See GeneralPath.moveTo - returns true on error condition. */
0N/Atypedef jboolean (MoveToFunc)(struct _PathConsumerVec *pVec,
0N/A jfloat x0, jfloat y0);
0N/A/* See GeneralPath.lineTo - returns true on error condition. */
0N/Atypedef jboolean (LineToFunc)(struct _PathConsumerVec *pVec,
0N/A jfloat x1, jfloat y1);
0N/A/* See GeneralPath.quadTo - returns true on error condition. */
0N/Atypedef jboolean (QuadToFunc)(struct _PathConsumerVec *pVec,
0N/A jfloat xm, jfloat ym,
0N/A jfloat x1, jfloat y1);
0N/A/* See GeneralPath.curveTo - returns true on error condition. */
0N/Atypedef jboolean (CubicToFunc)(struct _PathConsumerVec *pVec,
0N/A jfloat xm0, jfloat ym0,
0N/A jfloat xm1, jfloat ym1,
0N/A jfloat x1, jfloat y1);
0N/A/* See GeneralPath.closePath - returns true on error condition. */
0N/Atypedef jboolean (ClosePathFunc)(struct _PathConsumerVec *pVec);
0N/A
0N/A/*
0N/A * This function must be called after the last segment of the last
0N/A * subpath is sent to the above methods. No further calls should
0N/A * be made to any of the PathConsumerVec functions subsequently.
0N/A */
0N/Atypedef jboolean (PathDoneFunc)(struct _PathConsumerVec *pVec);
0N/A
0N/A/*
0N/A * This structure defines the list of function pointers for implementations
0N/A * of the above specified functions. A pointer to this structure is also
0N/A * handed to each function as its first parameter. If the implementation
0N/A * needs private context-specific data then it can be stored adjacent to
0N/A * the PathConsumerVec structure in the same allocated storage.
0N/A */
0N/Atypedef struct _PathConsumerVec {
0N/A MoveToFunc *moveTo;
0N/A LineToFunc *lineTo;
0N/A QuadToFunc *quadTo;
0N/A CubicToFunc *cubicTo;
0N/A ClosePathFunc *closePath;
0N/A PathDoneFunc *pathDone;
0N/A} PathConsumerVec;
0N/A
0N/A#endif