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

Unified Diff: views/controls/tree/tree_view.cc

Issue 6879013: skia::PlatformCanvas is being deprecated. Going forward we will use gfx::Canvas wherever we need ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « views/controls/textfield/native_textfield_views.cc ('k') | views/drag_utils.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: views/controls/tree/tree_view.cc
===================================================================
--- views/controls/tree/tree_view.cc (revision 82144)
+++ views/controls/tree/tree_view.cc (working copy)
@@ -18,7 +18,6 @@
#include "ui/base/win/hwnd_util.h"
#include "ui/base/l10n/l10n_util_win.h"
#include "ui/gfx/canvas_skia.h"
-#include "ui/gfx/canvas_skia_paint.h"
#include "ui/gfx/favicon_size.h"
#include "ui/gfx/icon_util.h"
#include "ui/gfx/point.h"
@@ -700,9 +699,10 @@
// IDR_FOLDER_CLOSED if they aren't already.
if (model_images[i].width() != width ||
model_images[i].height() != height) {
- gfx::CanvasSkia canvas(width, height, false);
+ gfx::CanvasSkia canvas;
+ canvas.Init(width, height, false);
// Make the background completely transparent.
- canvas.drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode);
+ canvas.skia_canvas()->drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode);
// Draw our icons into this canvas.
int height_offset = (height - model_images[i].height()) / 2;
@@ -751,12 +751,22 @@
return 1;
case WM_PAINT: {
- gfx::CanvasSkiaPaint canvas(window);
- if (canvas.isEmpty())
+ PAINTSTRUCT ps = {0};
+ HDC window_dc = BeginPaint(window, &ps);
+
+ int width = ps.rcPaint.right - ps.rcPaint.left;
+ int height = ps.rcPaint.bottom - ps.rcPaint.top;
+ if ((width == 0) || (height == 0))
return 0;
- HDC dc = canvas.beginPlatformPaint();
+ // Create a bitmap to draw on.
+ HDC bitmap_dc = CreateCompatibleDC(window_dc);
+ HBITMAP bitmap = CreateCompatibleBitmap(window_dc, width, height);
+ HGDIOBJ default_obj = SelectObject(bitmap_dc, bitmap);
if (base::i18n::IsRTL()) {
+ // TODO(alokp): May not need this hack anymore since we are creating
+ // a compatible bitmap device context.
+
// gfx::CanvasSkia ends up configuring the DC with a mode of
// GM_ADVANCED. For some reason a graphics mode of ADVANCED triggers
// all the text to be mirrored when RTL. Set the mode back to COMPATIBLE
@@ -769,27 +779,38 @@
// transform still carry over when we set the mode.
XFORM xform = {0};
xform.eM11 = xform.eM22 = 1;
- SetWorldTransform(dc, &xform);
+ SetWorldTransform(bitmap_dc, &xform);
// Set the mode and layout.
- SetGraphicsMode(dc, GM_COMPATIBLE);
- SetLayout(dc, LAYOUT_RTL);
+ SetGraphicsMode(bitmap_dc, GM_COMPATIBLE);
+ SetLayout(bitmap_dc, LAYOUT_RTL);
// Transform the viewport such that the origin of the dc is that of
// the dirty region. This way when we invoke WM_PRINTCLIENT tree-view
// draws the dirty region at the origin of the DC so that when we
// copy the bits everything lines up nicely. Without this we end up
// copying the upper-left corner to the redraw region.
- SetViewportOrgEx(dc, -canvas.paintStruct().rcPaint.left,
- -canvas.paintStruct().rcPaint.top, NULL);
+ SetViewportOrgEx(bitmap_dc, -ps.rcPaint.left, -ps.rcPaint.top, NULL);
}
- SendMessage(window, WM_PRINTCLIENT, reinterpret_cast<WPARAM>(dc), 0);
+
+ SendMessage(window, WM_PRINTCLIENT,
+ reinterpret_cast<WPARAM>(bitmap_dc), 0);
+
if (base::i18n::IsRTL()) {
// Reset the origin of the dc back to 0. This way when we copy the bits
// over we copy the right bits.
- SetViewportOrgEx(dc, 0, 0, NULL);
+ SetViewportOrgEx(bitmap_dc, 0, 0, NULL);
}
- canvas.endPlatformPaint();
+
+ // Copy the bitmap to window.
+ BitBlt(window_dc, ps.rcPaint.left, ps.rcPaint.top, width, height,
+ bitmap_dc, 0, 0, SRCCOPY);
+
+ // Cleanup.
+ SelectObject(bitmap_dc, default_obj);
+ DeleteDC(bitmap_dc);
+ DeleteObject(bitmap);
+ EndPaint(window, &ps);
return 0;
}
« no previous file with comments | « views/controls/textfield/native_textfield_views.cc ('k') | views/drag_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698