1
2/*
3 * Copyright 2006 The Android Open Source Project
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
10#ifndef SkScanPriv_DEFINED
11#define SkScanPriv_DEFINED
12
13#include "SkScan.h"
14#include "SkBlitter.h"
15
16class SkScanClipper {
17public:
18    SkScanClipper(SkBlitter* blitter, const SkRegion* clip, const SkIRect& bounds,
19                  bool skipRejectTest = false);
20
21    SkBlitter*      getBlitter() const { return fBlitter; }
22    const SkIRect*  getClipRect() const { return fClipRect; }
23
24private:
25    SkRectClipBlitter   fRectBlitter;
26    SkRgnClipBlitter    fRgnBlitter;
27    SkBlitter*          fBlitter;
28    const SkIRect*      fClipRect;
29};
30
31// clipRect == null means path is entirely inside the clip
32void sk_fill_path(const SkPath& path, const SkIRect* clipRect,
33                  SkBlitter* blitter, int start_y, int stop_y, int shiftEdgesUp,
34                  const SkRegion& clipRgn);
35
36// blit the rects above and below avoid, clipped to clip
37void sk_blit_above(SkBlitter*, const SkIRect& avoid, const SkRegion& clip);
38void sk_blit_below(SkBlitter*, const SkIRect& avoid, const SkRegion& clip);
39
40#endif
41