aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ports
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-03-05 22:12:11 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-03-05 22:12:11 +0000
commit5bfc8396228b7a9e5be679aeb10f30860adf938f (patch)
tree606192f0cba0680fdf78dd9d0633513ed605f23f /src/ports
parent90ee4488e9c6b8ec4cb1137250fed43b5919ce2c (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.cpp29
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 {