1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /*
- * Copyright 2013 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #ifndef SkPaintPriv_DEFINED
- #define SkPaintPriv_DEFINED
- #include "include/core/SkPaint.h"
- class SkFont;
- class SkReadBuffer;
- class SkWriteBuffer;
- enum SkReadPaintResult {
- kFailed_ReadPaint,
- kSuccess_JustPaint,
- kSuccess_PaintAndFont,
- };
- class SkPaintPriv {
- public:
- enum ShaderOverrideOpacity {
- kNone_ShaderOverrideOpacity, //!< there is no overriding shader (bitmap or image)
- kOpaque_ShaderOverrideOpacity, //!< the overriding shader is opaque
- kNotOpaque_ShaderOverrideOpacity, //!< the overriding shader may not be opaque
- };
- /**
- * Returns true if drawing with this paint (or nullptr) will ovewrite all affected pixels.
- *
- * Note: returns conservative true, meaning it may return false even though the paint might
- * in fact overwrite its pixels.
- */
- static bool Overwrites(const SkPaint* paint, ShaderOverrideOpacity);
- static bool ShouldDither(const SkPaint&, SkColorType);
- /*
- * The luminance color is used to determine which Gamma Canonical color to map to. This is
- * really only used by backends which want to cache glyph masks, and need some way to know if
- * they need to generate new masks based off a given color.
- */
- static SkColor ComputeLuminanceColor(const SkPaint&);
- /** Serializes SkPaint into a buffer. A companion unflatten() call
- can reconstitute the paint at a later time.
- @param buffer SkWriteBuffer receiving the flattened SkPaint data
- */
- static void Flatten(const SkPaint& paint, SkWriteBuffer& buffer);
- /** Populates SkPaint, typically from a serialized stream, created by calling
- flatten() at an earlier time.
- SkReadBuffer class is not public, so unflatten() cannot be meaningfully called
- by the client.
- Older formats also stored font info in the serialized data. On success, this
- returns if it deserialized just a paint, or both a font and paint. The font
- param is optional.
- @param buffer serialized data describing SkPaint content
- @return false if the buffer contains invalid data
- */
- static SkReadPaintResult Unflatten(SkPaint* paint, SkReadBuffer& buffer, SkFont* font);
- private:
- static SkReadPaintResult Unflatten_PreV68(SkPaint* paint, SkReadBuffer& buffer, SkFont*);
- };
- #endif
|