| Index: src/pdf/SkPDFGraphicState.h
|
| diff --git a/src/pdf/SkPDFGraphicState.h b/src/pdf/SkPDFGraphicState.h
|
| index 85a324b1913801217f5573b303b32c27ef7ad9af..dddf439db31f18ecf8777f1f49d2c011632c3c34 100644
|
| --- a/src/pdf/SkPDFGraphicState.h
|
| +++ b/src/pdf/SkPDFGraphicState.h
|
| @@ -13,19 +13,17 @@
|
| #include "SkPaint.h"
|
| #include "SkPDFTypes.h"
|
| #include "SkTemplates.h"
|
| +#include "SkChecksum.h"
|
|
|
| +class SkPDFCanon;
|
| class SkPDFFormXObject;
|
|
|
| /** \class SkPDFGraphicState
|
| SkPaint objects roughly correspond to graphic state dictionaries that can
|
| be installed. So that a given dictionary is only output to the pdf file
|
| - once, we want to canonicalize them. Static methods in this class manage
|
| - a weakly referenced set of SkPDFGraphicState objects: when the last
|
| - reference to a SkPDFGraphicState is removed, it removes itself from the
|
| - static set of objects.
|
| -
|
| + once, we want to canonicalize them.
|
| */
|
| -class SkPDFGraphicState : public SkPDFDict {
|
| +class SkPDFGraphicState : public SkPDFObject {
|
| SK_DECLARE_INST_COUNT(SkPDFGraphicState)
|
| public:
|
| enum SkPDFSMaskMode {
|
| @@ -33,8 +31,6 @@ public:
|
| kLuminosity_SMaskMode
|
| };
|
|
|
| - virtual ~SkPDFGraphicState();
|
| -
|
| // Override emitObject so that we can populate the dictionary on
|
| // demand.
|
| virtual void emitObject(SkWStream* stream,
|
| @@ -57,32 +53,37 @@ public:
|
| * @param sMask The form xobject to use as a soft mask.
|
| * @param invert Indicates if the alpha of the sMask should be inverted.
|
| * @param sMaskMode Whether to use alpha or luminosity for the sMask.
|
| + *
|
| + * These are not de-duped.
|
| */
|
| - static SkPDFGraphicState* GetSMaskGraphicState(SkPDFFormXObject* sMask,
|
| - bool invert,
|
| - SkPDFSMaskMode sMaskMode);
|
| + static SkPDFDict* GetSMaskGraphicState(SkPDFFormXObject* sMask,
|
| + bool invert,
|
| + SkPDFSMaskMode sMaskMode);
|
|
|
| /** Get a graphic state that only unsets the soft mask. The reference
|
| * count of the object is incremented and it is the caller's responsibility
|
| * to unreference it when done. This is needed to accommodate the weak
|
| * reference pattern used when the returned object is new and has no
|
| * other references.
|
| + *
|
| + * The returned object is a singleton.
|
| */
|
| - static SkPDFGraphicState* GetNoSMaskGraphicState();
|
| -
|
| - bool equals(const SkPaint&) const;
|
| + static SkPDFDict* GetNoSMaskGraphicState();
|
|
|
| - // Only public for SK_DECLARE_STATIC_LAZY_PTR
|
| - static SkPDFGraphicState* CreateNoSMaskGraphicState();
|
| + bool operator==(const SkPDFGraphicState& rhs) const {
|
| + return 0 == memcmp(&fStrokeWidth, &rhs.fStrokeWidth, 12);
|
| + }
|
| + uint32_t hash() const { return SkChecksum::Murmur3(&fStrokeWidth, 12); }
|
|
|
| private:
|
| - const SkPaint fPaint;
|
| - bool fPopulated;
|
| -
|
| - SkPDFGraphicState();
|
| - SkPDFGraphicState(const SkPaint& paint);
|
| -
|
| - void populateDict();
|
| + const SkScalar fStrokeWidth;
|
| + const SkScalar fStrokeMiter;
|
| + const uint8_t fAlpha;
|
| + const uint8_t fStrokeCap; // SkPaint::Cap
|
| + const uint8_t fStrokeJoin; // SkPaint::Join
|
| + const uint8_t fMode; // SkXfermode::Mode
|
| +
|
| + SkPDFGraphicState(const SkPaint&);
|
|
|
| typedef SkPDFDict INHERITED;
|
| };
|
|
|