diff options
author | 2010-10-26 19:54:45 +0000 | |
---|---|---|
committer | 2010-10-26 19:54:45 +0000 | |
commit | eb6c7596af1a1fc7860e27ff2f678a33b2576c0f (patch) | |
tree | 6bf6ef07f98630a780b914f3a78bae52e8936c2c /include/pdf | |
parent | 7d71f7f655cab6b6194f6c765ca33c1a6d512f5e (diff) |
Add PDF support for drawDevice using a form xobject.
This depends on:
http://codereview.appspot.com/2719041
http://codereview.appspot.com/2720041
http://codereview.appspot.com/2721041
Review URL: http://codereview.appspot.com/2710042
git-svn-id: http://skia.googlecode.com/svn/trunk@621 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'include/pdf')
-rw-r--r-- | include/pdf/SkPDFFormXObject.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/include/pdf/SkPDFFormXObject.h b/include/pdf/SkPDFFormXObject.h new file mode 100644 index 0000000000..288a4499e1 --- /dev/null +++ b/include/pdf/SkPDFFormXObject.h @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef SkPDFFormXObject_DEFINED +#define SkPDFFormXObject_DEFINED + +#include "SkPDFStream.h" +#include "SkPDFTypes.h" +#include "SkRefCnt.h" +#include "SkString.h" + +class SkMatrix; +class SkPDFDevice; +class SkPDFCatalog; + +/** \class SkPDFFormXObject + + A form XObject; a self containted description of graphics objects. A form + XObject is basically a page object with slightly different syntax, that + can be drawn onto a page. +*/ + +// The caller could keep track of the form XObjects it creates and +// canonicalize them, but the Skia API doesn't provide enough context to +// automatically do it (trivially). +class SkPDFFormXObject : public SkPDFObject { +public: + /** Create a PDF form XObject. Entries for the dictionary entries are + * automatically added. + * @param device The set of graphical elements on this form. + * @param matrix The mapping from user space to form space. + */ + SkPDFFormXObject(SkPDFDevice* device, const SkMatrix& matrix); + virtual ~SkPDFFormXObject(); + + // The SkPDFObject interface. + virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog, + bool indirect); + virtual size_t getOutputSize(SkPDFCatalog* catalog, bool indirect); + virtual void getResources(SkTDArray<SkPDFObject*>* resourceList); + + /** Add the value to the stream dictionary with the given key. + * @param key The key for this dictionary entry. + * @param value The value for this dictionary entry. + */ + void insert(SkPDFName* key, SkPDFObject* value); + + /** Add the value to the stream dictionary with the given key. + * @param key The text of the key for this dictionary entry. + * @param value The value for this dictionary entry. + */ + void insert(const char key[], SkPDFObject* value); + +private: + SkString fContent; + SkRefPtr<SkPDFDevice> fDevice; + SkRefPtr<SkPDFStream> fStream; +}; + +#endif |