diff options
Diffstat (limited to 'include/core/SkScan.h')
-rw-r--r-- | include/core/SkScan.h | 106 |
1 files changed, 58 insertions, 48 deletions
diff --git a/include/core/SkScan.h b/include/core/SkScan.h index 31d4845..61ba1b0 100644 --- a/include/core/SkScan.h +++ b/include/core/SkScan.h @@ -1,25 +1,18 @@ -/* libs/graphics/sgl/SkScan.h -** -** Copyright 2011, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ + +/* + * Copyright 2011 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + #ifndef SkScan_DEFINED #define SkScan_DEFINED #include "SkRect.h" +class SkRasterClip; class SkRegion; class SkBlitter; class SkPath; @@ -31,57 +24,74 @@ typedef SkIRect SkXRect; class SkScan { public: - static void FillIRect(const SkIRect&, const SkRegion* clip, SkBlitter*); - static void FillXRect(const SkXRect&, const SkRegion* clip, SkBlitter*); + static void FillPath(const SkPath&, const SkIRect&, SkBlitter*); + /////////////////////////////////////////////////////////////////////////// + // rasterclip + + static void FillIRect(const SkIRect&, const SkRasterClip&, SkBlitter*); + static void FillXRect(const SkXRect&, const SkRasterClip&, SkBlitter*); #ifdef SK_SCALAR_IS_FIXED - static void FillRect(const SkRect& rect, const SkRegion* clip, + static void FillRect(const SkRect& rect, const SkRasterClip& clip, SkBlitter* blitter) { SkScan::FillXRect(*(const SkXRect*)&rect, clip, blitter); } -#else - static void FillRect(const SkRect&, const SkRegion* clip, SkBlitter*); -#endif - static void FillPath(const SkPath&, const SkRegion& clip, SkBlitter*); - - static void FillTriangle(const SkPoint pts[], const SkRegion*, SkBlitter*); - static void FillTriangle(const SkPoint& a, const SkPoint& b, - const SkPoint& c, const SkRegion* clip, + static void AntiFillRect(const SkRect& rect, const SkRasterClip& clip, SkBlitter* blitter) { - SkPoint pts[3]; - pts[0] = a; - pts[1] = b; - pts[2] = c; - FillTriangle(pts, clip, blitter); + SkScan::AntiFillXRect(*(const SkXRect*)&rect, clip, blitter); } - - static void HairLine(const SkPoint&, const SkPoint&, const SkRegion*, +#else + static void FillRect(const SkRect&, const SkRasterClip&, SkBlitter*); + static void AntiFillRect(const SkRect&, const SkRasterClip&, SkBlitter*); +#endif + static void AntiFillXRect(const SkXRect&, const SkRasterClip&, SkBlitter*); + static void FillPath(const SkPath&, const SkRasterClip&, SkBlitter*); + static void AntiFillPath(const SkPath&, const SkRasterClip&, SkBlitter*); + static void FrameRect(const SkRect&, const SkPoint& strokeSize, + const SkRasterClip&, SkBlitter*); + static void AntiFrameRect(const SkRect&, const SkPoint& strokeSize, + const SkRasterClip&, SkBlitter*); + static void FillTriangle(const SkPoint pts[], const SkRasterClip&, SkBlitter*); + static void HairLine(const SkPoint&, const SkPoint&, const SkRasterClip&, SkBlitter*); - static void HairRect(const SkRect&, const SkRegion* clip, SkBlitter*); - static void HairPath(const SkPath&, const SkRegion* clip, SkBlitter*); + static void AntiHairLine(const SkPoint&, const SkPoint&, const SkRasterClip&, + SkBlitter*); + static void HairRect(const SkRect&, const SkRasterClip&, SkBlitter*); + static void AntiHairRect(const SkRect&, const SkRasterClip&, SkBlitter*); + static void HairPath(const SkPath&, const SkRasterClip&, SkBlitter*); + static void AntiHairPath(const SkPath&, const SkRasterClip&, SkBlitter*); + +private: + friend class SkAAClip; + friend class SkRegion; - static void AntiFillXRect(const SkXRect&, const SkRegion* clip, SkBlitter*); + static void FillIRect(const SkIRect&, const SkRegion* clip, SkBlitter*); + static void FillXRect(const SkXRect&, const SkRegion* clip, SkBlitter*); #ifdef SK_SCALAR_IS_FIXED - static void AntiFillRect(const SkRect& rect, const SkRegion* clip, + static void FillRect(const SkRect& rect, const SkRegion* clip, SkBlitter* blitter) { + SkScan::FillXRect(*(const SkXRect*)&rect, clip, blitter); + } + static void AntiFillRect(const SkRect& rect, const SkRegion* clip, + SkBlitter* blitter) { SkScan::AntiFillXRect(*(const SkXRect*)&rect, clip, blitter); } #else + static void FillRect(const SkRect&, const SkRegion* clip, SkBlitter*); static void AntiFillRect(const SkRect&, const SkRegion* clip, SkBlitter*); #endif + static void AntiFillXRect(const SkXRect&, const SkRegion*, SkBlitter*); + static void FillPath(const SkPath&, const SkRegion& clip, SkBlitter*); + static void AntiFillPath(const SkPath&, const SkRegion& clip, SkBlitter*, + bool forceRLE = false); + static void FillTriangle(const SkPoint pts[], const SkRegion*, SkBlitter*); - static void AntiFillPath(const SkPath&, const SkRegion& clip, SkBlitter*); - - static void AntiHairLine(const SkPoint&, const SkPoint&, const SkRegion*, - SkBlitter*); - static void AntiHairRect(const SkRect&, const SkRegion* clip, SkBlitter*); - static void AntiHairPath(const SkPath&, const SkRegion* clip, SkBlitter*); - - // draws with a miter-join - static void FrameRect(const SkRect&, const SkPoint& strokeSize, - const SkRegion*, SkBlitter*); static void AntiFrameRect(const SkRect&, const SkPoint& strokeSize, const SkRegion*, SkBlitter*); + static void HairLineRgn(const SkPoint&, const SkPoint&, const SkRegion*, + SkBlitter*); + static void AntiHairLineRgn(const SkPoint&, const SkPoint&, const SkRegion*, + SkBlitter*); }; /** Assign an SkXRect from a SkIRect, by promoting the src rect's coordinates |