diff options
author | bungeman <bungeman@google.com> | 2016-09-15 10:57:38 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-09-15 10:57:39 -0700 |
commit | 606add3dfb2f6d1dc3ee4921876e7c9fa01643f9 (patch) | |
tree | f358bd464a80b6739601ef2c653ce78c532f3a7c /include | |
parent | a846c7223c531a634a549e7e6ed7d28eeec95bef (diff) |
Revert of SkFontData to use smart pointers. (patchset #3 id:40001 of https://codereview.chromium.org/2339273002/ )
Reason for revert:
Killing Mac
Original issue's description:
> SkFontData to use smart pointers.
>
> The SkFontData type is not exposed externally, so any method which uses
> it can be updated to use smart pointers without affecting external
> users. Updating this first will make updating the public API much
> easier.
>
> This also updates SkStreamAsset* SkStream::NewFromFile(const char*) to
> std::unique_ptr<SkStreamAsset> SkStream::MakeFromFile(const char*). It
> appears that no one outside Skia is currently using SkStream::NewfromFile
> so this is a good time to update it as well.
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339273002
>
> Committed: https://skia.googlesource.com/skia/+/d8c2476a8b1e1e1a1771b17e8dd4db8645914f8c
TBR=mtklein@chromium.org,halcanary@google.com,mtklein@google.com,reed@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review-Url: https://codereview.chromium.org/2343933002
Diffstat (limited to 'include')
-rw-r--r-- | include/core/SkStream.h | 6 | ||||
-rw-r--r-- | include/core/SkTypeface.h | 12 | ||||
-rw-r--r-- | include/ports/SkFontMgr.h | 5 | ||||
-rw-r--r-- | include/utils/mac/SkCGUtils.h | 14 |
4 files changed, 25 insertions, 12 deletions
diff --git a/include/core/SkStream.h b/include/core/SkStream.h index 7afce71240..48ac577070 100644 --- a/include/core/SkStream.h +++ b/include/core/SkStream.h @@ -40,9 +40,11 @@ public: virtual ~SkStream() {} /** - * Attempts to open the specified file as a stream, returns nullptr on failure. + * Attempts to open the specified file, and return a stream to it (using + * mmap if available). On success, the caller is responsible for deleting. + * On failure, returns NULL. */ - static std::unique_ptr<SkStreamAsset> MakeFromFile(const char path[]); + static SkStreamAsset* NewFromFile(const char path[]); /** Reads or skips size number of bytes. * If buffer == NULL, skip size bytes, return how many were skipped. diff --git a/include/core/SkTypeface.h b/include/core/SkTypeface.h index 61618697e8..b2c288ebcd 100644 --- a/include/core/SkTypeface.h +++ b/include/core/SkTypeface.h @@ -150,9 +150,10 @@ public: #endif /** Return a new typeface given font data and configuration. If the data - is not valid font data, returns nullptr. + is not valid font data, returns nullptr. Ownership of the font data is + transferred, so the caller must not reference it again. */ - static sk_sp<SkTypeface> MakeFromFontData(std::unique_ptr<SkFontData>); + static sk_sp<SkTypeface> MakeFromFontData(SkFontData*); /** Write a unique signature to a stream, sufficient to reconstruct a typeface referencing the same font when Deserialize is called. @@ -299,9 +300,10 @@ public: SkStreamAsset* openStream(int* ttcIndex) const; /** - * Return the font data, or nullptr on failure. + * Return the font data, or NULL on failure. + * The caller is responsible for deleting the font data. */ - std::unique_ptr<SkFontData> makeFontData() const; + SkFontData* createFontData() const; /** * Return a scalercontext for the given descriptor. If this fails, then @@ -359,7 +361,7 @@ protected: virtual SkStreamAsset* onOpenStream(int* ttcIndex) const = 0; // TODO: make pure virtual. - virtual std::unique_ptr<SkFontData> onMakeFontData() const; + virtual SkFontData* onCreateFontData() const; virtual void onGetFontDescriptor(SkFontDescriptor*, bool* isLocal) const = 0; diff --git a/include/ports/SkFontMgr.h b/include/ports/SkFontMgr.h index afadeaaa97..a5b78c6241 100644 --- a/include/ports/SkFontMgr.h +++ b/include/ports/SkFontMgr.h @@ -150,10 +150,11 @@ public: /** * Create a typeface from the specified font data. + * Takes ownership of the font data, so the caller should not reference it again. * Will return NULL if the typeface could not be created. * The caller must call unref() on the returned object if it is not null. */ - SkTypeface* createFromFontData(std::unique_ptr<SkFontData>) const; + SkTypeface* createFromFontData(SkFontData*) const; /** * Create a typeface for the specified fileName and TTC index @@ -191,7 +192,7 @@ protected: virtual SkTypeface* onCreateFromStream(SkStreamAsset*, int ttcIndex) const = 0; // TODO: make pure virtual. virtual SkTypeface* onCreateFromStream(SkStreamAsset*, const FontParameters&) const; - virtual SkTypeface* onCreateFromFontData(std::unique_ptr<SkFontData>) const; + virtual SkTypeface* onCreateFromFontData(SkFontData*) const; virtual SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const = 0; virtual SkTypeface* onLegacyCreateTypeface(const char familyName[], SkFontStyle) const = 0; diff --git a/include/utils/mac/SkCGUtils.h b/include/utils/mac/SkCGUtils.h index a8f86de35b..3d9aff4451 100644 --- a/include/utils/mac/SkCGUtils.h +++ b/include/utils/mac/SkCGUtils.h @@ -65,12 +65,20 @@ static inline CGImageRef SkCreateCGImageRef(const SkBitmap& bm) { void SkCGDrawBitmap(CGContextRef, const SkBitmap&, float x, float y); /** - * Return a provider that wraps the specified stream. + * Create an SkBitmap drawing of the encoded PDF document, returning true on + * success. Deletes the stream when finished. + */ +bool SkPDFDocumentToBitmap(SkStream* stream, SkBitmap* output); + +/** + * Return a provider that wraps the specified stream. It will become the only + * owner of the stream, so the caller must stop referring to the stream. + * * When the provider is finally deleted, it will delete the stream. */ -CGDataProviderRef SkCreateDataProviderFromStream(std::unique_ptr<SkStream>); +CGDataProviderRef SkCreateDataProviderFromStream(SkStream*); -CGDataProviderRef SkCreateDataProviderFromData(sk_sp<SkData>); +CGDataProviderRef SkCreateDataProviderFromData(SkData*); #endif // defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) #endif // SkCGUtils_DEFINED |