aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pdf/SkPDFTypes.cpp
diff options
context:
space:
mode:
authorGravatar vandebo@chromium.org <vandebo@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2010-10-12 23:08:13 +0000
committerGravatar vandebo@chromium.org <vandebo@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2010-10-12 23:08:13 +0000
commitd877fdbb6e64692285c3e6532d88b9458f65b3cd (patch)
treec346892a4d2d014c95acc6729174c779d0bfcd02 /src/pdf/SkPDFTypes.cpp
parentf66025d59ab4c8c4439fabf6ad89ddf35a19d1fd (diff)
High level pdf classes and pdf specific interface.
The guts of the implementation will be in SkPDFDevice and below. This is a first implementation of everything above that point. Review URL: http://codereview.appspot.com/2342043 git-svn-id: http://skia.googlecode.com/svn/trunk@602 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/pdf/SkPDFTypes.cpp')
-rw-r--r--src/pdf/SkPDFTypes.cpp26
1 files changed, 22 insertions, 4 deletions
diff --git a/src/pdf/SkPDFTypes.cpp b/src/pdf/SkPDFTypes.cpp
index f5f23ca709..a01fcbaf5d 100644
--- a/src/pdf/SkPDFTypes.cpp
+++ b/src/pdf/SkPDFTypes.cpp
@@ -211,11 +211,15 @@ void SkPDFArray::append(SkPDFObject* value) {
}
SkPDFDict::SkPDFDict() {}
+
+SkPDFDict::SkPDFDict(const char type[]) {
+ SkRefPtr<SkPDFName> typeName = new SkPDFName(type);
+ typeName->unref(); // SkRefPtr and new both took a reference.
+ insert("Type", typeName.get());
+}
+
SkPDFDict::~SkPDFDict() {
- for (int i = 0; i < fValue.count(); i++) {
- SkSafeUnref(fValue[i].key);
- SkSafeUnref(fValue[i].value);
- }
+ clear();
}
void SkPDFDict::emitObject(SkWStream* stream, SkPDFCatalog* catalog,
@@ -252,3 +256,17 @@ void SkPDFDict::insert(SkPDFName* key, SkPDFObject* value) {
newEntry->value = value;
SkSafeRef(newEntry->value);
}
+
+void SkPDFDict::insert(const char key[], SkPDFObject* value) {
+ SkRefPtr<SkPDFName> keyName = new SkPDFName(key);
+ keyName->unref(); // SkRefPtr and new both took a reference.
+ insert(keyName.get(), value);
+}
+
+void SkPDFDict::clear() {
+ for (int i = 0; i < fValue.count(); i++) {
+ fValue[i].key->safeUnref();
+ fValue[i].value->safeUnref();
+ }
+ fValue.reset();
+}