diff options
Diffstat (limited to 'experimental/SkiaExamples/SkExample.cpp')
-rw-r--r-- | experimental/SkiaExamples/SkExample.cpp | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/experimental/SkiaExamples/SkExample.cpp b/experimental/SkiaExamples/SkExample.cpp deleted file mode 100644 index 849c14b3ec..0000000000 --- a/experimental/SkiaExamples/SkExample.cpp +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright 2013 Google Inc. - * - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - * - */ - -#include "SkExample.h" - -#include "gl/GrGLInterface.h" -#include "SkApplication.h" -#include "SkCanvas.h" -#include "SkGradientShader.h" -#include "SkGraphics.h" -#include "SkGr.h" - -void application_init() { - SkGraphics::Init(); - SkEvent::Init(); -} - -void application_term() { - SkEvent::Term(); - SkGraphics::Term(); -} - -SkExampleWindow::SkExampleWindow(void* hwnd) - : INHERITED(hwnd) { - fType = SkExampleWindow::kGPU_DeviceType; - fRenderTarget = NULL; - fRotationAngle = 0; - this->setTitle(); - this->setUpBackend(); -} - -SkExampleWindow::~SkExampleWindow() { - tearDownBackend(); -} - -void SkExampleWindow::tearDownBackend() { - SkSafeUnref(fContext); - fContext = NULL; - - SkSafeUnref(fInterface); - fInterface = NULL; - - SkSafeUnref(fRenderTarget); - fRenderTarget = NULL; - - INHERITED::detach(); -} - -void SkExampleWindow::setTitle() { - SkString title("SkiaExample "); - title.appendf(fType == kRaster_DeviceType ? "raster" : "opengl"); - INHERITED::setTitle(title.c_str()); -} - -bool SkExampleWindow::setUpBackend() { - this->setColorType(kRGBA_8888_SkColorType); - this->setVisibleP(true); - this->setClipToBounds(false); - - bool result = attach(kNativeGL_BackEndType, 0 /*msaa*/, &fAttachmentInfo); - if (false == result) { - SkDebugf("Not possible to create backend.\n"); - detach(); - return false; - } - - fInterface = GrGLCreateNativeInterface(); - - SkASSERT(NULL != fInterface); - - fContext = GrContext::Create(kOpenGL_GrBackend, (GrBackendContext)fInterface); - SkASSERT(NULL != fContext); - - this->setUpRenderTarget(); - return true; -} - -void SkExampleWindow::setUpRenderTarget() { - SkSafeUnref(fRenderTarget); - fRenderTarget = this->renderTarget(fAttachmentInfo, fInterface, fContext); -} - -void SkExampleWindow::drawContents(SkCanvas* canvas) { - // Clear background - canvas->drawColor(SK_ColorWHITE); - - SkPaint paint; - paint.setColor(SK_ColorRED); - - // Draw a rectangle with red paint - SkRect rect = { - 10, 10, - 128, 128 - }; - canvas->drawRect(rect, paint); - - // Set up a linear gradient and draw a circle - { - SkPoint linearPoints[] = { - {0, 0}, - {300, 300} - }; - SkColor linearColors[] = {SK_ColorGREEN, SK_ColorBLACK}; - - SkShader* shader = SkGradientShader::CreateLinear( - linearPoints, linearColors, NULL, 2, - SkShader::kMirror_TileMode); - SkAutoUnref shader_deleter(shader); - - paint.setShader(shader); - paint.setFlags(SkPaint::kAntiAlias_Flag); - - canvas->drawCircle(200, 200, 64, paint); - - // Detach shader - paint.setShader(NULL); - } - - // Draw a message with a nice black paint. - paint.setFlags( - SkPaint::kAntiAlias_Flag | - SkPaint::kSubpixelText_Flag | // ... avoid waggly text when rotating. - SkPaint::kUnderlineText_Flag); - paint.setColor(SK_ColorBLACK); - paint.setTextSize(20); - - canvas->save(); - - static const char message[] = "Hello Skia!!!"; - - // Translate and rotate - canvas->translate(300, 300); - fRotationAngle += 0.2f; - if (fRotationAngle > 360) { - fRotationAngle -= 360; - } - canvas->rotate(fRotationAngle); - - // Draw the text: - canvas->drawText(message, strlen(message), 0, 0, paint); - - canvas->restore(); -} - -void SkExampleWindow::draw(SkCanvas* canvas) { - drawContents(canvas); - // in case we have queued drawing calls - fContext->flush(); - // Invalidate the window to force a redraw. Poor man's animation mechanism. - this->inval(NULL); - - if (kRaster_DeviceType == fType) { - // need to send the raster bits to the (gpu) window - SkImage* snap = fSurface->newImageSnapshot(); - size_t rowBytes; - SkImageInfo info; - const void* pixels = snap->peekPixels(&info, &rowBytes); - fRenderTarget->writePixels(0, 0, snap->width(), snap->height(), - SkImageInfo2GrPixelConfig(info.colorType(), - info.alphaType(), - info.profileType()), - pixels, - rowBytes, - GrContext::kFlushWrites_PixelOp); - SkSafeUnref(snap); - } - INHERITED::present(); -} - -void SkExampleWindow::onSizeChange() { - setUpRenderTarget(); -} - -bool SkExampleWindow::onHandleChar(SkUnichar unichar) { - if (' ' == unichar) { - fType = fType == kRaster_DeviceType ? kGPU_DeviceType: kRaster_DeviceType; - tearDownBackend(); - setUpBackend(); - this->setTitle(); - this->inval(NULL); - } - return true; -} - -SkOSWindow* create_sk_window(void* hwnd, int , char** ) { - return new SkExampleWindow(hwnd); -} |