Home | History | Annotate | Download | only in pathops
      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 SkPathOpsRect_DEFINED
      8 #define SkPathOpsRect_DEFINED
      9 
     10 #include "SkPathOpsPoint.h"
     11 
     12 struct SkDRect {
     13     double fLeft, fTop, fRight, fBottom;
     14 
     15     void add(const SkDPoint& pt) {
     16         if (fLeft > pt.fX) {
     17             fLeft = pt.fX;
     18         }
     19         if (fTop > pt.fY) {
     20             fTop = pt.fY;
     21         }
     22         if (fRight < pt.fX) {
     23             fRight = pt.fX;
     24         }
     25         if (fBottom < pt.fY) {
     26             fBottom = pt.fY;
     27         }
     28     }
     29 
     30     bool contains(const SkDPoint& pt) const {
     31         return approximately_between(fLeft, pt.fX, fRight)
     32                 && approximately_between(fTop, pt.fY, fBottom);
     33     }
     34 
     35     bool intersects(SkDRect* r) const {
     36         SkASSERT(fLeft <= fRight);
     37         SkASSERT(fTop <= fBottom);
     38         SkASSERT(r->fLeft <= r->fRight);
     39         SkASSERT(r->fTop <= r->fBottom);
     40         return r->fLeft <= fRight && fLeft <= r->fRight && r->fTop <= fBottom && fTop <= r->fBottom;
     41     }
     42 
     43     void set(const SkDPoint& pt) {
     44         fLeft = fRight = pt.fX;
     45         fTop = fBottom = pt.fY;
     46     }
     47 
     48     double width() const {
     49         return fRight - fLeft;
     50     }
     51 
     52     double height() const {
     53         return fBottom - fTop;
     54     }
     55 
     56     void setBounds(const SkDLine&);
     57     void setBounds(const SkDCubic&);
     58     void setBounds(const SkDQuad&);
     59     void setRawBounds(const SkDCubic&);
     60     void setRawBounds(const SkDQuad&);
     61 };
     62 
     63 #endif
     64