diff options
author | 2013-03-05 22:12:11 +0000 | |
---|---|---|
committer | 2013-03-05 22:12:11 +0000 | |
commit | 5bfc8396228b7a9e5be679aeb10f30860adf938f (patch) | |
tree | 606192f0cba0680fdf78dd9d0633513ed605f23f /src/ports | |
parent | 90ee4488e9c6b8ec4cb1137250fed43b5919ce2c (diff) |
start to plumb ttcIndex into fonthost. For now just add to SkFontStream and its callers.
Review URL: https://codereview.chromium.org/12485002
git-svn-id: http://skia.googlecode.com/svn/trunk@7998 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/ports')
-rw-r--r-- | src/ports/SkFontHost_fontconfig.cpp | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/ports/SkFontHost_fontconfig.cpp b/src/ports/SkFontHost_fontconfig.cpp index fef1bab96c..7f6997a745 100644 --- a/src/ports/SkFontHost_fontconfig.cpp +++ b/src/ports/SkFontHost_fontconfig.cpp @@ -247,16 +247,21 @@ SkTypeface* SkFontHost::Deserialize(SkStream* stream) { /////////////////////////////////////////////////////////////////////////////// -static SkStream* open_stream(const FontConfigTypeface* face) { +static SkStream* open_stream(const FontConfigTypeface* face, int* ttcIndex) { SkStream* stream = face->getLocalStream(); + int index; if (stream) { stream->ref(); + // should have been provided by CreateFromStream() + *ttcIndex = 0; } else { SkAutoTUnref<SkFontConfigInterface> fci(RefFCI()); if (NULL == fci.get()) { return NULL; } stream = fci->openStream(face->getIdentity()); + // ttcIndex should be returned explicitly by openStream() + *ttcIndex = (int)face->getIdentity().fIntPtr; } return stream; } @@ -266,7 +271,10 @@ SkStream* SkFontHost::OpenStream(uint32_t id) { if (NULL == face) { return NULL; } - return open_stream(face); + + int ttcIndex; + // We should return ttcIndex from this call. + return open_stream(face, &ttcIndex); } size_t SkFontHost::GetFileName(SkFontID fontID, char path[], size_t length, @@ -292,16 +300,21 @@ size_t SkFontHost::GetFileName(SkFontID fontID, char path[], size_t length, /////////////////////////////////////////////////////////////////////////////// int FontConfigTypeface::onGetTableTags(SkFontTableTag tags[]) const { - SkAutoTUnref<SkStream> stream(open_stream(this)); - return stream.get() ? SkFontStream::GetTableTags(stream, tags) : 0; + int ttcIndex; + SkAutoTUnref<SkStream> stream(open_stream(this, &ttcIndex)); + return stream.get() + ? SkFontStream::GetTableTags(stream, ttcIndex, tags) + : 0; } size_t FontConfigTypeface::onGetTableData(SkFontTableTag tag, size_t offset, size_t length, void* data) const { - SkAutoTUnref<SkStream> stream(open_stream(this)); - return stream.get() ? - SkFontStream::GetTableData(stream, tag, offset, length, data) : - 0; + int ttcIndex; + SkAutoTUnref<SkStream> stream(open_stream(this, &ttcIndex)); + return stream.get() + ? SkFontStream::GetTableData(stream, ttcIndex, + tag, offset, length, data) + : 0; } void FontConfigTypeface::onGetFontDescriptor(SkFontDescriptor* desc) const { |