Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(233)

Side by Side Diff: platform_tools/nacl/src/nacl_hello.cpp

Issue 1036283002: Remove all code related to NaCl (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Rebase Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « platform_tools/nacl/src/nacl_debugger.cpp ('k') | platform_tools/nacl/src/nacl_interface.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1
2 /*
3 * Copyright 2013 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9 #include "ppapi/cpp/completion_callback.h"
10 #include "ppapi/cpp/graphics_2d.h"
11 #include "ppapi/cpp/image_data.h"
12 #include "ppapi/cpp/instance.h"
13 #include "ppapi/cpp/module.h"
14 #include "ppapi/cpp/point.h"
15 #include "ppapi/cpp/rect.h"
16 #include "ppapi/cpp/var.h"
17
18 #include "SkBitmap.h"
19 #include "SkCanvas.h"
20 #include "SkColor.h"
21 #include "SkGraphics.h"
22 #include "SkStream.h"
23 #include "SkString.h"
24
25 class SkiaInstance;
26
27 // Used by SkDebugf
28 SkiaInstance* gPluginInstance;
29
30 void FlushCallback(void* data, int32_t result);
31
32 static void doDraw(SkCanvas* canvas, const SkPaint& paint, const char text[]) {
33 canvas->drawColor(SK_ColorWHITE);
34 SkPaint red;
35 red.setColor(SK_ColorRED);
36 canvas->drawCircle(150.0, 150.0, 100.0, red);
37 SkRect bounds;
38 canvas->getClipBounds(&bounds);
39 canvas->drawText(text, strlen(text),
40 bounds.centerX(), bounds.centerY(),
41 paint);
42 }
43
44 // Skia's subclass of pp::Instance, our interface with the browser.
45 class SkiaInstance : public pp::Instance {
46 public:
47 explicit SkiaInstance(PP_Instance instance)
48 : pp::Instance(instance)
49 , fCanvas(NULL)
50 , fFlushLoopRunning(false)
51 , fFlushPending(false)
52 {
53 gPluginInstance = this;
54 SkGraphics::Init();
55 }
56
57 virtual ~SkiaInstance() {
58 SkGraphics::Term();
59 gPluginInstance = NULL;
60 }
61
62 virtual void HandleMessage(const pp::Var& var_message) {
63 // Receive a message from javascript.
64 }
65
66 void Paint() {
67 if (!fImage.is_null()) {
68 SkPaint paint;
69 paint.setAntiAlias(true);
70 paint.setTextSize(SkIntToScalar(30));
71 paint.setTextAlign(SkPaint::kCenter_Align);
72 doDraw(fCanvas, paint, "Hello");
73
74 fDeviceContext.PaintImageData(fImage, pp::Point(0, 0));
75 if (!fFlushPending) {
76 fFlushPending = true;
77 fDeviceContext.Flush(pp::CompletionCallback(&FlushCallback, this ));
78 } else {
79 SkDebugf("A flush is pending... Skipping flush.\n");
80 }
81 } else {
82 SkDebugf("No pixels to write to!\n");
83 }
84 }
85
86 virtual void DidChangeView(const pp::Rect& position, const pp::Rect& clip) {
87 if (position.size().width() == fWidth &&
88 position.size().height() == fHeight) {
89 return; // We don't care about the position, only the size.
90 }
91 fWidth = position.size().width();
92 fHeight = position.size().height();
93 fDeviceContext = pp::Graphics2D(this, pp::Size(fWidth, fHeight), false);
94 if (!BindGraphics(fDeviceContext)) {
95 SkDebugf("Couldn't bind the device context\n");
96 return;
97 }
98 fImage = pp::ImageData(this,
99 PP_IMAGEDATAFORMAT_BGRA_PREMUL,
100 pp::Size(fWidth, fHeight), false);
101 fBitmap.setConfig(SkBitmap::kARGB_8888_Config, fWidth, fHeight);
102 fBitmap.setPixels(fImage.data());
103 if (fCanvas) {
104 delete fCanvas;
105 }
106 fCanvas = new SkCanvas(fBitmap);
107 fCanvas->clear(SK_ColorWHITE);
108 if (!fFlushLoopRunning) {
109 Paint();
110 }
111 }
112
113 void OnFlush() {
114 fFlushLoopRunning = true;
115 fFlushPending = false;
116 Paint();
117 }
118
119 private:
120 pp::Graphics2D fDeviceContext;
121 pp::ImageData fImage;
122 int fWidth;
123 int fHeight;
124
125 SkBitmap fBitmap;
126 SkCanvas* fCanvas;
127
128 bool fFlushLoopRunning;
129 bool fFlushPending;
130 };
131
132 void FlushCallback(void* data, int32_t result) {
133 static_cast<SkiaInstance*>(data)->OnFlush();
134 }
135
136 class SkiaModule : public pp::Module {
137 public:
138 SkiaModule() : pp::Module() {}
139 virtual ~SkiaModule() {}
140
141 virtual pp::Instance* CreateInstance(PP_Instance instance) {
142 return new SkiaInstance(instance);
143 }
144 };
145
146 namespace pp {
147 Module* CreateModule() {
148 return new SkiaModule();
149 }
150 } // namespace pp
OLDNEW
« no previous file with comments | « platform_tools/nacl/src/nacl_debugger.cpp ('k') | platform_tools/nacl/src/nacl_interface.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698