diff options
author | scroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-07-02 13:35:09 +0000 |
---|---|---|
committer | scroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-07-02 13:35:09 +0000 |
commit | 4f1f6bf0505b80e14c2f3d7299d4ae565fdd1e3a (patch) | |
tree | cc68e896b04ef1cd29f4e587fe26ebd299ccfc22 /samplecode | |
parent | 366f1c6a09f63c76e78145cb08028f66062f31fd (diff) |
Properly handle extracted bitmaps in cross process/shared addr space SkGPipe.
Use the pixel ref which we have already copied and the appropriate pixel ref
offset.
Turn SampleDrawBitmap into a GM to test this functionality.
Review URL: https://codereview.appspot.com/6348059
git-svn-id: http://skia.googlecode.com/svn/trunk@4417 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'samplecode')
-rw-r--r-- | samplecode/SampleDrawBitmap.cpp | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/samplecode/SampleDrawBitmap.cpp b/samplecode/SampleDrawBitmap.cpp deleted file mode 100644 index aaf112346b..0000000000 --- a/samplecode/SampleDrawBitmap.cpp +++ /dev/null @@ -1,84 +0,0 @@ - -/* - * 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 "SampleCode.h" -#include "SkView.h" -#include "SkCanvas.h" -#include "SkShader.h" -#include "SkUtils.h" -#include "SkDevice.h" - -static void create_bitmap(SkBitmap* bitmap) { - const int W = 100; - const int H = 100; - bitmap->setConfig(SkBitmap::kARGB_8888_Config, W, H); - bitmap->allocPixels(); - - 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 DrawBitmapView : public SampleView { - SkPath fPath; -public: - DrawBitmapView() {} - -protected: - // overrides from SkEventSink - virtual bool onQuery(SkEvent* evt) { - if (SampleCode::TitleQ(*evt)) { - SampleCode::TitleR(evt, "DrawBitmap"); - return true; - } - return this->INHERITED::onQuery(evt); - } - - virtual void onDrawContent(SkCanvas* canvas) { - 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->drawBitmap(bitmap, 0, 0); - canvas->drawBitmap(subset, 0, 0); - - // Now do the same but with a device bitmap as source image - SkRefPtr<SkDevice> primaryDevice(canvas->getDevice()); - SkRefPtr<SkDevice> secondDevice(canvas->createCompatibleDevice( - SkBitmap::kARGB_8888_Config, bitmap.width(), - bitmap.height(), true)); - secondDevice->unref(); - SkCanvas secondCanvas(secondDevice.get()); - secondCanvas.writePixels(bitmap, 0, 0); - - SkBitmap deviceBitmap = secondDevice->accessBitmap(false); - SkBitmap deviceSubset; - deviceBitmap.extractSubset(&deviceSubset, - SkIRect::MakeXYWH(x, y, x, y)); - - canvas->translate(SkIntToScalar(120), SkIntToScalar(0)); - - canvas->drawBitmap(deviceBitmap, 0, 0); - canvas->drawBitmap(deviceSubset, 0, 0); - - } - -private: - typedef SampleView INHERITED; -}; - -////////////////////////////////////////////////////////////////////////////// - -static SkView* MyFactory() { return new DrawBitmapView; } -static SkViewRegister reg(MyFactory); |