13a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/************************************************************************** 23a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * 33a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Copyright 2009 VMware, Inc. All Rights Reserved. 43a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * 53a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a 63a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * copy of this software and associated documentation files (the 73a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * "Software"), to deal in the Software without restriction, including 83a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * without limitation the rights to use, copy, modify, merge, publish, 93a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * distribute, sub license, and/or sell copies of the Software, and to 103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * permit persons to whom the Software is furnished to do so, subject to 113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * the following conditions: 123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * 133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * The above copyright notice and this permission notice (including the 143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * next paragraph) shall be included in all copies or substantial portions 153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * of the Software. 163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * 173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR 213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * 253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org **************************************************************************/ 263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef ARC_H 283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define ARC_H 293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "VG/openvg.h" 313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstruct polygon; 333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstruct matrix; 343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstruct stroker; 353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstruct path; 363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstruct arc { 383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org VGPathSegment type; 393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org VGfloat cx, cy; 413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org VGfloat a, b; 433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org VGfloat theta; 453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org VGfloat cos_theta, sin_theta; 463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org VGfloat eta1; 483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org VGfloat eta2; 493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org VGfloat x1, y1, x2, y2; 513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org VGboolean is_valid; 533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}; 543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgvoid arc_init(struct arc *arc, 563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org VGPathSegment type, 573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org VGfloat x1, VGfloat y1, 583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org VGfloat x2, VGfloat y2, 593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org VGfloat rh, VGfloat rv, 603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org VGfloat rot); 613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgvoid arc_add_to_polygon(struct arc *arc, 633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org struct polygon *poly, 643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org struct matrix *matrix); 653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgvoid arc_to_path(struct arc *arc, 683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org struct path *p, 693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org struct matrix *matrix); 703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgvoid arc_stroke_cb(struct arc *arc, 723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org struct stroker *stroke, 733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org struct matrix *matrix); 743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgvoid arc_stroker_emit(struct arc *arc, 763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org struct stroker *stroke, 773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org struct matrix *matrix); 783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif 81