SkScanPriv.h revision ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976e
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
20    SkBlitter*      getBlitter() const { return fBlitter; }
21    const SkIRect*  getClipRect() const { return fClipRect; }
22
23private:
24    SkRectClipBlitter   fRectBlitter;
25    SkRgnClipBlitter    fRgnBlitter;
26    SkBlitter*          fBlitter;
27    const SkIRect*      fClipRect;
28};
29
30// clipRect == null means path is entirely inside the clip
31void sk_fill_path(const SkPath& path, const SkIRect* clipRect,
32                  SkBlitter* blitter, int start_y, int stop_y, int shiftEdgesUp,
33                  const SkRegion& clipRgn);
34
35// blit the rects above and below avoid, clipped to clip
36void sk_blit_above(SkBlitter*, const SkIRect& avoid, const SkRegion& clip);
37void sk_blit_below(SkBlitter*, const SkIRect& avoid, const SkRegion& clip);
38
39#endif
40
41