diff options
author | Mike Reed <reed@google.com> | 2017-01-08 10:32:57 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-01-08 16:08:28 +0000 |
commit | 5cb9a4ede3bb10cec8ee88e6af310fdc49aeaa05 (patch) | |
tree | 183e004cf4be0ba8cc77edc359e48d9a4eab8cde /src/core/SkBlitRow.h | |
parent | 4ee4dc4c2246a60ef05370f24a16846eb0638214 (diff) |
move SkBlitRow.h out of public
BUG=skia:
Change-Id: I9a9c04fdb9fcfe50d57b28fa560a9b3d5499b699
Reviewed-on: https://skia-review.googlesource.com/6734
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src/core/SkBlitRow.h')
-rw-r--r-- | src/core/SkBlitRow.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/core/SkBlitRow.h b/src/core/SkBlitRow.h new file mode 100644 index 0000000000..56121eba78 --- /dev/null +++ b/src/core/SkBlitRow.h @@ -0,0 +1,91 @@ +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkBlitRow_DEFINED +#define SkBlitRow_DEFINED + +#include "SkBitmap.h" +#include "SkColor.h" + +class SkBlitRow { +public: + enum Flags16 { + //! If set, the alpha parameter will be != 255 + kGlobalAlpha_Flag = 0x01, + //! If set, the src colors may have alpha != 255 + kSrcPixelAlpha_Flag = 0x02, + //! If set, the resulting 16bit colors should be dithered + kDither_Flag = 0x04 + }; + + /** Function pointer that reads a scanline of src SkPMColors, and writes + a corresponding scanline of 16bit colors (specific format based on the + config passed to the Factory. + + The x,y params provide the dithering phase for the start of the scanline + + @param alpha A global alpha to be applied to all of the src colors + @param x The x coordinate of the beginning of the scanline + @param y THe y coordinate of the scanline + */ + typedef void (*Proc16)(uint16_t dst[], const SkPMColor src[], int count, + U8CPU alpha, int x, int y); + + static Proc16 Factory16(unsigned flags); + + /** + * Function pointer that blends a single src color onto a scaline of dst colors. + * + * The x,y params provide the dithering phase for the start of the scanline + */ + typedef void (*ColorProc16)(uint16_t dst[], SkPMColor src, int count, int x, int y); + + // Note : we ignore the kGlobalAlpha_Flag setting, but do respect kSrcPixelAlpha_Flag + static ColorProc16 ColorFactory16(unsigned flags); + + ///////////// D32 version + + enum Flags32 { + kGlobalAlpha_Flag32 = 1 << 0, + kSrcPixelAlpha_Flag32 = 1 << 1 + }; + + /** Function pointer that blends 32bit colors onto a 32bit destination. + @param dst array of dst 32bit colors + @param src array of src 32bit colors (w/ or w/o alpha) + @param count number of colors to blend + @param alpha global alpha to be applied to all src colors + */ + typedef void (*Proc32)(uint32_t dst[], const SkPMColor src[], int count, U8CPU alpha); + + static Proc32 Factory32(unsigned flags32); + + /** Blend a single color onto a row of S32 pixels, writing the result + into a row of D32 pixels. src and dst may be the same memory, but + if they are not, they may not overlap. + */ + static void Color32(SkPMColor dst[], const SkPMColor src[], int count, SkPMColor color); + + /** These static functions are called by the Factory and Factory32 + functions, and should return either NULL, or a + platform-specific function-ptr to be used in place of the + system default. + */ + + static Proc32 PlatformProcs32(unsigned flags); + + static Proc16 PlatformFactory565(unsigned flags); + static ColorProc16 PlatformColorFactory565(unsigned flags); + +private: + enum { + kFlags16_Mask = 7, + kFlags32_Mask = 3 + }; +}; + +#endif |