• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 SkPathOpsLine_DEFINED
8 #define SkPathOpsLine_DEFINED
9 
10 #include "SkPathOpsPoint.h"
11 
12 struct SkDLine {
13     SkDPoint fPts[2];
14 
15     const SkDPoint& operator[](int n) const { SkASSERT(n >= 0 && n < 2); return fPts[n]; }
16     SkDPoint& operator[](int n) { SkASSERT(n >= 0 && n < 2); return fPts[n]; }
17 
setSkDLine18     void set(const SkPoint pts[2]) {
19         fPts[0] = pts[0];
20         fPts[1] = pts[1];
21     }
22 
SubDivideSkDLine23     static SkDLine SubDivide(const SkPoint a[2], double t1, double t2) {
24         SkDLine line;
25         line.set(a);
26         return line.subDivide(t1, t2);
27     }
28 
29     double exactPoint(const SkDPoint& xy) const;
30     static double ExactPointH(const SkDPoint& xy, double left, double right, double y);
31     static double ExactPointV(const SkDPoint& xy, double top, double bottom, double x);
32     double isLeft(const SkDPoint& pt) const;
33     double nearPoint(const SkDPoint& xy, bool* unequal) const;
34     bool nearRay(const SkDPoint& xy) const;
35     static double NearPointH(const SkDPoint& xy, double left, double right, double y);
36     static double NearPointV(const SkDPoint& xy, double top, double bottom, double x);
37     static bool NearRay(double dx1, double dy1, double dx2, double dy2);
38     SkDPoint ptAtT(double t) const;
39     SkDLine subDivide(double t1, double t2) const;
40 
41     void dump() const;
42 private:
tangentSkDLine43     SkDVector tangent() const { return fPts[0] - fPts[1]; }
44 };
45 
46 #endif
47