Make SkFontMgr interface const.
COLLABORATOR=mtklein@chromium.org BUG=skia: R=reed@google.com, bungeman@google.com, mtklein@chromium.org Author: mtklein@google.com Review URL: https://codereview.chromium.org/134643028 git-svn-id: http://skia.googlecode.com/svn/trunk@13314 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
0807ede86d
commit
967dee32ef
@ -37,15 +37,15 @@ class SK_API SkFontMgr : public SkRefCnt {
|
||||
public:
|
||||
SK_DECLARE_INST_COUNT(SkFontMgr)
|
||||
|
||||
int countFamilies();
|
||||
void getFamilyName(int index, SkString* familyName);
|
||||
SkFontStyleSet* createStyleSet(int index);
|
||||
int countFamilies() const;
|
||||
void getFamilyName(int index, SkString* familyName) const;
|
||||
SkFontStyleSet* createStyleSet(int index) const;
|
||||
|
||||
/**
|
||||
* The caller must call unref() on the returned object.
|
||||
* Never returns NULL; will return an empty set if the name is not found.
|
||||
*/
|
||||
SkFontStyleSet* matchFamily(const char familyName[]);
|
||||
SkFontStyleSet* matchFamily(const char familyName[]) const;
|
||||
|
||||
/**
|
||||
* Find the closest matching typeface to the specified familyName and style
|
||||
@ -53,23 +53,23 @@ public:
|
||||
* object. Will never return NULL, as it will return the default font if
|
||||
* no matching font is found.
|
||||
*/
|
||||
SkTypeface* matchFamilyStyle(const char familyName[], const SkFontStyle&);
|
||||
SkTypeface* matchFamilyStyle(const char familyName[], const SkFontStyle&) const;
|
||||
|
||||
SkTypeface* matchFaceStyle(const SkTypeface*, const SkFontStyle&);
|
||||
SkTypeface* matchFaceStyle(const SkTypeface*, const SkFontStyle&) const;
|
||||
|
||||
/**
|
||||
* Create a typeface for the specified data and TTC index (pass 0 for none)
|
||||
* or NULL if the data is not recognized. The caller must call unref() on
|
||||
* the returned object if it is not null.
|
||||
*/
|
||||
SkTypeface* createFromData(SkData*, int ttcIndex = 0);
|
||||
SkTypeface* createFromData(SkData*, int ttcIndex = 0) const;
|
||||
|
||||
/**
|
||||
* Create a typeface for the specified stream and TTC index
|
||||
* (pass 0 for none) or NULL if the stream is not recognized. The caller
|
||||
* must call unref() on the returned object if it is not null.
|
||||
*/
|
||||
SkTypeface* createFromStream(SkStream*, int ttcIndex = 0);
|
||||
SkTypeface* createFromStream(SkStream*, int ttcIndex = 0) const;
|
||||
|
||||
/**
|
||||
* Create a typeface for the specified fileName and TTC index
|
||||
@ -77,10 +77,10 @@ public:
|
||||
* not recognized. The caller must call unref() on the returned object
|
||||
* if it is not null.
|
||||
*/
|
||||
SkTypeface* createFromFile(const char path[], int ttcIndex = 0);
|
||||
SkTypeface* createFromFile(const char path[], int ttcIndex = 0) const;
|
||||
|
||||
SkTypeface* legacyCreateTypeface(const char familyName[],
|
||||
unsigned typefaceStyleBits);
|
||||
unsigned typefaceStyleBits) const;
|
||||
|
||||
/**
|
||||
* Return a ref to the default fontmgr. The caller must call unref() on
|
||||
@ -89,24 +89,24 @@ public:
|
||||
static SkFontMgr* RefDefault();
|
||||
|
||||
protected:
|
||||
virtual int onCountFamilies() = 0;
|
||||
virtual void onGetFamilyName(int index, SkString* familyName) = 0;
|
||||
virtual SkFontStyleSet* onCreateStyleSet(int index) = 0;
|
||||
virtual int onCountFamilies() const = 0;
|
||||
virtual void onGetFamilyName(int index, SkString* familyName) const = 0;
|
||||
virtual SkFontStyleSet* onCreateStyleSet(int index)const = 0;
|
||||
|
||||
/** May return NULL if the name is not found. */
|
||||
virtual SkFontStyleSet* onMatchFamily(const char familyName[]) = 0;
|
||||
virtual SkFontStyleSet* onMatchFamily(const char familyName[]) const = 0;
|
||||
|
||||
virtual SkTypeface* onMatchFamilyStyle(const char familyName[],
|
||||
const SkFontStyle&) = 0;
|
||||
const SkFontStyle&) const = 0;
|
||||
virtual SkTypeface* onMatchFaceStyle(const SkTypeface*,
|
||||
const SkFontStyle&) = 0;
|
||||
const SkFontStyle&) const = 0;
|
||||
|
||||
virtual SkTypeface* onCreateFromData(SkData*, int ttcIndex) = 0;
|
||||
virtual SkTypeface* onCreateFromStream(SkStream*, int ttcIndex) = 0;
|
||||
virtual SkTypeface* onCreateFromFile(const char path[], int ttcIndex) = 0;
|
||||
virtual SkTypeface* onCreateFromData(SkData*, int ttcIndex) const = 0;
|
||||
virtual SkTypeface* onCreateFromStream(SkStream*, int ttcIndex) const = 0;
|
||||
virtual SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const = 0;
|
||||
|
||||
virtual SkTypeface* onLegacyCreateTypeface(const char familyName[],
|
||||
unsigned styleBits) = 0;
|
||||
unsigned styleBits) const = 0;
|
||||
private:
|
||||
static SkFontMgr* Factory(); // implemented by porting layer
|
||||
friend void set_up_default(SkFontMgr** singleton);
|
||||
|
@ -92,38 +92,38 @@ SkFontStyleSet* SkFontStyleSet::CreateEmpty() {
|
||||
|
||||
class SkEmptyFontMgr : public SkFontMgr {
|
||||
protected:
|
||||
virtual int onCountFamilies() SK_OVERRIDE {
|
||||
virtual int onCountFamilies() const SK_OVERRIDE {
|
||||
return 0;
|
||||
}
|
||||
virtual void onGetFamilyName(int index, SkString* familyName) SK_OVERRIDE {
|
||||
virtual void onGetFamilyName(int index, SkString* familyName) const SK_OVERRIDE {
|
||||
SkDEBUGFAIL("onGetFamilyName called with bad index");
|
||||
}
|
||||
virtual SkFontStyleSet* onCreateStyleSet(int index) SK_OVERRIDE {
|
||||
virtual SkFontStyleSet* onCreateStyleSet(int index) const SK_OVERRIDE {
|
||||
SkDEBUGFAIL("onCreateStyleSet called with bad index");
|
||||
return NULL;
|
||||
}
|
||||
virtual SkFontStyleSet* onMatchFamily(const char[]) SK_OVERRIDE {
|
||||
virtual SkFontStyleSet* onMatchFamily(const char[]) const SK_OVERRIDE {
|
||||
return SkFontStyleSet::CreateEmpty();
|
||||
}
|
||||
|
||||
virtual SkTypeface* onMatchFamilyStyle(const char[],
|
||||
const SkFontStyle&) SK_OVERRIDE {
|
||||
const SkFontStyle&) const SK_OVERRIDE {
|
||||
return NULL;
|
||||
}
|
||||
virtual SkTypeface* onMatchFaceStyle(const SkTypeface*,
|
||||
const SkFontStyle&) SK_OVERRIDE {
|
||||
const SkFontStyle&) const SK_OVERRIDE {
|
||||
return NULL;
|
||||
}
|
||||
virtual SkTypeface* onCreateFromData(SkData*, int) SK_OVERRIDE {
|
||||
virtual SkTypeface* onCreateFromData(SkData*, int) const SK_OVERRIDE {
|
||||
return NULL;
|
||||
}
|
||||
virtual SkTypeface* onCreateFromStream(SkStream*, int) SK_OVERRIDE {
|
||||
virtual SkTypeface* onCreateFromStream(SkStream*, int) const SK_OVERRIDE {
|
||||
return NULL;
|
||||
}
|
||||
virtual SkTypeface* onCreateFromFile(const char[], int) SK_OVERRIDE {
|
||||
virtual SkTypeface* onCreateFromFile(const char[], int) const SK_OVERRIDE {
|
||||
return NULL;
|
||||
}
|
||||
virtual SkTypeface* onLegacyCreateTypeface(const char [], unsigned) SK_OVERRIDE {
|
||||
virtual SkTypeface* onLegacyCreateTypeface(const char [], unsigned) const SK_OVERRIDE {
|
||||
return NULL;
|
||||
}
|
||||
};
|
||||
@ -135,47 +135,47 @@ static SkFontStyleSet* emptyOnNull(SkFontStyleSet* fsset) {
|
||||
return fsset;
|
||||
}
|
||||
|
||||
int SkFontMgr::countFamilies() {
|
||||
int SkFontMgr::countFamilies() const {
|
||||
return this->onCountFamilies();
|
||||
}
|
||||
|
||||
void SkFontMgr::getFamilyName(int index, SkString* familyName) {
|
||||
void SkFontMgr::getFamilyName(int index, SkString* familyName) const {
|
||||
this->onGetFamilyName(index, familyName);
|
||||
}
|
||||
|
||||
SkFontStyleSet* SkFontMgr::createStyleSet(int index) {
|
||||
SkFontStyleSet* SkFontMgr::createStyleSet(int index) const {
|
||||
return emptyOnNull(this->onCreateStyleSet(index));
|
||||
}
|
||||
|
||||
SkFontStyleSet* SkFontMgr::matchFamily(const char familyName[]) {
|
||||
SkFontStyleSet* SkFontMgr::matchFamily(const char familyName[]) const {
|
||||
return emptyOnNull(this->onMatchFamily(familyName));
|
||||
}
|
||||
|
||||
SkTypeface* SkFontMgr::matchFamilyStyle(const char familyName[],
|
||||
const SkFontStyle& fs) {
|
||||
const SkFontStyle& fs) const {
|
||||
return this->onMatchFamilyStyle(familyName, fs);
|
||||
}
|
||||
|
||||
SkTypeface* SkFontMgr::matchFaceStyle(const SkTypeface* face,
|
||||
const SkFontStyle& fs) {
|
||||
const SkFontStyle& fs) const {
|
||||
return this->onMatchFaceStyle(face, fs);
|
||||
}
|
||||
|
||||
SkTypeface* SkFontMgr::createFromData(SkData* data, int ttcIndex) {
|
||||
SkTypeface* SkFontMgr::createFromData(SkData* data, int ttcIndex) const {
|
||||
if (NULL == data) {
|
||||
return NULL;
|
||||
}
|
||||
return this->onCreateFromData(data, ttcIndex);
|
||||
}
|
||||
|
||||
SkTypeface* SkFontMgr::createFromStream(SkStream* stream, int ttcIndex) {
|
||||
SkTypeface* SkFontMgr::createFromStream(SkStream* stream, int ttcIndex) const {
|
||||
if (NULL == stream) {
|
||||
return NULL;
|
||||
}
|
||||
return this->onCreateFromStream(stream, ttcIndex);
|
||||
}
|
||||
|
||||
SkTypeface* SkFontMgr::createFromFile(const char path[], int ttcIndex) {
|
||||
SkTypeface* SkFontMgr::createFromFile(const char path[], int ttcIndex) const {
|
||||
if (NULL == path) {
|
||||
return NULL;
|
||||
}
|
||||
@ -183,7 +183,7 @@ SkTypeface* SkFontMgr::createFromFile(const char path[], int ttcIndex) {
|
||||
}
|
||||
|
||||
SkTypeface* SkFontMgr::legacyCreateTypeface(const char familyName[],
|
||||
unsigned styleBits) {
|
||||
unsigned styleBits) const {
|
||||
return this->onLegacyCreateTypeface(familyName, styleBits);
|
||||
}
|
||||
|
||||
|
@ -184,40 +184,30 @@ class SkFontMgr_fontconfig : public SkFontMgr {
|
||||
SkAutoTUnref<SkFontConfigInterface> fFCI;
|
||||
SkDataTable* fFamilyNames;
|
||||
|
||||
void init() {
|
||||
if (!fFamilyNames) {
|
||||
fFamilyNames = fFCI->getFamilyNames();
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
SkFontMgr_fontconfig(SkFontConfigInterface* fci)
|
||||
: fFCI(fci)
|
||||
, fFamilyNames(NULL) {}
|
||||
, fFamilyNames(fFCI->getFamilyNames()) {}
|
||||
|
||||
virtual ~SkFontMgr_fontconfig() {
|
||||
SkSafeUnref(fFamilyNames);
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual int onCountFamilies() {
|
||||
this->init();
|
||||
virtual int onCountFamilies() const SK_OVERRIDE {
|
||||
return fFamilyNames->count();
|
||||
}
|
||||
|
||||
virtual void onGetFamilyName(int index, SkString* familyName) {
|
||||
this->init();
|
||||
virtual void onGetFamilyName(int index, SkString* familyName) const SK_OVERRIDE {
|
||||
familyName->set(fFamilyNames->atStr(index));
|
||||
}
|
||||
|
||||
virtual SkFontStyleSet* onCreateStyleSet(int index) {
|
||||
this->init();
|
||||
virtual SkFontStyleSet* onCreateStyleSet(int index) const SK_OVERRIDE {
|
||||
return this->onMatchFamily(fFamilyNames->atStr(index));
|
||||
}
|
||||
|
||||
virtual SkFontStyleSet* onMatchFamily(const char familyName[]) {
|
||||
this->init();
|
||||
|
||||
virtual SkFontStyleSet* onMatchFamily(const char familyName[]) const SK_OVERRIDE {
|
||||
FcPattern* pattern = FcPatternCreate();
|
||||
|
||||
FcPatternAddString(pattern, FC_FAMILY, (FcChar8*)familyName);
|
||||
@ -261,13 +251,13 @@ protected:
|
||||
}
|
||||
|
||||
virtual SkTypeface* onMatchFamilyStyle(const char familyName[],
|
||||
const SkFontStyle&) { return NULL; }
|
||||
const SkFontStyle&) const SK_OVERRIDE { return NULL; }
|
||||
virtual SkTypeface* onMatchFaceStyle(const SkTypeface*,
|
||||
const SkFontStyle&) { return NULL; }
|
||||
const SkFontStyle&) const SK_OVERRIDE { return NULL; }
|
||||
|
||||
virtual SkTypeface* onCreateFromData(SkData*, int ttcIndex) { return NULL; }
|
||||
virtual SkTypeface* onCreateFromData(SkData*, int ttcIndex) const SK_OVERRIDE { return NULL; }
|
||||
|
||||
virtual SkTypeface* onCreateFromStream(SkStream* stream, int ttcIndex) {
|
||||
virtual SkTypeface* onCreateFromStream(SkStream* stream, int ttcIndex) const SK_OVERRIDE {
|
||||
const size_t length = stream->getLength();
|
||||
if (!length) {
|
||||
return NULL;
|
||||
@ -287,13 +277,13 @@ protected:
|
||||
return face;
|
||||
}
|
||||
|
||||
virtual SkTypeface* onCreateFromFile(const char path[], int ttcIndex) {
|
||||
virtual SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const SK_OVERRIDE {
|
||||
SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(path));
|
||||
return stream.get() ? this->createFromStream(stream, ttcIndex) : NULL;
|
||||
}
|
||||
|
||||
virtual SkTypeface* onLegacyCreateTypeface(const char familyName[],
|
||||
unsigned styleBits) SK_OVERRIDE {
|
||||
unsigned styleBits) const SK_OVERRIDE {
|
||||
return FontConfigTypeface::LegacyCreateTypeface(NULL, familyName,
|
||||
(SkTypeface::Style)styleBits);
|
||||
}
|
||||
|
@ -215,21 +215,21 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual int onCountFamilies() SK_OVERRIDE {
|
||||
virtual int onCountFamilies() const SK_OVERRIDE {
|
||||
return fFamilies.count();
|
||||
}
|
||||
|
||||
virtual void onGetFamilyName(int index, SkString* familyName) SK_OVERRIDE {
|
||||
virtual void onGetFamilyName(int index, SkString* familyName) const SK_OVERRIDE {
|
||||
SkASSERT(index < fFamilies.count());
|
||||
familyName->set(fFamilies[index]->fFamilyName);
|
||||
}
|
||||
|
||||
virtual SkFontStyleSet_Custom* onCreateStyleSet(int index) SK_OVERRIDE {
|
||||
virtual SkFontStyleSet_Custom* onCreateStyleSet(int index) const SK_OVERRIDE {
|
||||
SkASSERT(index < fFamilies.count());
|
||||
return SkRef(fFamilies[index].get());
|
||||
}
|
||||
|
||||
virtual SkFontStyleSet_Custom* onMatchFamily(const char familyName[]) SK_OVERRIDE {
|
||||
virtual SkFontStyleSet_Custom* onMatchFamily(const char familyName[]) const SK_OVERRIDE {
|
||||
for (int i = 0; i < fFamilies.count(); ++i) {
|
||||
if (fFamilies[i]->fFamilyName.equals(familyName)) {
|
||||
return SkRef(fFamilies[i].get());
|
||||
@ -239,14 +239,14 @@ protected:
|
||||
}
|
||||
|
||||
virtual SkTypeface* onMatchFamilyStyle(const char familyName[],
|
||||
const SkFontStyle& fontStyle) SK_OVERRIDE
|
||||
const SkFontStyle& fontStyle) const SK_OVERRIDE
|
||||
{
|
||||
SkAutoTUnref<SkFontStyleSet> sset(this->matchFamily(familyName));
|
||||
return sset->matchStyle(fontStyle);
|
||||
}
|
||||
|
||||
virtual SkTypeface* onMatchFaceStyle(const SkTypeface* familyMember,
|
||||
const SkFontStyle& fontStyle) SK_OVERRIDE
|
||||
const SkFontStyle& fontStyle) const SK_OVERRIDE
|
||||
{
|
||||
for (int i = 0; i < fFamilies.count(); ++i) {
|
||||
for (int j = 0; j < fFamilies[i]->fStyles.count(); ++j) {
|
||||
@ -258,12 +258,12 @@ protected:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
virtual SkTypeface* onCreateFromData(SkData* data, int ttcIndex) SK_OVERRIDE {
|
||||
virtual SkTypeface* onCreateFromData(SkData* data, int ttcIndex) const SK_OVERRIDE {
|
||||
SkAutoTUnref<SkStream> stream(new SkMemoryStream(data));
|
||||
return this->createFromStream(stream, ttcIndex);
|
||||
}
|
||||
|
||||
virtual SkTypeface* onCreateFromStream(SkStream* stream, int ttcIndex) SK_OVERRIDE {
|
||||
virtual SkTypeface* onCreateFromStream(SkStream* stream, int ttcIndex) const SK_OVERRIDE {
|
||||
if (NULL == stream || stream->getLength() <= 0) {
|
||||
SkDELETE(stream);
|
||||
return NULL;
|
||||
@ -279,13 +279,13 @@ protected:
|
||||
}
|
||||
}
|
||||
|
||||
virtual SkTypeface* onCreateFromFile(const char path[], int ttcIndex) SK_OVERRIDE {
|
||||
virtual SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const SK_OVERRIDE {
|
||||
SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(path));
|
||||
return stream.get() ? this->createFromStream(stream, ttcIndex) : NULL;
|
||||
}
|
||||
|
||||
virtual SkTypeface* onLegacyCreateTypeface(const char familyName[],
|
||||
unsigned styleBits) SK_OVERRIDE
|
||||
unsigned styleBits) const SK_OVERRIDE
|
||||
{
|
||||
SkTypeface::Style oldStyle = (SkTypeface::Style)styleBits;
|
||||
SkFontStyle style = SkFontStyle(oldStyle & SkTypeface::kBold
|
||||
|
@ -2208,21 +2208,14 @@ private:
|
||||
};
|
||||
|
||||
class SkFontMgr_Mac : public SkFontMgr {
|
||||
int fCount;
|
||||
CFArrayRef fNames;
|
||||
int fCount;
|
||||
|
||||
CFStringRef stringAt(int index) const {
|
||||
SkASSERT((unsigned)index < (unsigned)fCount);
|
||||
return (CFStringRef)CFArrayGetValueAtIndex(fNames, index);
|
||||
}
|
||||
|
||||
void lazyInit() {
|
||||
if (NULL == fNames) {
|
||||
fNames = SkCTFontManagerCopyAvailableFontFamilyNames();
|
||||
fCount = fNames ? SkToInt(CFArrayGetCount(fNames)) : 0;
|
||||
}
|
||||
}
|
||||
|
||||
static SkFontStyleSet* CreateSet(CFStringRef cfFamilyName) {
|
||||
AutoCFRelease<CFMutableDictionaryRef> cfAttr(
|
||||
CFDictionaryCreateMutable(kCFAllocatorDefault, 0,
|
||||
@ -2237,20 +2230,20 @@ class SkFontMgr_Mac : public SkFontMgr {
|
||||
}
|
||||
|
||||
public:
|
||||
SkFontMgr_Mac() : fCount(0), fNames(NULL) {}
|
||||
SkFontMgr_Mac()
|
||||
: fNames(SkCTFontManagerCopyAvailableFontFamilyNames())
|
||||
, fCount(fNames ? SkToInt(CFArrayGetCount(fNames)) : 0) {}
|
||||
|
||||
virtual ~SkFontMgr_Mac() {
|
||||
CFSafeRelease(fNames);
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual int onCountFamilies() SK_OVERRIDE {
|
||||
this->lazyInit();
|
||||
virtual int onCountFamilies() const SK_OVERRIDE {
|
||||
return fCount;
|
||||
}
|
||||
|
||||
virtual void onGetFamilyName(int index, SkString* familyName) SK_OVERRIDE {
|
||||
this->lazyInit();
|
||||
virtual void onGetFamilyName(int index, SkString* familyName) const SK_OVERRIDE {
|
||||
if ((unsigned)index < (unsigned)fCount) {
|
||||
CFStringToSkString(this->stringAt(index), familyName);
|
||||
} else {
|
||||
@ -2258,31 +2251,30 @@ protected:
|
||||
}
|
||||
}
|
||||
|
||||
virtual SkFontStyleSet* onCreateStyleSet(int index) SK_OVERRIDE {
|
||||
this->lazyInit();
|
||||
virtual SkFontStyleSet* onCreateStyleSet(int index) const SK_OVERRIDE {
|
||||
if ((unsigned)index >= (unsigned)fCount) {
|
||||
return NULL;
|
||||
}
|
||||
return CreateSet(this->stringAt(index));
|
||||
}
|
||||
|
||||
virtual SkFontStyleSet* onMatchFamily(const char familyName[]) SK_OVERRIDE {
|
||||
virtual SkFontStyleSet* onMatchFamily(const char familyName[]) const SK_OVERRIDE {
|
||||
AutoCFRelease<CFStringRef> cfName(make_CFString(familyName));
|
||||
return CreateSet(cfName);
|
||||
}
|
||||
|
||||
virtual SkTypeface* onMatchFamilyStyle(const char familyName[],
|
||||
const SkFontStyle&) SK_OVERRIDE {
|
||||
const SkFontStyle&) const SK_OVERRIDE {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
virtual SkTypeface* onMatchFaceStyle(const SkTypeface* familyMember,
|
||||
const SkFontStyle&) SK_OVERRIDE {
|
||||
const SkFontStyle&) const SK_OVERRIDE {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
virtual SkTypeface* onCreateFromData(SkData* data,
|
||||
int ttcIndex) SK_OVERRIDE {
|
||||
int ttcIndex) const SK_OVERRIDE {
|
||||
AutoCFRelease<CGDataProviderRef> pr(SkCreateDataProviderFromData(data));
|
||||
if (NULL == pr) {
|
||||
return NULL;
|
||||
@ -2291,7 +2283,7 @@ protected:
|
||||
}
|
||||
|
||||
virtual SkTypeface* onCreateFromStream(SkStream* stream,
|
||||
int ttcIndex) SK_OVERRIDE {
|
||||
int ttcIndex) const SK_OVERRIDE {
|
||||
AutoCFRelease<CGDataProviderRef> pr(SkCreateDataProviderFromStream(stream));
|
||||
if (NULL == pr) {
|
||||
return NULL;
|
||||
@ -2300,7 +2292,7 @@ protected:
|
||||
}
|
||||
|
||||
virtual SkTypeface* onCreateFromFile(const char path[],
|
||||
int ttcIndex) SK_OVERRIDE {
|
||||
int ttcIndex) const SK_OVERRIDE {
|
||||
AutoCFRelease<CGDataProviderRef> pr(CGDataProviderCreateWithFilename(path));
|
||||
if (NULL == pr) {
|
||||
return NULL;
|
||||
@ -2309,7 +2301,7 @@ protected:
|
||||
}
|
||||
|
||||
virtual SkTypeface* onLegacyCreateTypeface(const char familyName[],
|
||||
unsigned styleBits) SK_OVERRIDE {
|
||||
unsigned styleBits) const SK_OVERRIDE {
|
||||
return create_typeface(NULL, familyName, (SkTypeface::Style)styleBits);
|
||||
}
|
||||
};
|
||||
|
@ -2561,21 +2561,21 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual int onCountFamilies() SK_OVERRIDE {
|
||||
virtual int onCountFamilies() const SK_OVERRIDE {
|
||||
return fLogFontArray.count();
|
||||
}
|
||||
|
||||
virtual void onGetFamilyName(int index, SkString* familyName) SK_OVERRIDE {
|
||||
virtual void onGetFamilyName(int index, SkString* familyName) const SK_OVERRIDE {
|
||||
SkASSERT((unsigned)index < (unsigned)fLogFontArray.count());
|
||||
tchar_to_skstring(fLogFontArray[index].elfLogFont.lfFaceName, familyName);
|
||||
}
|
||||
|
||||
virtual SkFontStyleSet* onCreateStyleSet(int index) SK_OVERRIDE {
|
||||
virtual SkFontStyleSet* onCreateStyleSet(int index) const SK_OVERRIDE {
|
||||
SkASSERT((unsigned)index < (unsigned)fLogFontArray.count());
|
||||
return SkNEW_ARGS(SkFontStyleSetGDI, (fLogFontArray[index].elfLogFont.lfFaceName));
|
||||
}
|
||||
|
||||
virtual SkFontStyleSet* onMatchFamily(const char familyName[]) SK_OVERRIDE {
|
||||
virtual SkFontStyleSet* onMatchFamily(const char familyName[]) const SK_OVERRIDE {
|
||||
if (NULL == familyName) {
|
||||
familyName = ""; // do we need this check???
|
||||
}
|
||||
@ -2585,38 +2585,38 @@ protected:
|
||||
}
|
||||
|
||||
virtual SkTypeface* onMatchFamilyStyle(const char familyName[],
|
||||
const SkFontStyle& fontstyle) SK_OVERRIDE {
|
||||
const SkFontStyle& fontstyle) const SK_OVERRIDE {
|
||||
// could be in base impl
|
||||
SkAutoTUnref<SkFontStyleSet> sset(this->matchFamily(familyName));
|
||||
return sset->matchStyle(fontstyle);
|
||||
}
|
||||
|
||||
virtual SkTypeface* onMatchFaceStyle(const SkTypeface* familyMember,
|
||||
const SkFontStyle& fontstyle) SK_OVERRIDE {
|
||||
const SkFontStyle& fontstyle) const SK_OVERRIDE {
|
||||
// could be in base impl
|
||||
SkString familyName;
|
||||
((LogFontTypeface*)familyMember)->getFamilyName(&familyName);
|
||||
return this->matchFamilyStyle(familyName.c_str(), fontstyle);
|
||||
}
|
||||
|
||||
virtual SkTypeface* onCreateFromStream(SkStream* stream, int ttcIndex) SK_OVERRIDE {
|
||||
virtual SkTypeface* onCreateFromStream(SkStream* stream, int ttcIndex) const SK_OVERRIDE {
|
||||
return create_from_stream(stream);
|
||||
}
|
||||
|
||||
virtual SkTypeface* onCreateFromData(SkData* data, int ttcIndex) SK_OVERRIDE {
|
||||
virtual SkTypeface* onCreateFromData(SkData* data, int ttcIndex) const SK_OVERRIDE {
|
||||
// could be in base impl
|
||||
SkAutoTUnref<SkStream> stream(SkNEW_ARGS(SkMemoryStream, (data)));
|
||||
return this->createFromStream(stream);
|
||||
}
|
||||
|
||||
virtual SkTypeface* onCreateFromFile(const char path[], int ttcIndex) SK_OVERRIDE {
|
||||
virtual SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const SK_OVERRIDE {
|
||||
// could be in base impl
|
||||
SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(path));
|
||||
return this->createFromStream(stream);
|
||||
}
|
||||
|
||||
virtual SkTypeface* onLegacyCreateTypeface(const char familyName[],
|
||||
unsigned styleBits) SK_OVERRIDE {
|
||||
unsigned styleBits) const SK_OVERRIDE {
|
||||
LOGFONT lf;
|
||||
if (NULL == familyName) {
|
||||
lf = get_default_font();
|
||||
|
@ -128,54 +128,54 @@ public:
|
||||
memcpy(fLocaleName.get(), localeName, localeNameLength * sizeof(WCHAR));
|
||||
}
|
||||
|
||||
SkTypefaceCache* getTypefaceCache() { return &fTFCache; }
|
||||
|
||||
SkTypeface* createTypefaceFromDWriteFont(IDWriteFontFace* fontFace,
|
||||
IDWriteFont* font,
|
||||
IDWriteFontFamily* fontFamily,
|
||||
StreamFontFileLoader* = NULL,
|
||||
IDWriteFontCollectionLoader* = NULL);
|
||||
IDWriteFontCollectionLoader* = NULL) const;
|
||||
|
||||
protected:
|
||||
virtual int onCountFamilies() SK_OVERRIDE;
|
||||
virtual void onGetFamilyName(int index, SkString* familyName) SK_OVERRIDE;
|
||||
virtual SkFontStyleSet* onCreateStyleSet(int index) SK_OVERRIDE;
|
||||
virtual SkFontStyleSet* onMatchFamily(const char familyName[]) SK_OVERRIDE;
|
||||
virtual int onCountFamilies() const SK_OVERRIDE;
|
||||
virtual void onGetFamilyName(int index, SkString* familyName) const SK_OVERRIDE;
|
||||
virtual SkFontStyleSet* onCreateStyleSet(int index) const SK_OVERRIDE;
|
||||
virtual SkFontStyleSet* onMatchFamily(const char familyName[]) const SK_OVERRIDE;
|
||||
virtual SkTypeface* onMatchFamilyStyle(const char familyName[],
|
||||
const SkFontStyle& fontstyle) SK_OVERRIDE;
|
||||
const SkFontStyle& fontstyle) const SK_OVERRIDE;
|
||||
virtual SkTypeface* onMatchFaceStyle(const SkTypeface* familyMember,
|
||||
const SkFontStyle& fontstyle) SK_OVERRIDE;
|
||||
virtual SkTypeface* onCreateFromStream(SkStream* stream, int ttcIndex) SK_OVERRIDE;
|
||||
virtual SkTypeface* onCreateFromData(SkData* data, int ttcIndex) SK_OVERRIDE;
|
||||
virtual SkTypeface* onCreateFromFile(const char path[], int ttcIndex) SK_OVERRIDE;
|
||||
const SkFontStyle& fontstyle) const SK_OVERRIDE;
|
||||
virtual SkTypeface* onCreateFromStream(SkStream* stream, int ttcIndex) const SK_OVERRIDE;
|
||||
virtual SkTypeface* onCreateFromData(SkData* data, int ttcIndex) const SK_OVERRIDE;
|
||||
virtual SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const SK_OVERRIDE;
|
||||
virtual SkTypeface* onLegacyCreateTypeface(const char familyName[],
|
||||
unsigned styleBits) SK_OVERRIDE;
|
||||
unsigned styleBits) const SK_OVERRIDE;
|
||||
|
||||
private:
|
||||
HRESULT getByFamilyName(const WCHAR familyName[], IDWriteFontFamily** fontFamily);
|
||||
HRESULT getDefaultFontFamily(IDWriteFontFamily** fontFamily);
|
||||
HRESULT getByFamilyName(const WCHAR familyName[], IDWriteFontFamily** fontFamily) const;
|
||||
HRESULT getDefaultFontFamily(IDWriteFontFamily** fontFamily) const;
|
||||
|
||||
SkMutex fTFCacheMutex;
|
||||
void Add(SkTypeface* face, SkTypeface::Style requestedStyle, bool strong) {
|
||||
void Add(SkTypeface* face, SkTypeface::Style requestedStyle, bool strong) const {
|
||||
SkAutoMutexAcquire ama(fTFCacheMutex);
|
||||
fTFCache.add(face, requestedStyle, strong);
|
||||
}
|
||||
|
||||
SkTypeface* FindByProcAndRef(SkTypefaceCache::FindProc proc, void* ctx) {
|
||||
SkTypeface* FindByProcAndRef(SkTypefaceCache::FindProc proc, void* ctx) const {
|
||||
SkAutoMutexAcquire ama(fTFCacheMutex);
|
||||
SkTypeface* typeface = fTFCache.findByProcAndRef(proc, ctx);
|
||||
return typeface;
|
||||
}
|
||||
|
||||
friend class SkFontStyleSet_DirectWrite;
|
||||
SkTScopedComPtr<IDWriteFontCollection> fFontCollection;
|
||||
SkSMallocWCHAR fLocaleName;
|
||||
SkTypefaceCache fTFCache;
|
||||
mutable SkMutex fTFCacheMutex;
|
||||
mutable SkTypefaceCache fTFCache;
|
||||
|
||||
friend class SkFontStyleSet_DirectWrite;
|
||||
};
|
||||
|
||||
class SkFontStyleSet_DirectWrite : public SkFontStyleSet {
|
||||
public:
|
||||
SkFontStyleSet_DirectWrite(SkFontMgr_DirectWrite* fontMgr, IDWriteFontFamily* fontFamily)
|
||||
SkFontStyleSet_DirectWrite(const SkFontMgr_DirectWrite* fontMgr,
|
||||
IDWriteFontFamily* fontFamily)
|
||||
: fFontMgr(SkRef(fontMgr))
|
||||
, fFontFamily(SkRefComPtr(fontFamily))
|
||||
{ }
|
||||
@ -186,7 +186,7 @@ public:
|
||||
virtual SkTypeface* matchStyle(const SkFontStyle& pattern) SK_OVERRIDE;
|
||||
|
||||
private:
|
||||
SkAutoTUnref<SkFontMgr_DirectWrite> fFontMgr;
|
||||
SkAutoTUnref<const SkFontMgr_DirectWrite> fFontMgr;
|
||||
SkTScopedComPtr<IDWriteFontFamily> fFontFamily;
|
||||
};
|
||||
|
||||
@ -1661,11 +1661,11 @@ static void get_locale_string(IDWriteLocalizedStrings* names, const WCHAR* prefe
|
||||
}
|
||||
|
||||
SkTypeface* SkFontMgr_DirectWrite::createTypefaceFromDWriteFont(
|
||||
IDWriteFontFace* fontFace,
|
||||
IDWriteFont* font,
|
||||
IDWriteFontFamily* fontFamily,
|
||||
StreamFontFileLoader* fontFileLoader,
|
||||
IDWriteFontCollectionLoader* fontCollectionLoader) {
|
||||
IDWriteFontFace* fontFace,
|
||||
IDWriteFont* font,
|
||||
IDWriteFontFamily* fontFamily,
|
||||
StreamFontFileLoader* fontFileLoader,
|
||||
IDWriteFontCollectionLoader* fontCollectionLoader) const {
|
||||
SkTypeface* face = FindByProcAndRef(FindByDWriteFont, font);
|
||||
if (NULL == face) {
|
||||
face = DWriteFontTypeface::Create(fontFace, font, fontFamily,
|
||||
@ -1677,11 +1677,11 @@ SkTypeface* SkFontMgr_DirectWrite::createTypefaceFromDWriteFont(
|
||||
return face;
|
||||
}
|
||||
|
||||
int SkFontMgr_DirectWrite::onCountFamilies() {
|
||||
int SkFontMgr_DirectWrite::onCountFamilies() const {
|
||||
return fFontCollection->GetFontFamilyCount();
|
||||
}
|
||||
|
||||
void SkFontMgr_DirectWrite::onGetFamilyName(int index, SkString* familyName) {
|
||||
void SkFontMgr_DirectWrite::onGetFamilyName(int index, SkString* familyName) const {
|
||||
SkTScopedComPtr<IDWriteFontFamily> fontFamily;
|
||||
HRVM(fFontCollection->GetFontFamily(index, &fontFamily), "Could not get requested family.");
|
||||
|
||||
@ -1691,14 +1691,14 @@ void SkFontMgr_DirectWrite::onGetFamilyName(int index, SkString* familyName) {
|
||||
get_locale_string(familyNames.get(), fLocaleName.get(), familyName);
|
||||
}
|
||||
|
||||
SkFontStyleSet* SkFontMgr_DirectWrite::onCreateStyleSet(int index) {
|
||||
SkFontStyleSet* SkFontMgr_DirectWrite::onCreateStyleSet(int index) const {
|
||||
SkTScopedComPtr<IDWriteFontFamily> fontFamily;
|
||||
HRNM(fFontCollection->GetFontFamily(index, &fontFamily), "Could not get requested family.");
|
||||
|
||||
return SkNEW_ARGS(SkFontStyleSet_DirectWrite, (this, fontFamily.get()));
|
||||
}
|
||||
|
||||
SkFontStyleSet* SkFontMgr_DirectWrite::onMatchFamily(const char familyName[]) {
|
||||
SkFontStyleSet* SkFontMgr_DirectWrite::onMatchFamily(const char familyName[]) const {
|
||||
SkSMallocWCHAR dwFamilyName;
|
||||
HRN(cstring_to_wchar(familyName, &dwFamilyName));
|
||||
|
||||
@ -1714,13 +1714,13 @@ SkFontStyleSet* SkFontMgr_DirectWrite::onMatchFamily(const char familyName[]) {
|
||||
}
|
||||
|
||||
SkTypeface* SkFontMgr_DirectWrite::onMatchFamilyStyle(const char familyName[],
|
||||
const SkFontStyle& fontstyle) {
|
||||
const SkFontStyle& fontstyle) const {
|
||||
SkAutoTUnref<SkFontStyleSet> sset(this->matchFamily(familyName));
|
||||
return sset->matchStyle(fontstyle);
|
||||
}
|
||||
|
||||
SkTypeface* SkFontMgr_DirectWrite::onMatchFaceStyle(const SkTypeface* familyMember,
|
||||
const SkFontStyle& fontstyle) {
|
||||
const SkFontStyle& fontstyle) const {
|
||||
SkString familyName;
|
||||
SkFontStyleSet_DirectWrite sset(
|
||||
this, ((DWriteFontTypeface*)familyMember)->fDWriteFontFamily.get()
|
||||
@ -1728,22 +1728,22 @@ SkTypeface* SkFontMgr_DirectWrite::onMatchFaceStyle(const SkTypeface* familyMemb
|
||||
return sset.matchStyle(fontstyle);
|
||||
}
|
||||
|
||||
SkTypeface* SkFontMgr_DirectWrite::onCreateFromStream(SkStream* stream, int ttcIndex) {
|
||||
SkTypeface* SkFontMgr_DirectWrite::onCreateFromStream(SkStream* stream, int ttcIndex) const {
|
||||
return create_from_stream(stream, ttcIndex);
|
||||
}
|
||||
|
||||
SkTypeface* SkFontMgr_DirectWrite::onCreateFromData(SkData* data, int ttcIndex) {
|
||||
SkTypeface* SkFontMgr_DirectWrite::onCreateFromData(SkData* data, int ttcIndex) const {
|
||||
SkAutoTUnref<SkStream> stream(SkNEW_ARGS(SkMemoryStream, (data)));
|
||||
return this->createFromStream(stream, ttcIndex);
|
||||
}
|
||||
|
||||
SkTypeface* SkFontMgr_DirectWrite::onCreateFromFile(const char path[], int ttcIndex) {
|
||||
SkTypeface* SkFontMgr_DirectWrite::onCreateFromFile(const char path[], int ttcIndex) const {
|
||||
SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(path));
|
||||
return this->createFromStream(stream, ttcIndex);
|
||||
}
|
||||
|
||||
HRESULT SkFontMgr_DirectWrite::getByFamilyName(const WCHAR wideFamilyName[],
|
||||
IDWriteFontFamily** fontFamily) {
|
||||
IDWriteFontFamily** fontFamily) const {
|
||||
UINT32 index;
|
||||
BOOL exists;
|
||||
HR(fFontCollection->FindFamilyName(wideFamilyName, &index, &exists));
|
||||
@ -1755,7 +1755,7 @@ HRESULT SkFontMgr_DirectWrite::getByFamilyName(const WCHAR wideFamilyName[],
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
HRESULT SkFontMgr_DirectWrite::getDefaultFontFamily(IDWriteFontFamily** fontFamily) {
|
||||
HRESULT SkFontMgr_DirectWrite::getDefaultFontFamily(IDWriteFontFamily** fontFamily) const {
|
||||
NONCLIENTMETRICSW metrics;
|
||||
metrics.cbSize = sizeof(metrics);
|
||||
if (0 == SystemParametersInfoW(SPI_GETNONCLIENTMETRICS,
|
||||
@ -1771,7 +1771,7 @@ HRESULT SkFontMgr_DirectWrite::getDefaultFontFamily(IDWriteFontFamily** fontFami
|
||||
}
|
||||
|
||||
SkTypeface* SkFontMgr_DirectWrite::onLegacyCreateTypeface(const char familyName[],
|
||||
unsigned styleBits) {
|
||||
unsigned styleBits) const {
|
||||
SkTScopedComPtr<IDWriteFontFamily> fontFamily;
|
||||
if (familyName) {
|
||||
SkSMallocWCHAR wideFamilyName;
|
||||
|
Loading…
Reference in New Issue
Block a user