1 
2 /*
3  * Copyright 2010 The Android Open Source Project
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 
9 
10 #ifndef SkPDFFormXObject_DEFINED
11 #define SkPDFFormXObject_DEFINED
12 
13 #include "SkPDFStream.h"
14 #include "SkPDFTypes.h"
15 #include "SkRect.h"
16 #include "SkRefCnt.h"
17 #include "SkString.h"
18 
19 class SkMatrix;
20 class SkPDFDevice;
21 class SkPDFObjNumMap;
22 
23 /** \class SkPDFFormXObject
24 
25     A form XObject; a self contained description of graphics objects.  A form
26     XObject is basically a page object with slightly different syntax, that
27     can be drawn onto a page.
28 */
29 
30 // The caller could keep track of the form XObjects it creates and
31 // canonicalize them, but the Skia API doesn't provide enough context to
32 // automatically do it (trivially).
33 class SkPDFFormXObject : public SkPDFStream {
34 public:
35     /** Create a PDF form XObject. Entries for the dictionary entries are
36      *  automatically added.
37      *  @param device      The set of graphical elements on this form.
38      */
39     explicit SkPDFFormXObject(SkPDFDevice* device);
40     /**
41      * Create a PDF form XObject from a raw content stream and associated
42      * resources.
43      */
44     explicit SkPDFFormXObject(SkStream* content,
45                               SkRect bbox,
46                               SkPDFDict* resourceDict);
47     virtual ~SkPDFFormXObject();
48 
49 private:
50     void init(const char* colorSpace,
51               SkPDFDict* resourceDict, SkPDFArray* bbox);
52 };
53 
54 #endif
55