SkOpSpan.h revision 07393cab57ce74a4aae89a31fae9aaa9780fc19d
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 SkOpSpan_DEFINED
807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#define SkOpSpan_DEFINED
907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
1007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#include "SkPoint.h"
1107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
1207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.comclass SkOpSegment;
1307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
1407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.comstruct SkOpSpan {
1507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    SkOpSegment* fOther;
1607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    SkPoint fPt;  // computed when the curves are intersected
1707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    double fT;
1807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    double fOtherT;  // value at fOther[fOtherIndex].fT
1907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    int fOtherIndex;  // can't be used during intersection
2007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    int fWindSum;  // accumulated from contours surrounding this one.
2107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    int fOppSum;  // for binary operators: the opposite winding sum
2207393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    int fWindValue;  // 0 == canceled; 1 == normal; >1 == coincident
2307393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    int fOppValue;  // normally 0 -- when binary coincident edges combine, opp value goes here
2407393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    bool fDone;  // if set, this span to next higher T has been processed
2507393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    bool fUnsortableStart;  // set when start is part of an unsortable pair
2607393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    bool fUnsortableEnd;  // set when end is part of an unsortable pair
2707393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    bool fTiny;  // if set, span may still be considered once for edge following
2807393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com    bool fLoop;  // set when a cubic loops back to this point
2907393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com};
3007393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com
3107393cab57ce74a4aae89a31fae9aaa9780fc19dcaryclark@google.com#endif
32