| Index: src/pdf/SkPDFCanon.h
|
| diff --git a/src/pdf/SkPDFCanon.h b/src/pdf/SkPDFCanon.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5a06a465dd1582eaa3b26b41b369540bd51cade1
|
| --- /dev/null
|
| +++ b/src/pdf/SkPDFCanon.h
|
| @@ -0,0 +1,74 @@
|
| +/*
|
| + * Copyright 2015 Google Inc.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license that can be
|
| + * found in the LICENSE file.
|
| + */
|
| +#ifndef SkPDFCanon_DEFINED
|
| +#define SkPDFCanon_DEFINED
|
| +
|
| +#include "SkPDFShader.h"
|
| +#include "SkThread.h"
|
| +#include "SkTDArray.h"
|
| +
|
| +struct SkIRect;
|
| +class SkMatrix;
|
| +class SkPDFFont;
|
| +class SkPDFGraphicState;
|
| +class SkPaint;
|
| +class SkShader;
|
| +
|
| +// This class's fields and methods will eventually become part of
|
| +// SkPDFDocument/SkDocument_PDF. For now, it exists as a singleton to
|
| +// preflight that transition. This replaces three global arrays in
|
| +// SkPDFFont, SkPDFShader, and SkPDFGraphicsContext.
|
| +//
|
| +// IF YOU ARE LOOKING AT THIS API PLEASE DO NOT WRITE THE CHANGE
|
| +// YOU ARE ABOUT TO WRITE WITHOUT TALKING TO HALCANARY@.
|
| +//
|
| +// Note that this class does not create, delete, reference or
|
| +// dereference the SkPDFObject objects that it indexes. It is up to
|
| +// the caller to manage the lifetime of these objects.
|
| +class SkPDFCanon : SkNoncopyable {
|
| +public:
|
| + SkPDFCanon();
|
| + ~SkPDFCanon();
|
| +
|
| + static SkPDFCanon& GetCanon();
|
| +
|
| + // This mutexes will be removed once this class is subsumed into
|
| + // SkPDFDocument.
|
| + static SkBaseMutex& GetFontMutex();
|
| + static SkBaseMutex& GetShaderMutex();
|
| + static SkBaseMutex& GetPaintMutex();
|
| +
|
| + // Returns exact match if there is one. If not, it returns NULL.
|
| + // If there is no exact match, but there is a related font, we
|
| + // still return NULL, but also set *relatedFont.
|
| + SkPDFFont* findFont(uint32_t fontID,
|
| + uint16_t glyphID,
|
| + SkPDFFont** relatedFont) const;
|
| + void addFont(SkPDFFont* font, uint32_t fontID, uint16_t fGlyphID);
|
| + void removeFont(SkPDFFont*);
|
| +
|
| + SkPDFShader* findShader(const SkPDFShader::State&) const;
|
| + void addShader(SkPDFShader*);
|
| + void removeShader(SkPDFShader*);
|
| +
|
| + SkPDFGraphicState* findGraphicState(const SkPaint&) const;
|
| + void addGraphicState(SkPDFGraphicState*);
|
| + void removeGraphicState(SkPDFGraphicState*);
|
| +
|
| +private:
|
| + struct FontRec {
|
| + SkPDFFont* fFont;
|
| + uint32_t fFontID;
|
| + uint16_t fGlyphID;
|
| + };
|
| + SkTDArray<FontRec> fFontRecords;
|
| +
|
| + SkTDArray<SkPDFShader*> fShaderRecords;
|
| +
|
| + SkTDArray<SkPDFGraphicState*> fGraphicStateRecords;
|
| +};
|
| +#endif // SkPDFCanon_DEFINED
|
|
|