PathOpsTestCommon.cpp revision 818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300e
1818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com/*
2818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com * Copyright 2012 Google Inc.
3818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com *
4818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com * Use of this source code is governed by a BSD-style license that can be
5818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com * found in the LICENSE file.
6818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com */
7818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com#include "PathOpsTestCommon.h"
8818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com#include "SkPathOpsCubic.h"
9818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com
10818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.comvoid CubicToQuads(const SkDCubic& cubic, double precision, SkTDArray<SkDQuad>& quads) {
11818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com    SkTDArray<double> ts;
12818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com    cubic.toQuadraticTs(precision, &ts);
13818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com    if (ts.count() <= 1) {
14818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com        SkDQuad quad = cubic.toQuad();
15818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com        *quads.append() = quad;
16818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com        return;
17818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com    }
18818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com    double tStart = 0;
19818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com    for (int i1 = 0; i1 <= ts.count(); ++i1) {
20818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com        const double tEnd = i1 < ts.count() ? ts[i1] : 1;
21818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com        SkDCubic part = cubic.subDivide(tStart, tEnd);
22818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com        SkDQuad quad = part.toQuad();
23818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com        *quads.append() = quad;
24818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com        tStart = tEnd;
25818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com    }
26818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com}
27818b0cc1b8b0c4acc565e8e2cb8b0b61aa5a300ecaryclark@google.com
28