aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pathops/SkPathOpsLine.h
blob: 34bb6587d34d2d6cac674a4cf6cbaad90f04c3ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
 * Copyright 2012 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
#ifndef SkPathOpsLine_DEFINED
#define SkPathOpsLine_DEFINED

#include "SkPathOpsPoint.h"

struct SkDLine {
    SkDPoint fPts[2];

    void set(const SkPoint pts[2]) {
        fPts[0] = pts[0];
        fPts[1] = pts[1];
    }

    const SkDPoint& operator[](int n) const { SkASSERT(n >= 0 && n < 2); return fPts[n]; }
    SkDPoint& operator[](int n) { SkASSERT(n >= 0 && n < 2); return fPts[n]; }

    double isLeft(const SkDPoint& pt) const;
    SkDLine subDivide(double t1, double t2) const;
    static SkDLine SubDivide(const SkPoint a[2], double t1, double t2) {
        SkDLine line;
        line.set(a);
        return line.subDivide(t1, t2);
    }
    SkDPoint xyAtT(double t) const;
private:
    SkDVector tangent() const { return fPts[0] - fPts[1]; }
};

#endif