• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2011 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #ifndef SkBlitRow_DEFINED
9 #define SkBlitRow_DEFINED
10 
11 #include "SkBitmap.h"
12 #include "SkColor.h"
13 
14 class SkBlitRow {
15 public:
16     enum Flags32 {
17         kGlobalAlpha_Flag32     = 1 << 0,
18         kSrcPixelAlpha_Flag32   = 1 << 1
19     };
20 
21     /** Function pointer that blends 32bit colors onto a 32bit destination.
22         @param dst  array of dst 32bit colors
23         @param src  array of src 32bit colors (w/ or w/o alpha)
24         @param count number of colors to blend
25         @param alpha global alpha to be applied to all src colors
26      */
27     typedef void (*Proc32)(uint32_t dst[], const SkPMColor src[], int count, U8CPU alpha);
28 
29     static Proc32 Factory32(unsigned flags32);
30 
31     /** Blend a single color onto a row of S32 pixels, writing the result
32         into a row of D32 pixels. src and dst may be the same memory, but
33         if they are not, they may not overlap.
34      */
35     static void Color32(SkPMColor dst[], const SkPMColor src[], int count, SkPMColor color);
36 
37     /** These static functions are called by the Factory and Factory32
38         functions, and should return either NULL, or a
39         platform-specific function-ptr to be used in place of the
40         system default.
41      */
42 
43     static Proc32 PlatformProcs32(unsigned flags);
44 
45 private:
46     enum {
47         kFlags32_Mask = 3
48     };
49 };
50 
51 #endif
52