aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pipe
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2016-10-03 18:02:50 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-10-03 18:03:29 +0000
commitce02e7175872abde3721df9e5d3ec0ab8384cd8e (patch)
tree620eec63e1082137df3111d09cd2bf1eb7ebd180 /src/pipe
parent6fb592e6afb0061c9c0af15ddf599e2903f508f1 (diff)
Revert "replace SkXfermode obj with SkBlendMode enum in paints"
This reverts commit I4fb489ba6b3f77b458f7e4a99f79c7ad10859135. Reason for revert: <INSERT REASONING HERE> Original change's description: > replace SkXfermode obj with SkBlendMode enum in paints > > BUG=skia:5814 > > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2714 > > Change-Id: I4fb489ba6b3f77b458f7e4a99f79c7ad10859135 > Reviewed-on: https://skia-review.googlesource.com/2714 > Reviewed-by: Florin Malita <fmalita@chromium.org> > Reviewed-by: Brian Salomon <bsalomon@google.com> > Commit-Queue: Mike Reed <reed@google.com> > TBR=bsalomon@google.com,fmalita@chromium.org,fmalita@google.com,reed@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I3e43f79ef5c1709929663fe63cc1f67cd78270b7 Reviewed-on: https://skia-review.googlesource.com/2871 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src/pipe')
-rw-r--r--src/pipe/SkPipeCanvas.cpp11
-rw-r--r--src/pipe/SkPipeFormat.h11
-rw-r--r--src/pipe/SkPipeReader.cpp13
3 files changed, 25 insertions, 10 deletions
diff --git a/src/pipe/SkPipeCanvas.cpp b/src/pipe/SkPipeCanvas.cpp
index 3b636a23c0..a01237fbbb 100644
--- a/src/pipe/SkPipeCanvas.cpp
+++ b/src/pipe/SkPipeCanvas.cpp
@@ -81,6 +81,7 @@ static uint16_t compute_nondef(const SkPaint& paint, PaintUsage usage) {
bits |= (paint.getMaskFilter() ? kMaskFilter_NonDef : 0);
}
+ bits |= (paint.getXfermode() ? kXfermode_NonDef : 0);
bits |= (paint.getColorFilter() ? kColorFilter_NonDef : 0);
bits |= (paint.getImageFilter() ? kImageFilter_NonDef : 0);
bits |= (paint.getDrawLooper() ? kDrawLooper_NonDef : 0);
@@ -149,8 +150,15 @@ static void write_paint(SkWriteBuffer& writer, const SkPaint& paint, unsigned us
writer.write32(packedFlags);
unsigned nondef = compute_nondef(paint, (PaintUsage)usage);
+ SkXfermode::Mode mode;
+ if (SkXfermode::AsMode(paint.getXfermode(), &mode)) {
+ nondef &= ~kXfermode_NonDef; // don't need to store a pointer since we have an enum
+ } else {
+ SkASSERT(nondef & kXfermode_NonDef);
+ mode = (SkXfermode::Mode)0;
+ }
const uint8_t pad = 0;
- writer.write32((nondef << 16) | ((unsigned)paint.getBlendMode() << 8) | pad);
+ writer.write32((nondef << 16) | ((unsigned)mode << 8) | pad);
CHECK_WRITE_SCALAR(writer, nondef, paint, TextSize);
CHECK_WRITE_SCALAR(writer, nondef, paint, TextScaleX);
@@ -171,6 +179,7 @@ static void write_paint(SkWriteBuffer& writer, const SkPaint& paint, unsigned us
CHECK_WRITE_FLATTENABLE(writer, nondef, paint, PathEffect);
CHECK_WRITE_FLATTENABLE(writer, nondef, paint, Shader);
+ CHECK_WRITE_FLATTENABLE(writer, nondef, paint, Xfermode);
CHECK_WRITE_FLATTENABLE(writer, nondef, paint, MaskFilter);
CHECK_WRITE_FLATTENABLE(writer, nondef, paint, ColorFilter);
CHECK_WRITE_FLATTENABLE(writer, nondef, paint, Rasterizer);
diff --git a/src/pipe/SkPipeFormat.h b/src/pipe/SkPipeFormat.h
index 9a1d30c7be..8f5c8282e4 100644
--- a/src/pipe/SkPipeFormat.h
+++ b/src/pipe/SkPipeFormat.h
@@ -94,11 +94,12 @@ enum {
kTypeface_NonDef = 1 << 6,
kPathEffect_NonDef = 1 << 7,
kShader_NonDef = 1 << 8,
- kMaskFilter_NonDef = 1 << 9,
- kColorFilter_NonDef = 1 << 10,
- kRasterizer_NonDef = 1 << 11,
- kImageFilter_NonDef = 1 << 12,
- kDrawLooper_NonDef = 1 << 13,
+ kXfermode_NonDef = 1 << 9,
+ kMaskFilter_NonDef = 1 << 10,
+ kColorFilter_NonDef = 1 << 11,
+ kRasterizer_NonDef = 1 << 12,
+ kImageFilter_NonDef = 1 << 13,
+ kDrawLooper_NonDef = 1 << 14,
};
enum {
diff --git a/src/pipe/SkPipeReader.cpp b/src/pipe/SkPipeReader.cpp
index 47d4072d06..8840da1c83 100644
--- a/src/pipe/SkPipeReader.cpp
+++ b/src/pipe/SkPipeReader.cpp
@@ -149,13 +149,13 @@ static SkMatrix read_sparse_matrix(SkReadBuffer& reader, SkMatrix::TypeMask tm)
* pad zeros : 8
*/
static SkPaint read_paint(SkReadBuffer& reader) {
- SkPaint paint;
-
uint32_t packedFlags = reader.read32();
uint32_t extra = reader.read32();
unsigned nondef = extra >> 16;
- paint.setBlendMode(SkBlendMode((extra >> 8) & 0xFF));
- SkASSERT((extra & 0xFF) == 0); // zero pad byte
+ SkXfermode::Mode mode = (SkXfermode::Mode)((extra >> 8) & 0xFF);
+ SkASSERT((extra & 0xFF) == 0);
+
+ SkPaint paint;
packedFlags >>= 2; // currently unused
paint.setTextEncoding((SkPaint::TextEncoding)(packedFlags & 3)); packedFlags >>= 2;
@@ -180,12 +180,17 @@ static SkPaint read_paint(SkReadBuffer& reader) {
CHECK_SET_FLATTENABLE(Typeface);
CHECK_SET_FLATTENABLE(PathEffect);
CHECK_SET_FLATTENABLE(Shader);
+ CHECK_SET_FLATTENABLE(Xfermode);
CHECK_SET_FLATTENABLE(MaskFilter);
CHECK_SET_FLATTENABLE(ColorFilter);
CHECK_SET_FLATTENABLE(Rasterizer);
CHECK_SET_FLATTENABLE(ImageFilter);
CHECK_SET_FLATTENABLE(DrawLooper);
+ if (!(nondef & kXfermode_NonDef)) {
+ paint.setXfermodeMode(mode);
+ }
+
return paint;
}