| Index: src/core/SkFontDescriptor.h
|
| diff --git a/src/core/SkFontDescriptor.h b/src/core/SkFontDescriptor.h
|
| index 66707ddd3c5e10819ecd87e4d2352ed603c85817..933a36a0952d254d987b5b2dc12970fbc851268b 100644
|
| --- a/src/core/SkFontDescriptor.h
|
| +++ b/src/core/SkFontDescriptor.h
|
| @@ -12,7 +12,42 @@
|
| #include "SkString.h"
|
| #include "SkTypeface.h"
|
|
|
| -class SkFontDescriptor {
|
| +class SkFontData {
|
| +public:
|
| + /** This takes ownership of 'stream'. Makes a copy of the data in 'axis'. */
|
| + SkFontData(SkStreamAsset* stream, int index, const SkFixed axis[], int axisCount)
|
| + : fStream(stream), fIndex(index), fAxisCount(axisCount), fAxis(axisCount)
|
| + {
|
| + for (int i = 0; i < axisCount; ++i) {
|
| + fAxis[i] = axis[i];
|
| + }
|
| + }
|
| + SkFontData(const SkFontData& that)
|
| + : fStream(that.fStream->duplicate())
|
| + , fIndex(that.fIndex)
|
| + , fAxisCount(that.fAxisCount)
|
| + , fAxis(fAxisCount)
|
| + {
|
| + for (int i = 0; i < fAxisCount; ++i) {
|
| + fAxis[i] = that.fAxis[i];
|
| + }
|
| + }
|
| + bool hasStream() const { return fStream.get() != NULL; }
|
| + SkStreamAsset* duplicateStream() const { return fStream->duplicate(); }
|
| + SkStreamAsset* detachStream() { return fStream.detach(); }
|
| + SkStreamAsset* getStream() { return fStream.get(); }
|
| + int getIndex() const { return fIndex; }
|
| + int getAxisCount() const { return fAxisCount; }
|
| + const SkFixed* getAxis() const { return fAxis.get(); }
|
| +
|
| +private:
|
| + SkAutoTDelete<SkStreamAsset> fStream;
|
| + int fIndex;
|
| + int fAxisCount;
|
| + SkAutoSTMalloc<4, SkFixed> fAxis;
|
| +};
|
| +
|
| +class SkFontDescriptor : SkNoncopyable {
|
| public:
|
| SkFontDescriptor(SkTypeface::Style = SkTypeface::kNormal);
|
| // Does not affect ownership of SkStream.
|
| @@ -27,25 +62,20 @@ public:
|
| const char* getFullName() const { return fFullName.c_str(); }
|
| const char* getPostscriptName() const { return fPostscriptName.c_str(); }
|
| bool hasFontData() const { return fFontData.get() != NULL; }
|
| - // Transfers ownership to the caller.
|
| - SkStreamAsset* transferFontData() { return fFontData.detach(); }
|
| - int getFontIndex() const { return fFontIndex; }
|
| + SkFontData* detachFontData() { return fFontData.detach(); }
|
|
|
| void setFamilyName(const char* name) { fFamilyName.set(name); }
|
| void setFullName(const char* name) { fFullName.set(name); }
|
| void setPostscriptName(const char* name) { fPostscriptName.set(name); }
|
| /** Set the font data only if it is necessary for serialization.
|
| - * This method takes ownership of the stream (both reference and cursor).
|
| - */
|
| - void setFontData(SkStreamAsset* stream) { fFontData.reset(stream); }
|
| - void setFontIndex(int index) { fFontIndex = index; }
|
| + * This method takes ownership of the font data. */
|
| + void setFontData(SkFontData* data) { fFontData.reset(data); }
|
|
|
| private:
|
| SkString fFamilyName;
|
| SkString fFullName;
|
| SkString fPostscriptName;
|
| - SkAutoTDelete<SkStreamAsset> fFontData;
|
| - int fFontIndex;
|
| + SkAutoTDelete<SkFontData> fFontData;
|
|
|
| SkTypeface::Style fStyle;
|
| };
|
|
|