[go: nahoru, domu]

resubmit https://code.google.com/p/skia/source/detail?r=7883 (in the meantime we added capability to collect minidump and callstack if buildbot fails with heap coruption in windows. a few minor conflicts have been resolved)
Review URL: https://codereview.chromium.org/12840004

git-svn-id: http://skia.googlecode.com/svn/trunk/include@8233 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/pdf/SkPDFDevice.h b/pdf/SkPDFDevice.h
index 90379f9..f8261b5 100644
--- a/pdf/SkPDFDevice.h
+++ b/pdf/SkPDFDevice.h
@@ -30,6 +30,7 @@
 class SkPDFObject;
 class SkPDFShader;
 class SkPDFStream;
+template <typename T> class SK_API SkTSet;
 
 // Private classes.
 struct ContentEntry;
@@ -132,12 +133,19 @@
     SK_API SkPDFDict* getResourceDict();
 
     /** Get the list of resources (PDF objects) used on this page.
-     *  @param resourceList A list to append the resources to.
+     *  This method will add to newResourceObjects any objects that this method
+     *  depends on, but not already in knownResourceObjects. This might operate
+     *  recursively so if this object depends on another object and that object
+     *  depends on two more, all three objects will be added.
+     *
+     *  @param knownResourceObjects  The set of resources to be ignored.
+     *  @param newResourceObjects  The set to append dependant resources to.
      *  @param recursive    If recursive is true, get the resources of the
      *                      device's resources recursively. (Useful for adding
      *                      objects to the catalog.)
      */
-    SK_API void getResources(SkTDArray<SkPDFObject*>* resourceList,
+    SK_API void getResources(const SkTSet<SkPDFObject*>& knownResourceObjects,
+                             SkTSet<SkPDFObject*>* newResourceObjects,
                              bool recursive) const;
 
     /** Get the fonts used on this device.
diff --git a/pdf/SkPDFDocument.h b/pdf/SkPDFDocument.h
index cb786c7..8f4ee48 100644
--- a/pdf/SkPDFDocument.h
+++ b/pdf/SkPDFDocument.h
@@ -21,6 +21,7 @@
 class SkPDFPage;
 class SkPDFObject;
 class SkWStream;
+template <typename T> class SK_API SkTSet;
 
 /** \class SkPDFDocument
 
@@ -79,7 +80,8 @@
     SkTDArray<SkPDFPage*> fPages;
     SkTDArray<SkPDFDict*> fPageTree;
     SkPDFDict* fDocCatalog;
-    SkTDArray<SkPDFObject*> fPageResources;
+    SkTSet<SkPDFObject*>* fFirstPageResources;
+    SkTSet<SkPDFObject*>* fOtherPageResources;
     SkTDArray<SkPDFObject*> fSubstitutes;
     int fSecondPageFirstResourceIndex;