| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 SkPoint grad_points[2]; | 217 SkPoint grad_points[2]; |
| 218 grad_points[0].set(SkIntToScalar(0), SkIntToScalar(0)); | 218 grad_points[0].set(SkIntToScalar(0), SkIntToScalar(0)); |
| 219 grad_points[1].set(SkIntToScalar(0), SkIntToScalar(height)); | 219 grad_points[1].set(SkIntToScalar(0), SkIntToScalar(height)); |
| 220 paint.setShader(SkGradientShader::CreateLinear( | 220 paint.setShader(SkGradientShader::CreateLinear( |
| 221 grad_points, grad_colors, NULL, 2, SkShader::kRepeat_TileMode)) | 221 grad_points, grad_colors, NULL, 2, SkShader::kRepeat_TileMode)) |
| 222 ->safeUnref(); | 222 ->safeUnref(); |
| 223 | 223 |
| 224 canvas.drawPath(path, paint); | 224 canvas.drawPath(path, paint); |
| 225 } | 225 } |
| 226 | 226 |
| 227 NPPepperExtensions* pepper = NULL; | 227 void FlushCallback(NPP instance, NPDeviceContext* context, |
| 228 NPError err, void* user_data) { |
| 229 } |
| 228 | 230 |
| 229 void FlushCallback(NPRenderContext* context, void* user_data) { | 231 NPExtensions* extensions = NULL; |
| 230 } | |
| 231 | 232 |
| 232 } // namespace | 233 } // namespace |
| 233 | 234 |
| 234 | 235 |
| 235 // PluginObject ---------------------------------------------------------------- | 236 // PluginObject ---------------------------------------------------------------- |
| 236 | 237 |
| 237 PluginObject::PluginObject(NPP npp) | 238 PluginObject::PluginObject(NPP npp) |
| 238 : npp_(npp), | 239 : npp_(npp), |
| 239 test_object_(browser->createobject(npp, GetTestClass())) { | 240 test_object_(browser->createobject(npp, GetTestClass())), |
| 240 if (!pepper) { | 241 device2d_(NULL) { |
| 242 if (!extensions) { |
| 241 browser->getvalue(npp_, NPNVPepperExtensions, | 243 browser->getvalue(npp_, NPNVPepperExtensions, |
| 242 reinterpret_cast<void*>(&pepper)); | 244 reinterpret_cast<void*>(&extensions)); |
| 243 CHECK(pepper); | 245 CHECK(extensions); |
| 244 } | 246 } |
| 247 device2d_ = extensions->acquireDevice(npp, NPPepper2DDevice); |
| 248 CHECK(device2d_); |
| 245 } | 249 } |
| 246 | 250 |
| 247 PluginObject::~PluginObject() { | 251 PluginObject::~PluginObject() { |
| 252 // FIXME(brettw) destroy the context. |
| 248 browser->releaseobject(test_object_); | 253 browser->releaseobject(test_object_); |
| 249 } | 254 } |
| 250 | 255 |
| 251 // static | 256 // static |
| 252 NPClass* PluginObject::GetPluginClass() { | 257 NPClass* PluginObject::GetPluginClass() { |
| 253 return &plugin_class; | 258 return &plugin_class; |
| 254 } | 259 } |
| 255 | 260 |
| 256 void PluginObject::SetWindow(const NPWindow& window) { | 261 void PluginObject::SetWindow(const NPWindow& window) { |
| 257 // File test | |
| 258 /* TODO(brettw): remove this when the file stuff is complete. This code is for | |
| 259 testing the OpenFileInSandbox function which is not complete. | |
| 260 { | |
| 261 void* handle = (void*)112358; | |
| 262 NPError err = pepper->openFile(npp_, | |
| 263 "q:\\prj\\src2\\src\\webkit\\tools\\pepper_test_plugin\\README", | |
| 264 &handle); | |
| 265 CHECK(err == NPERR_NO_ERROR); | |
| 266 | |
| 267 char buf[256]; | |
| 268 sprintf(buf, "Got the handle %d", (int)handle); | |
| 269 ::MessageBoxA(NULL, buf, "pepper", 0); | |
| 270 }*/ | |
| 271 | |
| 272 size_.set_width(window.width); | 262 size_.set_width(window.width); |
| 273 size_.set_height(window.height); | 263 size_.set_height(window.height); |
| 274 | 264 |
| 275 NPRenderContext context; | 265 NPDeviceContext2DConfig config; |
| 276 pepper->initializeRender(npp_, NPRenderGraphicsRGBA, &context); | 266 NPDeviceContext2D context; |
| 267 device2d_->initializeContext(npp_, &config, &context); |
| 277 | 268 |
| 278 SkBitmap bitmap; | 269 SkBitmap bitmap; |
| 279 bitmap.setConfig(SkBitmap::kARGB_8888_Config, window.width, window.height); | 270 bitmap.setConfig(SkBitmap::kARGB_8888_Config, window.width, window.height); |
| 280 bitmap.setPixels(context.u.graphicsRgba.region); | 271 bitmap.setPixels(context.u.graphicsRgba.region); |
| 281 | 272 |
| 282 SkCanvas canvas(bitmap); | 273 SkCanvas canvas(bitmap); |
| 283 DrawSampleBitmap(canvas, window.width, window.height); | 274 DrawSampleBitmap(canvas, window.width, window.height); |
| 284 | 275 |
| 285 // TODO(brettw) figure out why this cast is necessary, the functions seem to | 276 // TODO(brettw) figure out why this cast is necessary, the functions seem to |
| 286 // match. Could be a calling convention mismatch? | 277 // match. Could be a calling convention mismatch? |
| 287 NPFlushRenderContextCallbackPtr callback = | 278 NPDeviceFlushContextCallbackPtr callback = |
| 288 reinterpret_cast<NPFlushRenderContextCallbackPtr>(&FlushCallback); | 279 reinterpret_cast<NPDeviceFlushContextCallbackPtr>(&FlushCallback); |
| 289 pepper->flushRender(npp_, &context, callback, NULL); | 280 device2d_->flushContext(npp_, &context, callback, NULL); |
| 290 } | 281 } |
| OLD | NEW |