aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/pdf/SkPDFTypes.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/pdf/SkPDFTypes.h')
-rw-r--r--include/pdf/SkPDFTypes.h403
1 files changed, 0 insertions, 403 deletions
diff --git a/include/pdf/SkPDFTypes.h b/include/pdf/SkPDFTypes.h
deleted file mode 100644
index 6334938d77..0000000000
--- a/include/pdf/SkPDFTypes.h
+++ /dev/null
@@ -1,403 +0,0 @@
-
-/*
- * Copyright 2010 The Android Open Source Project
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-
-#ifndef SkPDFTypes_DEFINED
-#define SkPDFTypes_DEFINED
-
-#include "SkRefCnt.h"
-#include "SkScalar.h"
-#include "SkString.h"
-#include "SkTDArray.h"
-#include "SkTypes.h"
-
-class SkPDFCatalog;
-class SkWStream;
-
-/** \class SkPDFObject
-
- A PDF Object is the base class for primitive elements in a PDF file. A
- common subtype is used to ease the use of indirect object references,
- which are common in the PDF format.
-*/
-class SkPDFObject : public SkRefCnt {
-public:
- /** Create a PDF object.
- */
- SkPDFObject();
- virtual ~SkPDFObject();
-
- /** Return the size (number of bytes) of this object in the final output
- * file. Compound objects or objects that are computationally intensive
- * to output should override this method.
- * @param catalog The object catalog to use.
- * @param indirect If true, output an object identifier with the object.
- */
- virtual size_t getOutputSize(SkPDFCatalog* catalog, bool indirect);
-
- /** For non-primitive objects (i.e. objects defined outside this file),
- * this method will add to resourceList any objects that this method
- * depends on. This operates recursively so if this object depends on
- * another object and that object depends on two more, all three objects
- * will be added.
- * @param resourceList The list to append dependant resources to.
- */
- virtual void getResources(SkTDArray<SkPDFObject*>* resourceList);
-
- /** Emit this object unless the catalog has a substitute object, in which
- * case emit that.
- * @see emitObject
- */
- void emit(SkWStream* stream, SkPDFCatalog* catalog, bool indirect);
-
- /** Helper function to output an indirect object.
- * @param catalog The object catalog to use.
- * @param stream The writable output stream to send the output to.
- */
- void emitIndirectObject(SkWStream* stream, SkPDFCatalog* catalog);
-
- /** Helper function to find the size of an indirect object.
- * @param catalog The object catalog to use.
- */
- size_t getIndirectOutputSize(SkPDFCatalog* catalog);
-
- /** Static helper function to add a resource to a list. The list takes
- * a reference.
- * @param resource The resource to add.
- * @param list The list to add the resource to.
- */
- static void AddResourceHelper(SkPDFObject* resource,
- SkTDArray<SkPDFObject*>* list);
-
- /** Static helper function to copy and reference the resources (and all
- * their subresources) into a new list.
- * @param resources The resource list.
- * @param result The list to add to.
- */
- static void GetResourcesHelper(SkTDArray<SkPDFObject*>* resources,
- SkTDArray<SkPDFObject*>* result);
-
-protected:
- /** Subclasses must implement this method to print the object to the
- * PDF file.
- * @param catalog The object catalog to use.
- * @param indirect If true, output an object identifier with the object.
- * @param stream The writable output stream to send the output to.
- */
- virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog,
- bool indirect) = 0;
-};
-
-/** \class SkPDFObjRef
-
- An indirect reference to a PDF object.
-*/
-class SkPDFObjRef : public SkPDFObject {
-public:
- /** Create a reference to an existing SkPDFObject.
- * @param obj The object to reference.
- */
- explicit SkPDFObjRef(SkPDFObject* obj);
- virtual ~SkPDFObjRef();
-
- // The SkPDFObject interface.
- virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog,
- bool indirect);
- virtual size_t getOutputSize(SkPDFCatalog* catalog, bool indirect);
-
-private:
- SkRefPtr<SkPDFObject> fObj;
-};
-
-/** \class SkPDFInt
-
- An integer object in a PDF.
-*/
-class SkPDFInt : public SkPDFObject {
-public:
- /** Create a PDF integer (usually for indirect reference purposes).
- * @param value An integer value between 2^31 - 1 and -2^31.
- */
- explicit SkPDFInt(int32_t value);
- virtual ~SkPDFInt();
-
- // The SkPDFObject interface.
- virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog,
- bool indirect);
-
-private:
- int32_t fValue;
-};
-
-/** \class SkPDFBool
-
- An boolean value in a PDF.
-*/
-class SkPDFBool : public SkPDFObject {
-public:
- /** Create a PDF boolean.
- * @param value true or false.
- */
- explicit SkPDFBool(bool value);
- virtual ~SkPDFBool();
-
- // The SkPDFObject interface.
- virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog,
- bool indirect);
- virtual size_t getOutputSize(SkPDFCatalog* catalog, bool indirect);
-
-private:
- bool fValue;
-};
-
-/** \class SkPDFScalar
-
- A real number object in a PDF.
-*/
-class SkPDFScalar : public SkPDFObject {
-public:
- /** Create a PDF real number.
- * @param value A real value.
- */
- explicit SkPDFScalar(SkScalar value);
- virtual ~SkPDFScalar();
-
- static void Append(SkScalar value, SkWStream* stream);
-
- // The SkPDFObject interface.
- virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog,
- bool indirect);
-
-private:
- SkScalar fValue;
-};
-
-/** \class SkPDFString
-
- A string object in a PDF.
-*/
-class SkPDFString : public SkPDFObject {
-public:
- /** Create a PDF string. Maximum length (in bytes) is 65,535.
- * @param value A string value.
- */
- explicit SkPDFString(const char value[]);
- explicit SkPDFString(const SkString& value);
-
- /** Create a PDF string. Maximum length (in bytes) is 65,535.
- * @param value A string value.
- * @param len The length of value.
- * @param wideChars Indicates if the top byte in value is significant and
- * should be encoded (true) or not (false).
- */
- SkPDFString(const uint16_t* value, size_t len, bool wideChars);
- virtual ~SkPDFString();
-
- // The SkPDFObject interface.
- virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog,
- bool indirect);
- virtual size_t getOutputSize(SkPDFCatalog* catalog, bool indirect);
-
- static SkString FormatString(const char* input, size_t len);
- static SkString FormatString(const uint16_t* input, size_t len,
- bool wideChars);
-private:
- static const size_t kMaxLen = 65535;
-
- const SkString fValue;
-
- static SkString DoFormatString(const void* input, size_t len,
- bool wideInput, bool wideOutput);
-};
-
-/** \class SkPDFName
-
- A name object in a PDF.
-*/
-class SkPDFName : public SkPDFObject {
-public:
- /** Create a PDF name object. Maximum length is 127 bytes.
- * @param value The name.
- */
- explicit SkPDFName(const char name[]);
- explicit SkPDFName(const SkString& name);
- virtual ~SkPDFName();
-
- bool operator==(const SkPDFName& b) const;
-
- // The SkPDFObject interface.
- virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog,
- bool indirect);
- virtual size_t getOutputSize(SkPDFCatalog* catalog, bool indirect);
-
-private:
- static const size_t kMaxLen = 127;
-
- const SkString fValue;
-
- static SkString FormatName(const SkString& input);
-};
-
-/** \class SkPDFArray
-
- An array object in a PDF.
-*/
-class SkPDFArray : public SkPDFObject {
-public:
- /** Create a PDF array. Maximum length is 8191.
- */
- SkPDFArray();
- virtual ~SkPDFArray();
-
- // The SkPDFObject interface.
- virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog,
- bool indirect);
- virtual size_t getOutputSize(SkPDFCatalog* catalog, bool indirect);
-
- /** The size of the array.
- */
- int size() { return fValue.count(); }
-
- /** Preallocate space for the given number of entries.
- * @param length The number of array slots to preallocate.
- */
- void reserve(int length);
-
- /** Returns the object at the given offset in the array.
- * @param index The index into the array to retrieve.
- */
- SkPDFObject* getAt(int index) { return fValue[index]; }
-
- /** Set the object at the given offset in the array. Ref's value.
- * @param index The index into the array to set.
- * @param value The value to add to the array.
- * @return The value argument is returned.
- */
- SkPDFObject* setAt(int index, SkPDFObject* value);
-
- /** Append the object to the end of the array and increments its ref count.
- * @param value The value to add to the array.
- * @return The value argument is returned.
- */
- SkPDFObject* append(SkPDFObject* value);
-
- /** Creates a SkPDFInt object and appends it to the array.
- * @param value The value to add to the array.
- */
- void appendInt(int32_t value);
-
- /** Creates a SkPDFScalar object and appends it to the array.
- * @param value The value to add to the array.
- */
- void appendScalar(SkScalar value);
-
- /** Creates a SkPDFName object and appends it to the array.
- * @param value The value to add to the array.
- */
- void appendName(const char name[]);
-
-private:
- static const int kMaxLen = 8191;
- SkTDArray<SkPDFObject*> fValue;
-};
-
-/** \class SkPDFDict
-
- A dictionary object in a PDF.
-*/
-class SkPDFDict : public SkPDFObject {
-public:
- /** Create a PDF dictionary. Maximum number of entries is 4095.
- */
- SkPDFDict();
-
- /** Create a PDF dictionary with a Type entry.
- * @param type The value of the Type entry.
- */
- explicit SkPDFDict(const char type[]);
-
- virtual ~SkPDFDict();
-
- // The SkPDFObject interface.
- virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog,
- bool indirect);
- virtual size_t getOutputSize(SkPDFCatalog* catalog, bool indirect);
-
- /** The size of the dictionary.
- */
- int size() { return fValue.count(); }
-
- /** Add the value to the dictionary with the given key. Refs value.
- * @param key The key for this dictionary entry.
- * @param value The value for this dictionary entry.
- * @return The value argument is returned.
- */
- SkPDFObject* insert(SkPDFName* key, SkPDFObject* value);
-
- /** Add the value to the dictionary with the given key. Refs value. The
- * method will create the SkPDFName object.
- * @param key The text of the key for this dictionary entry.
- * @param value The value for this dictionary entry.
- * @return The value argument is returned.
- */
- SkPDFObject* insert(const char key[], SkPDFObject* value);
-
- /** Add the int to the dictionary with the given key.
- * @param key The text of the key for this dictionary entry.
- * @param value The int value for this dictionary entry.
- */
- void insertInt(const char key[], int32_t value);
-
- /** Add the scalar to the dictionary with the given key.
- * @param key The text of the key for this dictionary entry.
- * @param value The scalar value for this dictionary entry.
- */
- void insertScalar(const char key[], SkScalar value);
-
- /** Add the name to the dictionary with the given key.
- * @param key The text of the key for this dictionary entry.
- * @param name The name for this dictionary entry.
- */
- void insertName(const char key[], const char name[]);
-
- /** Add the name to the dictionary with the given key.
- * @param key The text of the key for this dictionary entry.
- * @param name The name for this dictionary entry.
- */
- void insertName(const char key[], const SkString& name) {
- this->insertName(key, name.c_str());
- }
-
- /** Remove all entries from the dictionary.
- */
- void clear();
-
-private:
- struct Rec {
- SkPDFName* key;
- SkPDFObject* value;
- };
-
-public:
- class Iter {
- public:
- explicit Iter(const SkPDFDict& dict);
- SkPDFName* next(SkPDFObject** value);
-
- private:
- Rec* fIter;
- Rec* fStop;
- };
-
-private:
- static const int kMaxLen = 4095;
-
- SkTDArray<struct Rec> fValue;
-};
-
-#endif