blob: a5f80d9b077d52047d72be8f33142560cf115181 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
senorblanco@chromium.org9d18b782011-03-28 20:47:09 +00002/*
epoger@google.comec3ed6a2011-07-28 14:26:00 +00003 * Copyright 2011 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
senorblanco@chromium.org9d18b782011-03-28 20:47:09 +00007 */
8
epoger@google.comec3ed6a2011-07-28 14:26:00 +00009
senorblanco@chromium.org9d18b782011-03-28 20:47:09 +000010#ifndef GrPathUtils_DEFINED
11#define GrPathUtils_DEFINED
12
bsalomon@google.com181e9bd2011-09-07 18:42:30 +000013#include "GrMatrix.h"
reed@google.com07f3ee12011-05-16 17:21:57 +000014#include "GrPath.h"
senorblanco@chromium.org9d18b782011-03-28 20:47:09 +000015
bsalomon@google.com181e9bd2011-09-07 18:42:30 +000016class GrPoint;
17
senorblanco@chromium.org9d18b782011-03-28 20:47:09 +000018/**
19 * Utilities for evaluating paths.
20 */
bsalomon@google.com181e9bd2011-09-07 18:42:30 +000021namespace GrPathUtils {
22 GrScalar scaleToleranceToSrc(GrScalar devTol,
bsalomon@google.com38396322011-09-09 19:32:04 +000023 const GrMatrix& viewM,
24 const GrRect& pathBounds);
tomhudson@google.comc10a8882011-06-28 15:19:32 +000025
bsalomon@google.com181e9bd2011-09-07 18:42:30 +000026 /// Since we divide by tol if we're computing exact worst-case bounds,
27 /// very small tolerances will be increased to gMinCurveTol.
28 int worstCasePointCount(const GrPath&,
29 int* subpaths,
30 GrScalar tol);
31 /// Since we divide by tol if we're computing exact worst-case bounds,
32 /// very small tolerances will be increased to gMinCurveTol.
33 uint32_t quadraticPointCount(const GrPoint points[], GrScalar tol);
34 uint32_t generateQuadraticPoints(const GrPoint& p0,
35 const GrPoint& p1,
36 const GrPoint& p2,
37 GrScalar tolSqd,
38 GrPoint** points,
39 uint32_t pointsLeft);
40 /// Since we divide by tol if we're computing exact worst-case bounds,
41 /// very small tolerances will be increased to gMinCurveTol.
42 uint32_t cubicPointCount(const GrPoint points[], GrScalar tol);
43 uint32_t generateCubicPoints(const GrPoint& p0,
44 const GrPoint& p1,
45 const GrPoint& p2,
46 const GrPoint& p3,
47 GrScalar tolSqd,
48 GrPoint** points,
49 uint32_t pointsLeft);
50
senorblanco@chromium.org9d18b782011-03-28 20:47:09 +000051};
52#endif