1/*
2 * Copyright 2012 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7#ifndef SkReduceOrder_DEFINED
8#define SkReduceOrder_DEFINED
9
10#include "src/pathops/SkPathOpsCubic.h"
11#include "src/pathops/SkPathOpsLine.h"
12#include "src/pathops/SkPathOpsQuad.h"
13
14struct SkConic;
15
16union SkReduceOrder {
17 enum Quadratics {
18 kNo_Quadratics,
19 kAllow_Quadratics
20 };
21
22 int reduce(const SkDCubic& cubic, Quadratics);
23 int reduce(const SkDLine& line);
24 int reduce(const SkDQuad& quad);
25
26 static SkPath::Verb Conic(const SkConic& conic, SkPoint* reducePts);
27 static SkPath::Verb Cubic(const SkPoint pts[4], SkPoint* reducePts);
28 static SkPath::Verb Quad(const SkPoint pts[3], SkPoint* reducePts);
29
30 SkDLine fLine;
31 SkDQuad fQuad;
32 SkDCubic fCubic;
33};
34
35#endif
36