aosp12/external/skia/samplecode/SampleWritePixels.cpp

59 lines
1.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.
*/
#include "include/core/SkBitmap.h"
#include "include/core/SkCanvas.h"
#include "include/core/SkPath.h"
#include "include/core/SkRegion.h"
#include "include/core/SkShader.h"
#include "include/effects/SkCornerPathEffect.h"
#include "include/effects/SkGradientShader.h"
#include "samplecode/Sample.h"
#include "src/utils/SkUTF.h"
static void create_bitmap(SkBitmap* bitmap) {
const int W = 100;
const int H = 100;
bitmap->allocN32Pixels(W, H);
SkCanvas canvas(*bitmap);
canvas.drawColor(SK_ColorRED);
SkPaint paint;
paint.setColor(SK_ColorBLUE);
canvas.drawCircle(SkIntToScalar(W)/2, SkIntToScalar(H)/2, SkIntToScalar(W)/2, paint);
}
class WritePixelsView : public Sample {
SkPath fPath;
public:
WritePixelsView() {}
protected:
SkString name() override { return SkString("WritePixels"); }
void onDrawContent(SkCanvas* canvas) override {
SkBitmap bitmap;
create_bitmap(&bitmap);
int x = bitmap.width() / 2;
int y = bitmap.height() / 2;
SkBitmap subset;
bitmap.extractSubset(&subset, SkIRect::MakeXYWH(x, y, x, y));
canvas->translate(SkIntToScalar(20), SkIntToScalar(20));
canvas->writePixels(bitmap, 0, 0);
canvas->writePixels(subset, 0, 0);
}
private:
using INHERITED = Sample;
};
//////////////////////////////////////////////////////////////////////////////
DEF_SAMPLE( return new WritePixelsView(); )