diff options
author | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-25 16:16:02 +0000 |
---|---|---|
committer | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-25 16:16:02 +0000 |
commit | f2d4c672b6d6b80e376cff979b1ec28864b73fb6 (patch) | |
tree | 679a4a8178438947f2775a6d1ba5540be99ce00c /webkit | |
parent | 49578ea329dae7f711ca1cde1ecade01e19a4f1b (diff) | |
download | chromium_src-f2d4c672b6d6b80e376cff979b1ec28864b73fb6.zip chromium_src-f2d4c672b6d6b80e376cff979b1ec28864b73fb6.tar.gz chromium_src-f2d4c672b6d6b80e376cff979b1ec28864b73fb6.tar.bz2 |
Revert 86625 - This change implements a first pass in the effort to remove the dependency of PlatformDevice within Chrome. The Skia library now provides multiple back-ends for the SkDevice class, so PlatformDevice's inheritance of SkDevice, and the assumption of instances of PlatformDevice limits the use of these new back-ends.
A new set of helper functions is provided for the PlatformDevice entry points. Upon construction of a PlatformDevice, a pointer to the interface is cached in the parent SkDevice's SkMetaData. The new helper functions forward calls to the interface cached in the metadata.
BUG=NONE
TEST=NONE
Review URL: http://codereview.chromium.org/7019013
TBR=twiz@chromium.org
Review URL: http://codereview.chromium.org/6987019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86629 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r-- | webkit/glue/webkit_glue.cc | 2 | ||||
-rw-r--r-- | webkit/glue/webmediaplayer_impl.cc | 4 | ||||
-rw-r--r-- | webkit/plugins/npapi/webplugin_delegate_impl_gtk.cc | 4 | ||||
-rw-r--r-- | webkit/plugins/npapi/webplugin_delegate_impl_win.cc | 4 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppapi_plugin_instance.cc | 4 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppb_image_data_impl.cc | 4 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppb_pdf_impl.cc | 2 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppb_scrollbar_impl.cc | 4 | ||||
-rw-r--r-- | webkit/plugins/sad_plugin.cc | 5 | ||||
-rw-r--r-- | webkit/tools/test_shell/mac/webwidget_host.mm | 6 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_shell_webthemecontrol.cc | 9 | ||||
-rw-r--r-- | webkit/tools/test_shell/webwidget_host_gtk.cc | 3 | ||||
-rw-r--r-- | webkit/tools/test_shell/webwidget_host_win.cc | 10 |
13 files changed, 32 insertions, 29 deletions
diff --git a/webkit/glue/webkit_glue.cc b/webkit/glue/webkit_glue.cc index 6e43e8b88..1593c35 100644 --- a/webkit/glue/webkit_glue.cc +++ b/webkit/glue/webkit_glue.cc @@ -403,7 +403,7 @@ WebCanvas* ToWebCanvas(skia::PlatformCanvas* canvas) { #if WEBKIT_USING_SKIA return canvas; #elif WEBKIT_USING_CG - return skia::GetBitmapContext(skia::GetTopDevice(*canvas)); + return canvas->getTopPlatformDevice().GetBitmapContext(); #else NOTIMPLEMENTED(); return NULL; diff --git a/webkit/glue/webmediaplayer_impl.cc b/webkit/glue/webmediaplayer_impl.cc index a8fe341..8b83468 100644 --- a/webkit/glue/webmediaplayer_impl.cc +++ b/webkit/glue/webmediaplayer_impl.cc @@ -687,8 +687,8 @@ void WebMediaPlayerImpl::paint(WebCanvas* canvas, // Copy the frame rendered to our temporary skia canvas onto the passed in // canvas. - skia::DrawToNativeContext(skia_canvas_.get(), canvas, 0, 0, - &normalized_cgrect); + skia_canvas_->getTopPlatformDevice().DrawToContext(canvas, 0, 0, + &normalized_cgrect); CGContextRestoreGState(canvas); #else diff --git a/webkit/plugins/npapi/webplugin_delegate_impl_gtk.cc b/webkit/plugins/npapi/webplugin_delegate_impl_gtk.cc index 7e2f584..dc34edb 100644 --- a/webkit/plugins/npapi/webplugin_delegate_impl_gtk.cc +++ b/webkit/plugins/npapi/webplugin_delegate_impl_gtk.cc @@ -111,9 +111,9 @@ void WebPluginDelegateImpl::Paint(WebKit::WebCanvas* canvas, const gfx::Rect& rect) { if (!windowless_) return; - skia::ScopedPlatformPaint scoped_platform_paint(canvas); - cairo_t* context = scoped_platform_paint.GetPlatformSurface(); + cairo_t* context = skia::BeginPlatformPaint(canvas); WindowlessPaint(context, rect); + skia::EndPlatformPaint(canvas); } void WebPluginDelegateImpl::InstallMissingPlugin() { diff --git a/webkit/plugins/npapi/webplugin_delegate_impl_win.cc b/webkit/plugins/npapi/webplugin_delegate_impl_win.cc index 0b4b7ee..c055773 100644 --- a/webkit/plugins/npapi/webplugin_delegate_impl_win.cc +++ b/webkit/plugins/npapi/webplugin_delegate_impl_win.cc @@ -465,9 +465,9 @@ void WebPluginDelegateImpl::PlatformDestroyInstance() { void WebPluginDelegateImpl::Paint(WebKit::WebCanvas* canvas, const gfx::Rect& rect) { if (windowless_) { - skia::ScopedPlatformPaint scoped_platform_paint(canvas); - HDC hdc = scoped_platform_paint.GetPlatformSurface(); + HDC hdc = skia::BeginPlatformPaint(canvas); WindowlessPaint(hdc, rect); + skia::EndPlatformPaint(canvas); } } diff --git a/webkit/plugins/ppapi/ppapi_plugin_instance.cc b/webkit/plugins/ppapi/ppapi_plugin_instance.cc index a8cd049..0da964a 100644 --- a/webkit/plugins/ppapi/ppapi_plugin_instance.cc +++ b/webkit/plugins/ppapi/ppapi_plugin_instance.cc @@ -1466,8 +1466,7 @@ bool PluginInstance::DrawJPEGToPlatformDC( return false; } - skia::ScopedPlatformPaint scoped_platform_paint(canvas); - HDC dc = scoped_platform_paint.GetPlatformSurface(); + HDC dc = skia::BeginPlatformPaint(canvas); // TODO(sanjeevr): This is a temporary hack. If we output a JPEG // to the EMF, the EnumEnhMetaFile call fails in the browser // process. The failure also happens if we output nothing here. @@ -1486,6 +1485,7 @@ bool PluginInstance::DrawJPEGToPlatformDC( &compressed_image.front(), reinterpret_cast<const BITMAPINFO*>(&bmi), DIB_RGB_COLORS, SRCCOPY); + skia::EndPlatformPaint(canvas); return true; } #endif // OS_WIN diff --git a/webkit/plugins/ppapi/ppb_image_data_impl.cc b/webkit/plugins/ppapi/ppb_image_data_impl.cc index 2f722e0..9f5c15c 100644 --- a/webkit/plugins/ppapi/ppb_image_data_impl.cc +++ b/webkit/plugins/ppapi/ppb_image_data_impl.cc @@ -106,7 +106,7 @@ void* PPB_ImageData_Impl::Map() { return NULL; } const SkBitmap& bitmap = - skia::GetTopDevice(*mapped_canvas_)->accessBitmap(true); + mapped_canvas_->getTopPlatformDevice().accessBitmap(true); // Our platform bitmaps are set to opaque by default, which we don't want. const_cast<SkBitmap&>(bitmap).setIsOpaque(false); @@ -129,7 +129,7 @@ int PPB_ImageData_Impl::GetSharedMemoryHandle(uint32* byte_count) const { const SkBitmap* PPB_ImageData_Impl::GetMappedBitmap() const { if (!mapped_canvas_.get()) return NULL; - return &skia::GetTopDevice(*mapped_canvas_)->accessBitmap(false); + return &mapped_canvas_->getTopPlatformDevice().accessBitmap(false); } void PPB_ImageData_Impl::Swap(PPB_ImageData_Impl* other) { diff --git a/webkit/plugins/ppapi/ppb_pdf_impl.cc b/webkit/plugins/ppapi/ppb_pdf_impl.cc index a8be7cd..f58b823 100644 --- a/webkit/plugins/ppapi/ppb_pdf_impl.cc +++ b/webkit/plugins/ppapi/ppb_pdf_impl.cc @@ -153,7 +153,7 @@ PP_Resource GetResourceImage(PP_Instance instance_id, skia::PlatformCanvas* canvas = image_data->mapped_canvas(); SkBitmap& ret_bitmap = - const_cast<SkBitmap&>(skia::GetTopDevice(*canvas)->accessBitmap(true)); + const_cast<SkBitmap&>(canvas->getTopPlatformDevice().accessBitmap(true)); if (!res_bitmap->copyTo(&ret_bitmap, SkBitmap::kARGB_8888_Config, NULL)) { return 0; } diff --git a/webkit/plugins/ppapi/ppb_scrollbar_impl.cc b/webkit/plugins/ppapi/ppb_scrollbar_impl.cc index 3820cca..904c804 100644 --- a/webkit/plugins/ppapi/ppb_scrollbar_impl.cc +++ b/webkit/plugins/ppapi/ppb_scrollbar_impl.cc @@ -178,8 +178,8 @@ bool PPB_Scrollbar_Impl::Paint(const PP_Rect* rect, PPB_ImageData_Impl* image) { #if defined(OS_WIN) if (base::win::GetVersion() == base::win::VERSION_XP) { - skia::MakeOpaque(canvas, gfx_rect.x(), gfx_rect.y(), - gfx_rect.width(), gfx_rect.height()); + canvas->getTopPlatformDevice().makeOpaque( + gfx_rect.x(), gfx_rect.y(), gfx_rect.width(), gfx_rect.height()); } #endif diff --git a/webkit/plugins/sad_plugin.cc b/webkit/plugins/sad_plugin.cc index b85d48a..c129d34 100644 --- a/webkit/plugins/sad_plugin.cc +++ b/webkit/plugins/sad_plugin.cc @@ -38,10 +38,9 @@ void PaintSadPlugin(WebKit::WebCanvas* webcanvas, // then copy that to the screen than to use the native APIs. The small speed // penalty is not important when drawing crashed plugins. #if WEBKIT_USING_SKIA - skia::ScopedPlatformPaint scoped_platform_paint(webcanvas); - gfx::NativeDrawingContext context = - scoped_platform_paint.GetPlatformSurface(); + gfx::NativeDrawingContext context = skia::BeginPlatformPaint(webcanvas); BlitCanvasToContext(context, plugin_rect, &canvas, gfx::Point(0, 0)); + skia::EndPlatformPaint(webcanvas); #elif WEBKIT_USING_CG BlitCanvasToContext(webcanvas, plugin_rect, &canvas, gfx::Point(0, 0)); #endif diff --git a/webkit/tools/test_shell/mac/webwidget_host.mm b/webkit/tools/test_shell/mac/webwidget_host.mm index 7610644..7677dbf 100644 --- a/webkit/tools/test_shell/mac/webwidget_host.mm +++ b/webkit/tools/test_shell/mac/webwidget_host.mm @@ -179,7 +179,7 @@ void WebWidgetHost::Paint() { // make sure webkit draws into our bitmap, not the window CGContextRef bitmap_context = - skia::GetBitmapContext(skia::GetTopDevice(*canvas_)); + canvas_->getTopPlatformDevice().GetBitmapContext(); [NSGraphicsContext setCurrentContext: [NSGraphicsContext graphicsContextWithGraphicsPort:bitmap_context flipped:YES]]; @@ -221,8 +221,8 @@ void WebWidgetHost::Paint() { int bitmap_width = CGBitmapContextGetWidth(bitmap_context); CGRect bitmap_rect = { { 0, 0 }, { bitmap_width, bitmap_height } }; - skia::DrawToNativeContext(canvas_.get(), context, 0, - client_rect.height() - bitmap_height, &bitmap_rect); + canvas_->getTopPlatformDevice().DrawToContext( + context, 0, client_rect.height() - bitmap_height, &bitmap_rect); [view_ unlockFocus]; } diff --git a/webkit/tools/test_shell/test_shell_webthemecontrol.cc b/webkit/tools/test_shell/test_shell_webthemecontrol.cc index 25cd94f..08ca901 100644 --- a/webkit/tools/test_shell/test_shell_webthemecontrol.cc +++ b/webkit/tools/test_shell/test_shell_webthemecontrol.cc @@ -246,7 +246,7 @@ void Control::draw() { // Indents for the the slider track. const int kSliderIndent = 2; - skia::ScopedPlatformPaint scoped_platform_paint(canvas_); + skia::BeginPlatformPaint(canvas_); switch (type_) { case kUnknown_Type: NOTREACHED(); @@ -391,6 +391,7 @@ void Control::draw() { } markState(); + skia::EndPlatformPaint(canvas_); } // Because rendering a text field is dependent on input @@ -400,7 +401,7 @@ void Control::drawTextField(bool draw_edges, bool fill_content_area, SkColor color) { SkPaint paint; - skia::ScopedPlatformPaint scoped_platform_paint(canvas_); + skia::BeginPlatformPaint(canvas_); if (fill_content_area) { paint.setColor(color); paint.setStyle(SkPaint::kFill_Style); @@ -413,13 +414,14 @@ void Control::drawTextField(bool draw_edges, bool fill_content_area, } markState(); + skia::EndPlatformPaint(canvas_); } void Control::drawProgressBar(const SkIRect& fill_rect) { SkPaint paint; - skia::ScopedPlatformPaint scoped_platform_paint(canvas_); + skia::BeginPlatformPaint(canvas_); paint.setColor(bg_color_); paint.setStyle(SkPaint::kFill_Style); canvas_->drawIRect(irect_, paint); @@ -432,6 +434,7 @@ Control::drawProgressBar(const SkIRect& fill_rect) { canvas_->drawIRect(tofill, paint); markState(); + skia::EndPlatformPaint(canvas_); } } // namespace TestShellWebTheme diff --git a/webkit/tools/test_shell/webwidget_host_gtk.cc b/webkit/tools/test_shell/webwidget_host_gtk.cc index b16ea3b..bab38b3 100644 --- a/webkit/tools/test_shell/webwidget_host_gtk.cc +++ b/webkit/tools/test_shell/webwidget_host_gtk.cc @@ -402,8 +402,7 @@ void WebWidgetHost::Paint() { gdk_window_begin_paint_rect(window, &grect); // BitBlit to the gdk window. - skia::ScopedPlatformPaint scoped_platform_paint(canvas_.get()); - cairo_t* source_surface = scoped_platform_paint.GetPlatformSurface(); + cairo_t* source_surface = canvas_->beginPlatformPaint(); cairo_t* cairo_drawable = gdk_cairo_create(window); cairo_set_source_surface(cairo_drawable, cairo_get_target(source_surface), 0, 0); diff --git a/webkit/tools/test_shell/webwidget_host_win.cc b/webkit/tools/test_shell/webwidget_host_win.cc index 005c888..17d5ae1 100644 --- a/webkit/tools/test_shell/webwidget_host_win.cc +++ b/webkit/tools/test_shell/webwidget_host_win.cc @@ -251,13 +251,13 @@ void WebWidgetHost::Paint() { // Scroll the canvas if necessary scroll_rect_ = client_rect.Intersect(scroll_rect_); if (!scroll_rect_.IsEmpty()) { - skia::ScopedPlatformPaint scoped_platform_paint(canvas_.get()); - HDC hdc = scoped_platform_paint.GetPlatformSurface(); + HDC hdc = canvas_->beginPlatformPaint(); RECT damaged_rect, r = scroll_rect_.ToRECT(); ScrollDC(hdc, scroll_dx_, scroll_dy_, NULL, &r, NULL, &damaged_rect); PaintRect(gfx::Rect(damaged_rect)); + canvas_->endPlatformPaint(); } ResetScrollRect(); @@ -279,8 +279,10 @@ void WebWidgetHost::Paint() { // Paint to the screen PAINTSTRUCT ps; BeginPaint(view_, &ps); - skia::DrawToNativeContext(canvas_.get(), ps.hdc, ps.rcPaint.left, - ps.rcPaint.top, &ps.rcPaint); + canvas_->getTopPlatformDevice().drawToHDC(ps.hdc, + ps.rcPaint.left, + ps.rcPaint.top, + &ps.rcPaint); EndPaint(view_, &ps); // Draw children |