SkBitmap bm2;
SkCreateBitmapFromCGImage(&bm2, image);
- CGImageRelease(image);
-
canvas->drawBitmap(bm2, 10, 120);
+ canvas->drawImage(SkMakeImageFromCGImage(image), 10, 120 + bm2.height() + 10);
+
+ CGImageRelease(image);
}
class CGImageGM : public skiagm::GM {
private:
typedef skiagm::GM INHERITED;
};
-
-#if 0 // Disabled pending fix from reed@
-DEF_GM( return new CGImageGM; )
-#endif
+//DEF_GM( return new CGImageGM; )
#endif
///////////////////////////////////////////////////////////////////////////////////////////////////
#include "SkSize.h"
#include "SkImageInfo.h"
+#include "SkImage.h"
#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
*
* On failure, return false, and leave bitmap unchanged.
*/
-SK_API bool SkCreateBitmapFromCGImage(SkBitmap* dst, CGImageRef src, SkISize* scaleToFit = NULL);
+SK_API bool SkCreateBitmapFromCGImage(SkBitmap* dst, CGImageRef src);
+
+SK_API sk_sp<SkImage> SkMakeImageFromCGImage(CGImageRef);
/**
* Copy the pixels from src into the memory specified by info/rowBytes/dstPixels. On failure,
return true;
}
-bool SkCreateBitmapFromCGImage(SkBitmap* dst, CGImageRef image, SkISize* scaleToFit) {
- const int width = scaleToFit ? scaleToFit->width() : SkToInt(CGImageGetWidth(image));
- const int height = scaleToFit ? scaleToFit->height() : SkToInt(CGImageGetHeight(image));
+bool SkCreateBitmapFromCGImage(SkBitmap* dst, CGImageRef image) {
+ const int width = SkToInt(CGImageGetWidth(image));
+ const int height = SkToInt(CGImageGetHeight(image));
SkImageInfo info = SkImageInfo::MakeN32Premul(width, height);
SkBitmap tmp;
return true;
}
+sk_sp<SkImage> SkMakeImageFromCGImage(CGImageRef src) {
+ SkBitmap bm;
+ if (!SkCreateBitmapFromCGImage(&bm, src)) {
+ return nullptr;
+ }
+
+ bm.setImmutable();
+ return SkImage::MakeFromBitmap(bm);
+}
+
#endif//defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
return stream.release();
}
+sk_sp<SkData> GetResourceAsData(const char* resource) {
+ SkString resourcePath = GetResourcePath(resource);
+ std::unique_ptr<SkFILEStream> stream(new SkFILEStream(resourcePath.c_str()));
+ if (!stream->isValid()) {
+ SkDebugf("Resource %s not found.\n", resource);
+ return nullptr;
+ }
+ size_t bytes = stream->getLength();
+ sk_sp<SkData> data = SkData::MakeUninitialized(bytes);
+ stream->read(data->writable_data(), bytes);
+ return data;
+}
+
sk_sp<SkTypeface> MakeResourceAsTypeface(const char* resource) {
std::unique_ptr<SkStreamAsset> stream(GetResourceAsStream(resource));
if (!stream) {
#include "SkString.h"
class SkBitmap;
+class SkData;
class SkImage;
class SkStreamAsset;
class SkTypeface;
bool GetResourceAsBitmap(const char* resource, SkBitmap* dst);
sk_sp<SkImage> GetResourceAsImage(const char* resource);
SkStreamAsset* GetResourceAsStream(const char* resource);
+sk_sp<SkData> GetResourceAsData(const char* resource);
sk_sp<SkTypeface> MakeResourceAsTypeface(const char* resource);
#endif // Resources_DEFINED