| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2013 Google Inc. | 3 * Copyright 2013 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 #include "ppapi/cpp/completion_callback.h" | 9 #include "ppapi/cpp/completion_callback.h" |
| 10 #include "ppapi/cpp/graphics_2d.h" | 10 #include "ppapi/cpp/graphics_2d.h" |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 SkiaInstance* gPluginInstance; | 30 SkiaInstance* gPluginInstance; |
| 31 | 31 |
| 32 void FlushCallback(void* data, int32_t result); | 32 void FlushCallback(void* data, int32_t result); |
| 33 | 33 |
| 34 // Skia's subclass of pp::Instance, our interface with the browser. | 34 // Skia's subclass of pp::Instance, our interface with the browser. |
| 35 class SkiaInstance : public pp::Instance { | 35 class SkiaInstance : public pp::Instance { |
| 36 public: | 36 public: |
| 37 explicit SkiaInstance(PP_Instance instance) | 37 explicit SkiaInstance(PP_Instance instance) |
| 38 : pp::Instance(instance) | 38 : pp::Instance(instance) |
| 39 , fCanvas(NULL) | 39 , fCanvas(NULL) |
| 40 , fPicture(NULL) | |
| 41 , fFlushLoopRunning(false) | 40 , fFlushLoopRunning(false) |
| 42 , fFlushPending(false) | 41 , fFlushPending(false) |
| 43 | 42 |
| 44 { | 43 { |
| 45 gPluginInstance = this; | 44 gPluginInstance = this; |
| 46 SkGraphics::Init(); | 45 SkGraphics::Init(); |
| 47 } | 46 } |
| 48 | 47 |
| 49 virtual ~SkiaInstance() { | 48 virtual ~SkiaInstance() { |
| 50 SkGraphics::Term(); | 49 SkGraphics::Term(); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 61 size_t dataSize = msg.size()/sizeof(char) - startIndex; | 60 size_t dataSize = msg.size()/sizeof(char) - startIndex; |
| 62 SkBase64 decodedData; | 61 SkBase64 decodedData; |
| 63 decodedData.decode(msg.c_str() + startIndex, dataSize); | 62 decodedData.decode(msg.c_str() + startIndex, dataSize); |
| 64 size_t decodedSize = 3 * (dataSize / 4); | 63 size_t decodedSize = 3 * (dataSize / 4); |
| 65 SkDebugf("Got size: %d\n", decodedSize); | 64 SkDebugf("Got size: %d\n", decodedSize); |
| 66 if (!decodedData.getData()) { | 65 if (!decodedData.getData()) { |
| 67 SkDebugf("Failed to decode SKP\n"); | 66 SkDebugf("Failed to decode SKP\n"); |
| 68 return; | 67 return; |
| 69 } | 68 } |
| 70 SkMemoryStream pictureStream(decodedData.getData(), decodedSize)
; | 69 SkMemoryStream pictureStream(decodedData.getData(), decodedSize)
; |
| 71 fPicture = SkPicture::CreateFromStream(&pictureStream); | 70 SkPicture* picture = SkPicture::CreateFromStream(&pictureStream)
; |
| 72 if (fPicture->width() == 0 || fPicture->height() == 0) { | 71 if (NULL == picture) { |
| 73 SkDebugf("Failed to create SKP.\n"); | 72 SkDebugf("Failed to create SKP.\n"); |
| 74 return; | 73 return; |
| 75 } | 74 } |
| 76 fDebugger.loadPicture(fPicture); | 75 fDebugger.loadPicture(picture); |
| 76 picture->unref(); |
| 77 | 77 |
| 78 // Set up the command list. | 78 // Set up the command list. |
| 79 SkTArray<SkString>* commands = fDebugger.getDrawCommandsAsString
s(); | 79 SkTArray<SkString>* commands = fDebugger.getDrawCommandsAsString
s(); |
| 80 PostMessage("ClearCommands"); | 80 PostMessage("ClearCommands"); |
| 81 for (int i = 0; i < commands->count(); ++i) { | 81 for (int i = 0; i < commands->count(); ++i) { |
| 82 SkString addCommand("AddCommand:"); | 82 SkString addCommand("AddCommand:"); |
| 83 addCommand.append((*commands)[i]); | 83 addCommand.append((*commands)[i]); |
| 84 PostMessage(addCommand.c_str()); | 84 PostMessage(addCommand.c_str()); |
| 85 } | 85 } |
| 86 PostMessage("UpdateCommands"); | 86 PostMessage("UpdateCommands"); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 | 187 |
| 188 private: | 188 private: |
| 189 pp::Graphics2D fDeviceContext; | 189 pp::Graphics2D fDeviceContext; |
| 190 pp::ImageData fImage; | 190 pp::ImageData fImage; |
| 191 int fWidth; | 191 int fWidth; |
| 192 int fHeight; | 192 int fHeight; |
| 193 | 193 |
| 194 SkBitmap fBitmap; | 194 SkBitmap fBitmap; |
| 195 SkCanvas* fCanvas; | 195 SkCanvas* fCanvas; |
| 196 SkDebugger fDebugger; | 196 SkDebugger fDebugger; |
| 197 SkPicture* fPicture; | |
| 198 | 197 |
| 199 bool fFlushLoopRunning; | 198 bool fFlushLoopRunning; |
| 200 bool fFlushPending; | 199 bool fFlushPending; |
| 201 }; | 200 }; |
| 202 | 201 |
| 203 void FlushCallback(void* data, int32_t result) { | 202 void FlushCallback(void* data, int32_t result) { |
| 204 static_cast<SkiaInstance*>(data)->OnFlush(); | 203 static_cast<SkiaInstance*>(data)->OnFlush(); |
| 205 } | 204 } |
| 206 | 205 |
| 207 class SkiaModule : public pp::Module { | 206 class SkiaModule : public pp::Module { |
| 208 public: | 207 public: |
| 209 SkiaModule() : pp::Module() {} | 208 SkiaModule() : pp::Module() {} |
| 210 virtual ~SkiaModule() {} | 209 virtual ~SkiaModule() {} |
| 211 | 210 |
| 212 virtual pp::Instance* CreateInstance(PP_Instance instance) { | 211 virtual pp::Instance* CreateInstance(PP_Instance instance) { |
| 213 return new SkiaInstance(instance); | 212 return new SkiaInstance(instance); |
| 214 } | 213 } |
| 215 }; | 214 }; |
| 216 | 215 |
| 217 namespace pp { | 216 namespace pp { |
| 218 Module* CreateModule() { | 217 Module* CreateModule() { |
| 219 return new SkiaModule(); | 218 return new SkiaModule(); |
| 220 } | 219 } |
| 221 } // namespace pp | 220 } // namespace pp |
| OLD | NEW |