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