180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/* 380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2006 The Android Open Source Project 480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * 580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be 680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file. 780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */ 880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifndef SkScanPriv_DEFINED 1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#define SkScanPriv_DEFINED 1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkScan.h" 1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkBlitter.h" 1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkScanClipper { 1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScanClipper(SkBlitter* blitter, const SkRegion* clip, const SkIRect& bounds, 1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru bool skipRejectTest = false); 2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkBlitter* getBlitter() const { return fBlitter; } 2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru const SkIRect* getClipRect() const { return fClipRect; } 2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkRectClipBlitter fRectBlitter; 2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkRgnClipBlitter fRgnBlitter; 2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkBlitter* fBlitter; 2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru const SkIRect* fClipRect; 2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru// clipRect == null means path is entirely inside the clip 3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid sk_fill_path(const SkPath& path, const SkIRect* clipRect, 3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkBlitter* blitter, int start_y, int stop_y, int shiftEdgesUp, 3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru const SkRegion& clipRgn); 3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru// blit the rects above and below avoid, clipped to clip 3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid sk_blit_above(SkBlitter*, const SkIRect& avoid, const SkRegion& clip); 3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid sk_blit_below(SkBlitter*, const SkIRect& avoid, const SkRegion& clip); 3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif 41