aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorGravatar bungeman <bungeman@google.com>2016-09-15 10:57:38 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-09-15 10:57:39 -0700
commit606add3dfb2f6d1dc3ee4921876e7c9fa01643f9 (patch)
treef358bd464a80b6739601ef2c653ce78c532f3a7c /include
parenta846c7223c531a634a549e7e6ed7d28eeec95bef (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.h6
-rw-r--r--include/core/SkTypeface.h12
-rw-r--r--include/ports/SkFontMgr.h5
-rw-r--r--include/utils/mac/SkCGUtils.h14
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