1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 758af9a64701540c7f8083bc22a42d0bae3a5583creed@google.com 8c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com#ifndef SkBlitRow_DEFINED 9c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com#define SkBlitRow_DEFINED 10c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com 11c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com#include "SkBitmap.h" 12c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com#include "SkColor.h" 13c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com 14c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.comclass SkBlitRow { 15c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.compublic: 16c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com enum Flags32 { 17c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com kGlobalAlpha_Flag32 = 1 << 0, 181f90287df3129cb267422e482c52ebeca6a8990ftomhudson@google.com kSrcPixelAlpha_Flag32 = 1 << 1 19c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com }; 20c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com 21c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com /** Function pointer that blends 32bit colors onto a 32bit destination. 22c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com @param dst array of dst 32bit colors 23c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com @param src array of src 32bit colors (w/ or w/o alpha) 24c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com @param count number of colors to blend 25c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com @param alpha global alpha to be applied to all src colors 26c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com */ 27a7f11918d92621507f35b228a290f05dcaf0f4b6reed typedef void (*Proc32)(uint32_t dst[], const SkPMColor src[], int count, U8CPU alpha); 28c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com 29c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com static Proc32 Factory32(unsigned flags32); 30981d4798007b91e2e19c13b171583927a56df63breed@google.com 31c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com /** Blend a single color onto a row of S32 pixels, writing the result 32c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com into a row of D32 pixels. src and dst may be the same memory, but 33c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com if they are not, they may not overlap. 34c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com */ 35a7f11918d92621507f35b228a290f05dcaf0f4b6reed static void Color32(SkPMColor dst[], const SkPMColor src[], int count, SkPMColor color); 36c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com 379272761b22746d2d22439c26f5555028f8e824dasenorblanco@chromium.org /** These static functions are called by the Factory and Factory32 389272761b22746d2d22439c26f5555028f8e824dasenorblanco@chromium.org functions, and should return either NULL, or a 399272761b22746d2d22439c26f5555028f8e824dasenorblanco@chromium.org platform-specific function-ptr to be used in place of the 409272761b22746d2d22439c26f5555028f8e824dasenorblanco@chromium.org system default. 419272761b22746d2d22439c26f5555028f8e824dasenorblanco@chromium.org */ 429272761b22746d2d22439c26f5555028f8e824dasenorblanco@chromium.org 43f0f4e9abba62a405b7a41e40fcee20b45eb348eereed@android.com static Proc32 PlatformProcs32(unsigned flags); 449272761b22746d2d22439c26f5555028f8e824dasenorblanco@chromium.org 45c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.comprivate: 46c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com enum { 47c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com kFlags32_Mask = 3 48c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com }; 49c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com}; 50c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com 51c4cae85752e3e486cf4eac8cd8128f57b6f40563reed@android.com#endif 52