107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com/*
207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com * Copyright 2012 Google Inc.
307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com *
407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com * Use of this source code is governed by a BSD-style license that can be
507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com * found in the LICENSE file.
607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com */
707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#ifndef SkDQuadImplicit_DEFINED
807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define SkDQuadImplicit_DEFINED
907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
1007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#include "SkPathOpsQuad.h"
1107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
1207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.comclass SkDQuadImplicit {
1307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.compublic:
1407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    explicit SkDQuadImplicit(const SkDQuad& q);
1507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
1607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    bool match(const SkDQuadImplicit& two) const;
1707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    static bool Match(const SkDQuad& quad1, const SkDQuad& quad2);
1807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
1907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    double x2() const { return fP[kXx_Coeff]; }
2007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    double xy() const { return fP[kXy_Coeff]; }
2107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    double y2() const { return fP[kYy_Coeff]; }
2207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    double x() const { return fP[kX_Coeff]; }
2307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    double y() const { return fP[kY_Coeff]; }
2407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    double c() const { return fP[kC_Coeff]; }
2507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
2607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.comprivate:
2707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    enum Coeffs {
2807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com        kXx_Coeff,
2907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com        kXy_Coeff,
3007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com        kYy_Coeff,
3107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com        kX_Coeff,
3207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com        kY_Coeff,
3307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com        kC_Coeff,
3407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    };
3507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
3607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    double fP[kC_Coeff + 1];
3707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com};
3807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
3907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#endif
40