本文整理汇总了C++中SkBitmap::eraseARGB方法的典型用法代码示例。如果您正苦于以下问题:C++ SkBitmap::eraseARGB方法的具体用法?C++ SkBitmap::eraseARGB怎么用?C++ SkBitmap::eraseARGB使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SkBitmap
的用法示例。
在下文中一共展示了SkBitmap::eraseARGB方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: canvas
PassOwnPtr<PictureSnapshot::Timings> PictureSnapshot::profile(unsigned minRepeatCount, double minDuration, const FloatRect* clipRect) const
{
OwnPtr<PictureSnapshot::Timings> timings = adoptPtr(new PictureSnapshot::Timings());
timings->reserveCapacity(minRepeatCount);
const SkIRect bounds = m_picture->cullRect().roundOut();
SkBitmap bitmap;
bitmap.allocPixels(SkImageInfo::MakeN32Premul(bounds.width(), bounds.height()));
bitmap.eraseARGB(0, 0, 0, 0);
double now = WTF::monotonicallyIncreasingTime();
double stopTime = now + minDuration;
for (unsigned step = 0; step < minRepeatCount || now < stopTime; ++step) {
timings->append(Vector<double>());
Vector<double>* currentTimings = &timings->last();
if (timings->size() > 1)
currentTimings->reserveCapacity(timings->begin()->size());
ProfilingCanvas canvas(bitmap);
if (clipRect) {
canvas.clipRect(SkRect::MakeXYWH(clipRect->x(), clipRect->y(), clipRect->width(), clipRect->height()));
canvas.resetStepCount();
}
canvas.setTimings(currentTimings);
m_picture->playback(&canvas);
now = WTF::monotonicallyIncreasingTime();
}
return timings.release();
}
示例2: GfxFormatToSkiaColorType
bool
DrawTargetSkia::Init(const IntSize &aSize, SurfaceFormat aFormat)
{
SkAlphaType alphaType = (aFormat == SurfaceFormat::B8G8R8X8) ?
kOpaque_SkAlphaType : kPremul_SkAlphaType;
SkImageInfo skiInfo = SkImageInfo::Make(
aSize.width, aSize.height,
GfxFormatToSkiaColorType(aFormat),
alphaType);
SkAutoTUnref<SkBaseDevice> device(SkBitmapDevice::Create(skiInfo));
if (!device) {
return false;
}
SkBitmap bitmap = device->accessBitmap(true);
if (!bitmap.allocPixels()) {
return false;
}
bitmap.eraseARGB(0, 0, 0, 0);
SkAutoTUnref<SkCanvas> canvas(new SkCanvas(device.get()));
mSize = aSize;
mCanvas = canvas.get();
mFormat = aFormat;
return true;
}
示例3: onDraw
virtual void onDraw(SkCanvas* canvas) {
canvas->clear(0x00000000);
SkRect srcRect = SkRect::MakeWH(96, 96);
SkSize deviceSize = SkSize::Make(16, 16);
draw(canvas,
srcRect,
deviceSize,
SkPaint::kNone_FilterLevel);
canvas->translate(srcRect.width() + SkIntToScalar(10), 0);
draw(canvas,
srcRect,
deviceSize,
SkPaint::kLow_FilterLevel);
canvas->translate(srcRect.width() + SkIntToScalar(10), 0);
draw(canvas,
srcRect,
deviceSize,
SkPaint::kMedium_FilterLevel);
canvas->translate(srcRect.width() + SkIntToScalar(10), 0);
draw(canvas,
srcRect,
deviceSize,
SkPaint::kHigh_FilterLevel);
SkBitmap bitmap;
bitmap.allocN32Pixels(16, 16);
bitmap.eraseARGB(0x00, 0x00, 0x00, 0x00);
{
SkBitmapDevice bitmapDevice(bitmap);
SkCanvas bitmapCanvas(&bitmapDevice);
SkPaint paint;
paint.setColor(0xFF00FF00);
SkRect ovalRect = SkRect::MakeWH(16, 16);
ovalRect.inset(SkScalarDiv(2.0f, 3.0f), SkScalarDiv(2.0f, 3.0f));
bitmapCanvas.drawOval(ovalRect, paint);
}
SkRect inRect = SkRect::MakeXYWH(-4, -4, 20, 20);
SkRect outRect = SkRect::MakeXYWH(-24, -24, 120, 120);
SkAutoTUnref<SkBitmapSource> source(SkBitmapSource::Create(bitmap, inRect, outRect));
canvas->translate(srcRect.width() + SkIntToScalar(10), 0);
draw(canvas,
srcRect,
deviceSize,
SkPaint::kHigh_FilterLevel,
source.get());
}
示例4: device
bool
DrawTargetSkia::Init(const IntSize &aSize, SurfaceFormat aFormat)
{
SkAutoTUnref<SkBaseDevice> device(new SkBitmapDevice(GfxFormatToSkiaConfig(aFormat),
aSize.width, aSize.height,
aFormat == SurfaceFormat::B8G8R8X8));
SkBitmap bitmap = device->accessBitmap(true);
if (!bitmap.allocPixels()) {
return false;
}
bitmap.eraseARGB(0, 0, 0, 0);
SkAutoTUnref<SkCanvas> canvas(new SkCanvas(device.get()));
mSize = aSize;
mCanvas = canvas.get();
mFormat = aFormat;
return true;
}
示例5: canvas
PassOwnPtr<Vector<char>> PictureSnapshot::replay(unsigned fromStep, unsigned toStep, double scale) const
{
const SkIRect bounds = m_picture->cullRect().roundOut();
// TODO(fmalita): convert this to SkSurface/SkImage, drop the intermediate SkBitmap.
SkBitmap bitmap;
bitmap.allocPixels(SkImageInfo::MakeN32Premul(bounds.width(), bounds.height()));
bitmap.eraseARGB(0, 0, 0, 0);
{
ReplayingCanvas canvas(bitmap, fromStep, toStep);
// Disable LCD text preemptively, because the picture opacity is unknown.
// The canonical API involves SkSurface props, but since we're not SkSurface-based
// at this point (see TODO above) we (ab)use saveLayer for this purpose.
SkAutoCanvasRestore autoRestore(&canvas, false);
canvas.saveLayer(nullptr, nullptr);
canvas.scale(scale, scale);
canvas.resetStepCount();
m_picture->playback(&canvas, &canvas);
}
OwnPtr<Vector<char>> base64Data = adoptPtr(new Vector<char>());
Vector<char> encodedImage;
RefPtr<SkImage> image = adoptRef(SkImage::NewFromBitmap(bitmap));
if (!image)
return nullptr;
ImagePixelLocker pixelLocker(image, kUnpremul_SkAlphaType, kRGBA_8888_SkColorType);
ImageDataBuffer imageData(IntSize(image->width(), image->height()),
static_cast<const unsigned char*>(pixelLocker.pixels()));
if (!PNGImageEncoder::encode(imageData, reinterpret_cast<Vector<unsigned char>*>(&encodedImage)))
return nullptr;
base64Encode(encodedImage, *base64Data);
return base64Data.release();
}
示例6: test_diagonal
// Make sure our blits are invariant with the width of the blit (i.e. that
// special case for 8 at a time have the same results as narrower blits)
static void test_diagonal(skiatest::Reporter* reporter) {
static const int W = 64;
static const int H = W;
static const SkBitmap::Config gDstConfig[] = {
SkBitmap::kARGB_8888_Config,
SkBitmap::kRGB_565_Config,
// SkBitmap::kARGB_4444_Config,
// SkBitmap::kA8_Config,
};
static const SkColor gDstBG[] = { 0, 0xFFFFFFFF };
SkPaint paint;
SkBitmap srcBM;
srcBM.setConfig(SkBitmap::kARGB_8888_Config, W, H);
srcBM.allocPixels();
SkRect srcR = {
0, 0, SkIntToScalar(srcBM.width()), SkIntToScalar(srcBM.height()) };
// cons up a mesh to draw the bitmap with
Mesh mesh(srcBM, &paint);
for (size_t i = 0; i < SK_ARRAY_COUNT(gDstConfig); i++) {
SkBitmap dstBM0, dstBM1;
dstBM0.setConfig(gDstConfig[i], W, H);
dstBM1.setConfig(gDstConfig[i], W, H);
dstBM0.allocPixels();
dstBM1.allocPixels();
SkCanvas canvas0(dstBM0);
SkCanvas canvas1(dstBM1);
SkColor bgColor;
for (size_t j = 0; j < SK_ARRAY_COUNT(gDstBG); j++) {
bgColor = gDstBG[j];
for (int c = 0; c <= 0xFF; c++) {
srcBM.eraseARGB(0xFF, c, c, c);
for (int k = 0; k < 4; k++) {
bool dither = (k & 1) != 0;
uint8_t alpha = (k & 2) ? 0x80 : 0xFF;
paint.setDither(dither);
paint.setAlpha(alpha);
dstBM0.eraseColor(bgColor);
dstBM1.eraseColor(bgColor);
canvas0.drawRect(srcR, paint);
mesh.draw(&canvas1, &paint);
if (!gOnce && false) {
save_bm(dstBM0, "drawBitmap.png");
save_bm(dstBM1, "drawMesh.png");
gOnce = true;
}
if (memcmp(dstBM0.getPixels(), dstBM1.getPixels(), dstBM0.getSize())) {
SkString str;
str.printf("Diagonal config=%s bg=0x%x dither=%d alpha=0x%x src=0x%x",
gConfigName[gDstConfig[i]], bgColor, dither, alpha, c);
reporter->reportFailed(str);
}
}
}
}
}
}