diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-13 17:06:53 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-13 17:06:53 +0000 |
commit | 7f1fe3fad451d8809d94b19fca516a2a2134e38c (patch) | |
tree | 6954e9cf8f4bd15293f8088b4f1ae51ffd48b5bb /app | |
parent | 44df75248693160a9e677690f0a51e9ba3ce3b32 (diff) | |
download | chromium_src-7f1fe3fad451d8809d94b19fca516a2a2134e38c.zip chromium_src-7f1fe3fad451d8809d94b19fca516a2a2134e38c.tar.gz chromium_src-7f1fe3fad451d8809d94b19fca516a2a2134e38c.tar.bz2 |
Keep the cairo clipping region in sync with the Skia one.
The PlatformCanvas now tracks this, so we don't need to have the similar code
in gfx::Canvas. I moved most references of cairo_surface_t to cairo_t since the
cairo_t has a transform and clip but the surface does not.
Review URL: http://codereview.chromium.org/149409
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20499 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'app')
-rw-r--r-- | app/gfx/canvas_linux.cc | 21 |
1 files changed, 1 insertions, 20 deletions
diff --git a/app/gfx/canvas_linux.cc b/app/gfx/canvas_linux.cc index 7e561c6..cf7352d 100644 --- a/app/gfx/canvas_linux.cc +++ b/app/gfx/canvas_linux.cc @@ -95,29 +95,11 @@ void Canvas::SizeStringInt(const std::wstring& text, cairo_surface_destroy(surface); } -void Canvas::ApplySkiaMatrixToCairoContext(cairo_t* cr) { - const SkMatrix& skia_matrix = getTotalMatrix(); - cairo_matrix_t cairo_matrix; - cairo_matrix_init(&cairo_matrix, - SkScalarToFloat(skia_matrix.getScaleX()), - SkScalarToFloat(skia_matrix.getSkewY()), - SkScalarToFloat(skia_matrix.getSkewX()), - SkScalarToFloat(skia_matrix.getScaleY()), - SkScalarToFloat(skia_matrix.getTranslateX()), - SkScalarToFloat(skia_matrix.getTranslateY())); - cairo_set_matrix(cr, &cairo_matrix); -} - void Canvas::DrawStringInt(const std::wstring& text, const gfx::Font& font, const SkColor& color, int x, int y, int w, int h, int flags) { - cairo_surface_t* surface = beginPlatformPaint(); - cairo_t* cr = cairo_create(surface); - // We're going to draw onto the surface directly. This circumvents the matrix - // installed by Skia. Apply the matrix from skia to cairo so they align and - // we draw at the right place. - ApplySkiaMatrixToCairoContext(cr); + cairo_t* cr = beginPlatformPaint(); PangoLayout* layout = pango_cairo_create_layout(cr); cairo_set_source_rgb(cr, @@ -169,7 +151,6 @@ void Canvas::DrawStringInt(const std::wstring& text, pango_cairo_show_layout(cr, layout); g_object_unref(layout); - cairo_destroy(cr); // NOTE: beginPlatformPaint returned its surface, we shouldn't destroy it. } |