diff options
author | Hal Canary <halcanary@google.com> | 2016-11-30 17:07:59 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-11-30 22:48:56 +0000 |
commit | 1fcc40474f1ad1f522d0a61086e25a71ca0a6881 (patch) | |
tree | 298d1a0b66d5d1899133c6252c877931661c5e95 /src/ports/SkImageEncoder_CG.cpp | |
parent | 3a7492fc04d83ed2729d2ba226d5277459536b74 (diff) |
SkEncodeImage: no more link-time registration
Also, no more SkImageEncoder class.
SK_SUPPORT_LEGACY_IMAGE_ENCODER_CLASS now only guards some
old API shims.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5006
Change-Id: I3797f584f3e8e12ade10d31e8733163453725f40
Reviewed-on: https://skia-review.googlesource.com/5006
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Diffstat (limited to 'src/ports/SkImageEncoder_CG.cpp')
-rw-r--r-- | src/ports/SkImageEncoder_CG.cpp | 57 |
1 files changed, 12 insertions, 45 deletions
diff --git a/src/ports/SkImageEncoder_CG.cpp b/src/ports/SkImageEncoder_CG.cpp index 0c3d22d0f6..b3fd243324 100644 --- a/src/ports/SkImageEncoder_CG.cpp +++ b/src/ports/SkImageEncoder_CG.cpp @@ -5,14 +5,14 @@ * found in the LICENSE file. */ -#include "SkTypes.h" +#include "SkImageEncoderPriv.h" + #if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) #include "SkBitmap.h" #include "SkCGUtils.h" #include "SkColorPriv.h" #include "SkData.h" -#include "SkImageEncoderPriv.h" #include "SkStream.h" #include "SkStreamPriv.h" #include "SkTemplates.h" @@ -57,29 +57,19 @@ static CGImageDestinationRef SkStreamToImageDestination(SkWStream* stream, return CGImageDestinationCreateWithDataConsumer(consumer, type, 1, nullptr); } -class SkImageEncoder_CG : public SkImageEncoder { -public: - SkImageEncoder_CG(SkEncodedImageFormat t) : fType(t) {} - -protected: - virtual bool onEncode(SkWStream* stream, const SkBitmap& bm, int quality); - -private: - SkEncodedImageFormat fType; -}; - /* Encode bitmaps via CGImageDestination. We setup a DataConsumer which writes to our SkWStream. Since we don't reference/own the SkWStream, our consumer must only live for the duration of the onEncode() method. */ -bool SkImageEncoder_CG::onEncode(SkWStream* stream, const SkBitmap& bm, - int quality) { - // Used for converting a bitmap to 8888. - const SkBitmap* bmPtr = &bm; - SkBitmap bitmap8888; +bool SkEncodeImageWithCG(SkWStream* stream, const SkPixmap& pixmap, SkEncodedImageFormat format) { + SkBitmap bm; + if (!bm.installPixels(pixmap)) { + return false; + } + bm.setImmutable(); CFStringRef type; - switch (fType) { + switch (format) { case SkEncodedImageFormat::kICO: type = kUTTypeICO; break; @@ -99,8 +89,9 @@ bool SkImageEncoder_CG::onEncode(SkWStream* stream, const SkBitmap& bm, // <Error>: CGImageDestinationFinalize image destination does not have enough images // So instead we copy to 8888. if (bm.colorType() == kARGB_4444_SkColorType) { + SkBitmap bitmap8888; bm.copyTo(&bitmap8888, kN32_SkColorType); - bmPtr = &bitmap8888; + bm.swap(bitmap8888); } type = kUTTypePNG; break; @@ -114,7 +105,7 @@ bool SkImageEncoder_CG::onEncode(SkWStream* stream, const SkBitmap& bm, } SkAutoTCallVProc<const void, CFRelease> ardst(dst); - CGImageRef image = SkCreateCGImageRef(*bmPtr); + CGImageRef image = SkCreateCGImageRef(bm); if (nullptr == image) { return false; } @@ -124,28 +115,4 @@ bool SkImageEncoder_CG::onEncode(SkWStream* stream, const SkBitmap& bm, return CGImageDestinationFinalize(dst); } -/////////////////////////////////////////////////////////////////////////////// - -#ifdef SK_USE_CG_ENCODER -static SkImageEncoder* sk_imageencoder_cg_factory(SkEncodedImageFormat t) { - switch (t) { - case SkEncodedImageFormat::kICO: - case SkEncodedImageFormat::kBMP: - case SkEncodedImageFormat::kGIF: - case SkEncodedImageFormat::kJPEG: - case SkEncodedImageFormat::kPNG: - break; - default: - return nullptr; - } - return new SkImageEncoder_CG(t); -} - -static SkImageEncoder_EncodeReg gEReg(sk_imageencoder_cg_factory); -#endif - -SkImageEncoder* CreateImageEncoder_CG(SkImageEncoder::Type type) { - return new SkImageEncoder_CG((SkEncodedImageFormat)type); -} - #endif//defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) |