- add third_party src.
[platform/framework/web/crosswalk.git] / src / third_party / skia / src / gpu / GrReducedClip.h
1
2 /*
3  * Copyright 2012 Google Inc.
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8
9 #include "SkClipStack.h"
10 #include "SkTLList.h"
11
12 namespace GrReducedClip {
13
14 typedef SkTLList<SkClipStack::Element> ElementList;
15
16 enum InitialState {
17     kAllIn_InitialState,
18     kAllOut_InitialState,
19 };
20
21 /**
22  * This function takes a clip stack and a query rectangle and it produces a reduced set of
23  * SkClipStack::Elements that are equivalent to applying the full stack to the rectangle. The
24  * initial state of the query rectangle before the first clip element is applied is returned via
25  * initialState. Optionally, the caller can request a tighter bounds on the clip be returned via
26  * tighterBounds. If not NULL, tighterBounds will always be contained by queryBounds after return.
27  * If tighterBounds is specified then it is assumed that the caller will implicitly clip against it.
28  * If the caller specifies non-NULL for requiresAA then it will indicate whether anti-aliasing is
29  * required to process any of the elements in the result.
30  *
31  * This may become a member function of SkClipStack when its interface is determined to be stable.
32  */
33 void ReduceClipStack(const SkClipStack& stack,
34                      const SkIRect& queryBounds,
35                      ElementList* result,
36                      InitialState* initialState,
37                      SkIRect* tighterBounds = NULL,
38                      bool* requiresAA = NULL);
39
40 } // namespace GrReducedClip