f93d71122e
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 Review-Url: https://codereview.chromium.org/2339273002
77 lines
2.5 KiB
C++
77 lines
2.5 KiB
C++
|
|
/*
|
|
* Copyright 2011 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
#ifndef SkCGUtils_DEFINED
|
|
#define SkCGUtils_DEFINED
|
|
|
|
#include "SkSize.h"
|
|
#include "SkImageInfo.h"
|
|
|
|
#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
|
|
|
|
#ifdef SK_BUILD_FOR_MAC
|
|
#include <ApplicationServices/ApplicationServices.h>
|
|
#endif
|
|
|
|
#ifdef SK_BUILD_FOR_IOS
|
|
#include <CoreGraphics/CoreGraphics.h>
|
|
#endif
|
|
|
|
class SkBitmap;
|
|
class SkData;
|
|
class SkStreamRewindable;
|
|
|
|
/**
|
|
* Given a CGImage, allocate an SkBitmap and copy the image's pixels into it. If scaleToFit is not
|
|
* null, use it to determine the size of the bitmap, and scale the image to fill the bitmap.
|
|
* Otherwise use the image's width/height.
|
|
*
|
|
* On failure, return false, and leave bitmap unchanged.
|
|
*/
|
|
SK_API bool SkCreateBitmapFromCGImage(SkBitmap* dst, CGImageRef src, SkISize* scaleToFit = NULL);
|
|
|
|
/**
|
|
* Copy the pixels from src into the memory specified by info/rowBytes/dstPixels. On failure,
|
|
* return false (e.g. ImageInfo incompatible with src).
|
|
*/
|
|
SK_API bool SkCopyPixelsFromCGImage(const SkImageInfo& info, size_t rowBytes, void* dstPixels,
|
|
CGImageRef src);
|
|
|
|
/**
|
|
* Create an imageref from the specified bitmap using the specified colorspace.
|
|
* If space is NULL, then CGColorSpaceCreateDeviceRGB() is used.
|
|
*/
|
|
SK_API CGImageRef SkCreateCGImageRefWithColorspace(const SkBitmap& bm,
|
|
CGColorSpaceRef space);
|
|
|
|
/**
|
|
* Create an imageref from the specified bitmap using the colorspace returned
|
|
* by CGColorSpaceCreateDeviceRGB()
|
|
*/
|
|
static inline CGImageRef SkCreateCGImageRef(const SkBitmap& bm) {
|
|
return SkCreateCGImageRefWithColorspace(bm, NULL);
|
|
}
|
|
|
|
/**
|
|
* Draw the bitmap into the specified CG context. The bitmap will be converted
|
|
* to a CGImage using the generic RGB colorspace. (x,y) specifies the position
|
|
* of the top-left corner of the bitmap. The bitmap is converted using the
|
|
* colorspace returned by CGColorSpaceCreateDeviceRGB()
|
|
*/
|
|
void SkCGDrawBitmap(CGContextRef, const SkBitmap&, float x, float y);
|
|
|
|
/**
|
|
* Return a provider that wraps the specified stream.
|
|
* When the provider is finally deleted, it will delete the stream.
|
|
*/
|
|
CGDataProviderRef SkCreateDataProviderFromStream(std::unique_ptr<SkStreamRewindable>);
|
|
|
|
CGDataProviderRef SkCreateDataProviderFromData(sk_sp<SkData>);
|
|
|
|
#endif // defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
|
|
#endif // SkCGUtils_DEFINED
|