[PDF] Move most of the headers to be private.

Compute font stats in SkPDFDocument in order to make more of the headers private.

Previous review: https://codereview.appspot.com/5865048/

Review URL: https://codereview.appspot.com/5868049

git-svn-id: http://skia.googlecode.com/svn/trunk@3457 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gyp/tests.gyp b/gyp/tests.gyp
index 2492274..52f44bb 100644
--- a/gyp/tests.gyp
+++ b/gyp/tests.gyp
@@ -11,6 +11,7 @@
         '../src/core',
         '../src/effects',
         '../src/gpu',
+        '../src/pdf',
       ],
       'sources': [
         '../tests/AAClipTest.cpp',
diff --git a/include/pdf/SkPDFDocument.h b/include/pdf/SkPDFDocument.h
index c1c6fb4..1a4a51f 100644
--- a/include/pdf/SkPDFDocument.h
+++ b/include/pdf/SkPDFDocument.h
@@ -10,15 +10,17 @@
 #ifndef SkPDFDocument_DEFINED
 #define SkPDFDocument_DEFINED
 
-#include "SkPDFTypes.h"
+#include "SkAdvancedTypefaceMetrics.h"
 #include "SkRefCnt.h"
 #include "SkTDArray.h"
 #include "SkTScopedPtr.h"
 
 class SkPDFCatalog;
 class SkPDFDevice;
+class SkPDFDict;
 class SkPDFPage;
-class SkWSteam;
+class SkPDFObject;
+class SkWStream;
 
 /** \class SkPDFDocument
 
@@ -62,9 +64,10 @@
      */
     SK_API bool appendPage(SkPDFDevice* pdfDevice);
 
-    /** Get the list of pages in this document.
+    /** Get the count of unique font types used in the document.
      */
-    SK_API const SkTDArray<SkPDFPage*>& getPages();
+    SK_API void getCountOfFontTypes(
+        int counts[SkAdvancedTypefaceMetrics::kNotEmbeddable_Font + 1]) const;
 
 private:
     SkTScopedPtr<SkPDFCatalog> fCatalog;
diff --git a/include/pdf/SkBitSet.h b/src/pdf/SkBitSet.h
similarity index 100%
rename from include/pdf/SkBitSet.h
rename to src/pdf/SkBitSet.h
diff --git a/include/pdf/SkPDFCatalog.h b/src/pdf/SkPDFCatalog.h
similarity index 98%
rename from include/pdf/SkPDFCatalog.h
rename to src/pdf/SkPDFCatalog.h
index 68a244f..44005c6 100644
--- a/include/pdf/SkPDFCatalog.h
+++ b/src/pdf/SkPDFCatalog.h
@@ -22,7 +22,7 @@
     The PDF catalog manages object numbers and file offsets.  It is used
     to create the PDF cross reference table.
 */
-class SK_API SkPDFCatalog {
+class SkPDFCatalog {
 public:
     /** Create a PDF catalog.
      */
diff --git a/src/pdf/SkPDFDocument.cpp b/src/pdf/SkPDFDocument.cpp
index cb87d8f..3ec4877 100644
--- a/src/pdf/SkPDFDocument.cpp
+++ b/src/pdf/SkPDFDocument.cpp
@@ -10,8 +10,9 @@
 #include "SkPDFCatalog.h"
 #include "SkPDFDevice.h"
 #include "SkPDFDocument.h"
-#include "SkPDFPage.h"
 #include "SkPDFFont.h"
+#include "SkPDFPage.h"
+#include "SkPDFTypes.h"
 #include "SkStream.h"
 
 // Add the resources, starting at firstIndex to the catalog, removing any dupes.
@@ -222,8 +223,23 @@
     return true;
 }
 
-const SkTDArray<SkPDFPage*>& SkPDFDocument::getPages() {
-    return fPages;
+void SkPDFDocument::getCountOfFontTypes(
+        int counts[SkAdvancedTypefaceMetrics::kNotEmbeddable_Font + 1]) const {
+    memset(counts, 0,
+           sizeof(int)* SkAdvancedTypefaceMetrics::kNotEmbeddable_Font + 1);
+    SkTDArray<SkFontID> seenFonts;
+
+    for (int pageNumber = 0; pageNumber < fPages.count(); pageNumber++) {
+        const SkTDArray<SkPDFFont*>& fontResources =
+                fPages[pageNumber]->getFontResources();
+        for (int font = 0; font < fontResources.count(); font++) {
+            SkFontID fontID = fontResources[font]->typeface()->uniqueID();
+            if (seenFonts.find(fontID) == -1) {
+                counts[fontResources[font]->getType()]++;
+                seenFonts.push(fontID);
+            }
+        }
+    }
 }
 
 void SkPDFDocument::emitHeader(SkWStream* stream) {
diff --git a/include/pdf/SkPDFFont.h b/src/pdf/SkPDFFont.h
similarity index 91%
rename from include/pdf/SkPDFFont.h
rename to src/pdf/SkPDFFont.h
index 2ebdec7..f463ed7 100644
--- a/include/pdf/SkPDFFont.h
+++ b/src/pdf/SkPDFFont.h
@@ -79,27 +79,27 @@
 */
 class SkPDFFont : public SkPDFDict {
 public:
-    SK_API virtual ~SkPDFFont();
+    virtual ~SkPDFFont();
 
-    SK_API virtual void getResources(SkTDArray<SkPDFObject*>* resourceList);
+    virtual void getResources(SkTDArray<SkPDFObject*>* resourceList);
 
     /** Returns the typeface represented by this class. Returns NULL for the
      *  default typeface.
      */
-    SK_API SkTypeface* typeface();
+    SkTypeface* typeface();
 
     /** Returns the font type represented in this font.  For Type0 fonts,
      *  returns the type of the decendant font.
      */
-    SK_API virtual SkAdvancedTypefaceMetrics::FontType getType();
+    virtual SkAdvancedTypefaceMetrics::FontType getType();
 
     /** Returns true if this font encoding supports glyph IDs above 255.
      */
-    SK_API virtual bool multiByteGlyphs() const = 0;
+    virtual bool multiByteGlyphs() const = 0;
 
     /** Return true if this font has an encoding for the passed glyph id.
      */
-    SK_API bool hasGlyph(uint16_t glyphID);
+    bool hasGlyph(uint16_t glyphID);
 
     /** Convert (in place) the input glyph IDs into the font encoding.  If the
      *  font has more glyphs than can be encoded (like a type 1 font with more
@@ -109,7 +109,7 @@
      *  @param numGlyphs      The number of input glyphs.
      *  @return               Returns the number of glyphs consumed.
      */
-    SK_API size_t glyphsToPDFFontEncoding(uint16_t* glyphIDs, size_t numGlyphs);
+    size_t glyphsToPDFFontEncoding(uint16_t* glyphIDs, size_t numGlyphs);
 
     /** Get the font resource for the passed typeface and glyphID. The
      *  reference count of the object is incremented and it is the caller's
@@ -119,7 +119,7 @@
      *  @param typeface  The typeface to find.
      *  @param glyphID   Specify which section of a large font is of interest.
      */
-    SK_API static SkPDFFont* GetFontResource(SkTypeface* typeface,
+    static SkPDFFont* GetFontResource(SkTypeface* typeface,
                                              uint16_t glyphID);
 
     /** Subset the font based on usage set. Returns a SkPDFFont instance with
@@ -128,7 +128,7 @@
      *  @return       NULL if font does not support subsetting, a new instance
      *                of SkPDFFont otherwise.
      */
-    SK_API virtual SkPDFFont* getFontSubset(const SkPDFGlyphSet* usage);
+    virtual SkPDFFont* getFontSubset(const SkPDFGlyphSet* usage);
 
 protected:
     // Common constructor to handle common members.
diff --git a/include/pdf/SkPDFFormXObject.h b/src/pdf/SkPDFFormXObject.h
similarity index 100%
rename from include/pdf/SkPDFFormXObject.h
rename to src/pdf/SkPDFFormXObject.h
diff --git a/include/pdf/SkPDFGraphicState.h b/src/pdf/SkPDFGraphicState.h
similarity index 100%
rename from include/pdf/SkPDFGraphicState.h
rename to src/pdf/SkPDFGraphicState.h
diff --git a/include/pdf/SkPDFImage.h b/src/pdf/SkPDFImage.h
similarity index 100%
rename from include/pdf/SkPDFImage.h
rename to src/pdf/SkPDFImage.h
diff --git a/include/pdf/SkPDFPage.h b/src/pdf/SkPDFPage.h
similarity index 97%
rename from include/pdf/SkPDFPage.h
rename to src/pdf/SkPDFPage.h
index e726638..8ef909e 100644
--- a/include/pdf/SkPDFPage.h
+++ b/src/pdf/SkPDFPage.h
@@ -82,7 +82,7 @@
 
     /** Get the fonts used on this page.
      */
-    SK_API const SkTDArray<SkPDFFont*>& getFontResources() const;
+    const SkTDArray<SkPDFFont*>& getFontResources() const;
 
     /** Returns a SkPDFGlyphSetMap which represents glyph usage of every font
      *  that shows on this page.
diff --git a/include/pdf/SkPDFShader.h b/src/pdf/SkPDFShader.h
similarity index 100%
rename from include/pdf/SkPDFShader.h
rename to src/pdf/SkPDFShader.h
diff --git a/include/pdf/SkPDFStream.h b/src/pdf/SkPDFStream.h
similarity index 100%
rename from include/pdf/SkPDFStream.h
rename to src/pdf/SkPDFStream.h
diff --git a/include/pdf/SkPDFTypes.h b/src/pdf/SkPDFTypes.h
similarity index 100%
rename from include/pdf/SkPDFTypes.h
rename to src/pdf/SkPDFTypes.h
diff --git a/include/pdf/SkPDFUtils.h b/src/pdf/SkPDFUtils.h
similarity index 100%
rename from include/pdf/SkPDFUtils.h
rename to src/pdf/SkPDFUtils.h