[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/5868049/ Review URL: https://codereview.appspot.com/5875049 git-svn-id: http://skia.googlecode.com/svn/trunk@3470 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
7c9594259b
commit
7d6c8f997f
20
gyp/pdf.gyp
20
gyp/pdf.gyp
@ -17,32 +17,32 @@
|
||||
'../src/utils', # needed to get SkBitSet.h
|
||||
],
|
||||
'sources': [
|
||||
'../include/pdf/SkPDFCatalog.h',
|
||||
'../include/pdf/SkPDFDevice.h',
|
||||
'../include/pdf/SkPDFDocument.h',
|
||||
'../include/pdf/SkPDFFont.h',
|
||||
'../include/pdf/SkPDFFormXObject.h',
|
||||
'../include/pdf/SkPDFGraphicState.h',
|
||||
'../include/pdf/SkPDFImage.h',
|
||||
'../include/pdf/SkPDFPage.h',
|
||||
'../include/pdf/SkPDFShader.h',
|
||||
'../include/pdf/SkPDFStream.h',
|
||||
'../include/pdf/SkPDFTypes.h',
|
||||
'../include/pdf/SkPDFUtils.h',
|
||||
|
||||
'../src/pdf/SkPDFCatalog.cpp',
|
||||
'../src/pdf/SkPDFCatalog.h',
|
||||
'../src/pdf/SkPDFDevice.cpp',
|
||||
'../src/pdf/SkPDFDocument.cpp',
|
||||
'../src/pdf/SkPDFFont.cpp',
|
||||
'../src/pdf/SkPDFFont.h',
|
||||
'../src/pdf/SkPDFFontImpl.h',
|
||||
'../src/pdf/SkPDFFormXObject.cpp',
|
||||
'../src/pdf/SkPDFFormXObject.h',
|
||||
'../src/pdf/SkPDFGraphicState.cpp',
|
||||
'../src/pdf/SkPDFGraphicState.h',
|
||||
'../src/pdf/SkPDFImage.cpp',
|
||||
'../src/pdf/SkPDFImage.h',
|
||||
'../src/pdf/SkPDFPage.cpp',
|
||||
'../src/pdf/SkPDFPage.h',
|
||||
'../src/pdf/SkPDFShader.cpp',
|
||||
'../src/pdf/SkPDFShader.h',
|
||||
'../src/pdf/SkPDFStream.cpp',
|
||||
'../src/pdf/SkPDFStream.h',
|
||||
'../src/pdf/SkPDFTypes.cpp',
|
||||
'../src/pdf/SkPDFTypes.h',
|
||||
'../src/pdf/SkPDFUtils.cpp',
|
||||
'../src/pdf/SkPDFUtils.h',
|
||||
],
|
||||
# This section makes all targets that depend on this target
|
||||
# #define SK_SUPPORT_PDF and have access to the pdf header files.
|
||||
|
@ -11,6 +11,7 @@
|
||||
'../src/core',
|
||||
'../src/effects',
|
||||
'../src/gpu',
|
||||
'../src/pdf',
|
||||
'../src/utils',
|
||||
],
|
||||
'sources': [
|
||||
|
@ -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 @@ public:
|
||||
*/
|
||||
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;
|
||||
|
@ -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.
|
||||
*/
|
@ -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 @@ bool SkPDFDocument::appendPage(SkPDFDevice* pdfDevice) {
|
||||
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) {
|
||||
|
@ -79,27 +79,27 @@ private:
|
||||
*/
|
||||
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 @@ public:
|
||||
* @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 @@ public:
|
||||
* @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 @@ public:
|
||||
* @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.
|
@ -82,7 +82,7 @@ public:
|
||||
|
||||
/** 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.
|
Loading…
Reference in New Issue
Block a user