diff options
author | reed@google.com <reed@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-30 13:46:12 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-30 13:46:12 +0000 |
commit | 263fc7a4101301195c888664c013eab179e57ff5 (patch) | |
tree | 626fdefbdf2f5703fc872a932bc1ddf85eb13a37 /skia | |
parent | 03e09f16f1a65030e6ea566b005c3885b23dca6e (diff) | |
download | chromium_src-263fc7a4101301195c888664c013eab179e57ff5.zip chromium_src-263fc7a4101301195c888664c013eab179e57ff5.tar.gz chromium_src-263fc7a4101301195c888664c013eab179e57ff5.tar.bz2 |
reapply 164660 w/ fix to add UI_EXPORT to new classes, so we can link in component build.
https://codereview.chromium.org/11193037/
Review URL: https://codereview.chromium.org/11338013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164905 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'skia')
-rw-r--r-- | skia/ext/canvas_paint.h | 23 | ||||
-rw-r--r-- | skia/ext/canvas_paint_common.h | 23 | ||||
-rw-r--r-- | skia/ext/canvas_paint_gtk.h | 117 | ||||
-rw-r--r-- | skia/ext/canvas_paint_mac.h | 120 | ||||
-rw-r--r-- | skia/ext/canvas_paint_win.h | 137 | ||||
-rw-r--r-- | skia/skia.gyp | 5 |
6 files changed, 0 insertions, 425 deletions
diff --git a/skia/ext/canvas_paint.h b/skia/ext/canvas_paint.h deleted file mode 100644 index 8fd388f..0000000 --- a/skia/ext/canvas_paint.h +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef SKIA_EXT_CANVAS_PAINT_H_ -#define SKIA_EXT_CANVAS_PAINT_H_ - -// This file provides an easy way to include the appropriate CanvasPaint -// header file on your platform. - -#if defined(WIN32) -#include "skia/ext/canvas_paint_win.h" -#elif defined(__APPLE__) -#include "skia/ext/canvas_paint_mac.h" -#elif defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__sun) -#if defined(TOOLKIT_GTK) -#include "skia/ext/canvas_paint_gtk.h" -#else -#error "No canvas paint for this platform" -#endif -#endif - -#endif // SKIA_EXT_CANVAS_PAINT_H_ diff --git a/skia/ext/canvas_paint_common.h b/skia/ext/canvas_paint_common.h deleted file mode 100644 index c3c7f97..0000000 --- a/skia/ext/canvas_paint_common.h +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef SKIA_EXT_CANVAS_PAINT_COMMON_H_ -#define SKIA_EXT_CANVAS_PAINT_COMMON_H_ - -namespace skia { -class PlatformCanvas; - -template<class T> inline PlatformCanvas* GetPlatformCanvas(T* t) { - return t; -} - -// TODO(pkotwicz): Push scale into PlatformCanvas such that this function -// is not needed. -template<class T> inline void RecreateBackingCanvas(T* t, - int width, int height, float scale, bool opaque) { -} - -} // namespace skia - -#endif // SKIA_EXT_CANVAS_PAINT_COMMON_H_ diff --git a/skia/ext/canvas_paint_gtk.h b/skia/ext/canvas_paint_gtk.h deleted file mode 100644 index 1dce27e..0000000 --- a/skia/ext/canvas_paint_gtk.h +++ /dev/null @@ -1,117 +0,0 @@ - -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef SKIA_EXT_CANVAS_PAINT_LINUX_H_ -#define SKIA_EXT_CANVAS_PAINT_LINUX_H_ - -#include "base/logging.h" -#include "skia/ext/canvas_paint_common.h" -#include "skia/ext/platform_canvas.h" - -#include <gdk/gdk.h> - -namespace skia { - -// A class designed to translate skia painting into a region in a GdkWindow. -// On construction, it will set up a context for painting into, and on -// destruction, it will commit it to the GdkWindow. -// Note: The created context is always inialized to (0, 0, 0, 0). -template <class T> -class CanvasPaintT : public T { - public: - // This constructor assumes the result is opaque. - explicit CanvasPaintT(GdkEventExpose* event) - : context_(NULL), - window_(event->window), - region_(gdk_region_copy(event->region)), - composite_alpha_(false) { - init(true); - } - - CanvasPaintT(GdkEventExpose* event, bool opaque) - : context_(NULL), - window_(event->window), - region_(gdk_region_copy(event->region)), - composite_alpha_(false) { - init(opaque); - } - - virtual ~CanvasPaintT() { - if (!is_empty()) { - GetPlatformCanvas(this)->restoreToCount(1); - - // Blit the dirty rect to the window. - CHECK(window_); - cairo_t* cr = gdk_cairo_create(window_); - CHECK(cr); - if (composite_alpha_) - cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); - cairo_surface_t* source_surface = cairo_get_target(context_); - CHECK(source_surface); - // Flush cairo's cache of the surface. - cairo_surface_mark_dirty(source_surface); - GdkRectangle bounds = rectangle(); - cairo_set_source_surface(cr, source_surface, bounds.x, bounds.y); - gdk_cairo_region(cr, region_); - cairo_fill(cr); - cairo_destroy(cr); - } - - gdk_region_destroy(region_); - } - - // Sets whether the bitmap is composited in such a way that the alpha channel - // is honored. This is only useful if you've enabled an RGBA colormap on the - // widget. The default is false. - void set_composite_alpha(bool composite_alpha) { - composite_alpha_ = composite_alpha; - } - - // Returns true if the invalid region is empty. The caller should call this - // function to determine if anything needs painting. - bool is_empty() const { - return gdk_region_empty(region_); - } - - GdkRectangle rectangle() const { - GdkRectangle bounds; - gdk_region_get_clipbox(region_, &bounds); - return bounds; - } - - private: - void init(bool opaque) { - GdkRectangle bounds = rectangle(); - PlatformCanvas* canvas = GetPlatformCanvas(this); - if (!canvas->initialize(bounds.width, bounds.height, opaque, NULL)) { - // Cause a deliberate crash; - CHECK(false); - } - // No need to clear the canvas, because cairo automatically performs the - // clear. - - // Need to translate so that the dirty region appears at the origin of the - // surface. - canvas->translate(-SkIntToScalar(bounds.x), -SkIntToScalar(bounds.y)); - - context_ = BeginPlatformPaint(canvas); - } - - cairo_t* context_; - GdkWindow* window_; - GdkRegion* region_; - // See description above setter. - bool composite_alpha_; - - // Disallow copy and assign. - CanvasPaintT(const CanvasPaintT&); - CanvasPaintT& operator=(const CanvasPaintT&); -}; - -typedef CanvasPaintT<PlatformCanvas> PlatformCanvasPaint; - -} // namespace skia - -#endif // SKIA_EXT_CANVAS_PAINT_LINUX_H_ diff --git a/skia/ext/canvas_paint_mac.h b/skia/ext/canvas_paint_mac.h deleted file mode 100644 index 36bf992..0000000 --- a/skia/ext/canvas_paint_mac.h +++ /dev/null @@ -1,120 +0,0 @@ - -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef SKIA_EXT_CANVAS_PAINT_MAC_H_ -#define SKIA_EXT_CANVAS_PAINT_MAC_H_ - -#include "skia/ext/canvas_paint_common.h" -#include "skia/ext/platform_canvas.h" - -#import <Cocoa/Cocoa.h> - -namespace skia { - -// A class designed to translate skia painting into a region to the current -// graphics context. On construction, it will set up a context for painting -// into, and on destruction, it will commit it to the current context. -// Note: The created context is always inialized to (0, 0, 0, 0). -template <class T> -class CanvasPaintT : public T { - public: - // This constructor assumes the result is opaque. - explicit CanvasPaintT(NSRect dirtyRect) - : context_(NULL), - rectangle_(dirtyRect), - composite_alpha_(false) { - init(true); - } - - CanvasPaintT(NSRect dirtyRect, bool opaque) - : context_(NULL), - rectangle_(dirtyRect), - composite_alpha_(false) { - init(opaque); - } - - virtual ~CanvasPaintT() { - if (!is_empty()) { - GetPlatformCanvas(this)->restoreToCount(1); - - // Blit the dirty rect to the current context. - CGImageRef image = CGBitmapContextCreateImage(context_); - CGRect dest_rect = NSRectToCGRect(rectangle_); - - CGContextRef destination_context = - (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort]; - CGContextSaveGState(destination_context); - CGContextSetBlendMode( - destination_context, - composite_alpha_ ? kCGBlendModeNormal : kCGBlendModeCopy); - - if ([[NSGraphicsContext currentContext] isFlipped]) { - // Mirror context on the target's rect middle scanline. - CGContextTranslateCTM(destination_context, 0.0, NSMidY(rectangle_)); - CGContextScaleCTM(destination_context, 1.0, -1.0); - CGContextTranslateCTM(destination_context, 0.0, -NSMidY(rectangle_)); - } - - CGContextDrawImage(destination_context, dest_rect, image); - CGContextRestoreGState(destination_context); - - CFRelease(image); - } - } - - // If true, the data painted into the CanvasPaintT is blended onto the current - // context, else it is copied. - void set_composite_alpha(bool composite_alpha) { - composite_alpha_ = composite_alpha; - } - - // Returns true if the invalid region is empty. The caller should call this - // function to determine if anything needs painting. - bool is_empty() const { - return NSIsEmptyRect(rectangle_); - } - - const NSRect& rectangle() const { - return rectangle_; - } - - private: - void init(bool opaque) { - CGContextRef destination_context = - (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort]; - CGRect scaled_unit_rect = CGContextConvertRectToDeviceSpace( - destination_context, CGRectMake(0, 0, 1, 1)); - // Assume that the x scale and the y scale are the same. - CGFloat scale = scaled_unit_rect.size.width; - - RecreateBackingCanvas(this, - NSWidth(rectangle_), NSHeight(rectangle_), scale, opaque); - PlatformCanvas* canvas = GetPlatformCanvas(this); - canvas->clear(SkColorSetARGB(0, 0, 0, 0)); - - // Need to translate so that the dirty region appears at the origin of the - // surface. - canvas->translate(-SkDoubleToScalar(NSMinX(rectangle_)), - -SkDoubleToScalar(NSMinY(rectangle_))); - - context_ = GetBitmapContext(GetTopDevice(*canvas)); - } - - CGContext* context_; - NSRect rectangle_; - // See description above setter. - bool composite_alpha_; - - // Disallow copy and assign. - CanvasPaintT(const CanvasPaintT&); - CanvasPaintT& operator=(const CanvasPaintT&); -}; - -typedef CanvasPaintT<PlatformCanvas> PlatformCanvasPaint; - -} // namespace skia - - -#endif // SKIA_EXT_CANVAS_PAINT_MAC_H_ diff --git a/skia/ext/canvas_paint_win.h b/skia/ext/canvas_paint_win.h deleted file mode 100644 index 4492c0e..0000000 --- a/skia/ext/canvas_paint_win.h +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef SKIA_EXT_CANVAS_PAINT_WIN_H_ -#define SKIA_EXT_CANVAS_PAINT_WIN_H_ - -#include "skia/ext/canvas_paint_common.h" -#include "skia/ext/platform_canvas.h" - -namespace skia { - -// A class designed to help with WM_PAINT operations on Windows. It will -// do BeginPaint/EndPaint on init/destruction, and will create the bitmap and -// canvas with the correct size and transform for the dirty rect. The bitmap -// will be automatically painted to the screen on destruction. -// -// You MUST call isEmpty before painting to determine if anything needs -// painting. Sometimes the dirty rect can actually be empty, and this makes -// the bitmap functions we call unhappy. The caller should not paint in this -// case. -// -// Therefore, all you need to do is: -// case WM_PAINT: { -// gfx::PlatformCanvasPaint canvas(hwnd); -// if (!canvas.isEmpty()) { -// ... paint to the canvas ... -// } -// return 0; -// } -// Note: The created context is always inialized to (0, 0, 0, 0). -template <class T> -class CanvasPaintT : public T { - public: - // This constructor assumes the canvas is opaque. - explicit CanvasPaintT(HWND hwnd) : hwnd_(hwnd), paint_dc_(NULL), - for_paint_(true) { - memset(&ps_, 0, sizeof(ps_)); - initPaint(true); - } - - CanvasPaintT(HWND hwnd, bool opaque) : hwnd_(hwnd), paint_dc_(NULL), - for_paint_(true) { - memset(&ps_, 0, sizeof(ps_)); - initPaint(opaque); - } - - // Creates a CanvasPaintT for the specified region that paints to the - // specified dc. This does NOT do BeginPaint/EndPaint. - CanvasPaintT(HDC dc, bool opaque, int x, int y, int w, int h) - : hwnd_(NULL), - paint_dc_(dc), - for_paint_(false) { - memset(&ps_, 0, sizeof(ps_)); - ps_.rcPaint.left = x; - ps_.rcPaint.right = x + w; - ps_.rcPaint.top = y; - ps_.rcPaint.bottom = y + h; - init(opaque); - } - - virtual ~CanvasPaintT() { - if (!isEmpty()) { - PlatformCanvas* canvas = GetPlatformCanvas(this); - canvas->restoreToCount(1); - // Commit the drawing to the screen - skia::DrawToNativeContext(canvas, paint_dc_, ps_.rcPaint.left, - ps_.rcPaint.top, NULL); - } - if (for_paint_) - EndPaint(hwnd_, &ps_); - } - - // Returns true if the invalid region is empty. The caller should call this - // function to determine if anything needs painting. - bool isEmpty() const { - return ps_.rcPaint.right - ps_.rcPaint.left == 0 || - ps_.rcPaint.bottom - ps_.rcPaint.top == 0; - } - - // Use to access the Windows painting parameters, especially useful for - // getting the bounding rect for painting: paintstruct().rcPaint - const PAINTSTRUCT& paintStruct() const { - return ps_; - } - - // Returns the DC that will be painted to - HDC paintDC() const { - return paint_dc_; - } - - protected: - HWND hwnd_; - HDC paint_dc_; - PAINTSTRUCT ps_; - - private: - void initPaint(bool opaque) { - paint_dc_ = BeginPaint(hwnd_, &ps_); - - init(opaque); - } - - void init(bool opaque) { - PlatformCanvas* canvas = GetPlatformCanvas(this); - // FIXME(brettw) for ClearType, we probably want to expand the bounds of - // painting by one pixel so that the boundaries will be correct (ClearType - // text can depend on the adjacent pixel). Then we would paint just the - // inset pixels to the screen. - const int width = ps_.rcPaint.right - ps_.rcPaint.left; - const int height = ps_.rcPaint.bottom - ps_.rcPaint.top; - if (!canvas->initialize(width, height, opaque, NULL)) { - // Cause a deliberate crash; - __debugbreak(); - _exit(1); - } - canvas->clear(SkColorSetARGB(0, 0, 0, 0)); - - // This will bring the canvas into the screen coordinate system for the - // dirty rect - canvas->translate(SkIntToScalar(-ps_.rcPaint.left), - SkIntToScalar(-ps_.rcPaint.top)); - } - - // If true, this canvas was created for a BeginPaint. - const bool for_paint_; - - // Disallow copy and assign. - CanvasPaintT(const CanvasPaintT&); - CanvasPaintT& operator=(const CanvasPaintT&); -}; - -typedef CanvasPaintT<PlatformCanvas> PlatformCanvasPaint; - -} // namespace skia - -#endif // SKIA_EXT_CANVAS_PAINT_WIN_H_ diff --git a/skia/skia.gyp b/skia/skia.gyp index 747427c..1864d93 100644 --- a/skia/skia.gyp +++ b/skia/skia.gyp @@ -156,11 +156,6 @@ 'ext/bitmap_platform_device_mac.h', 'ext/bitmap_platform_device_win.cc', 'ext/bitmap_platform_device_win.h', - 'ext/canvas_paint.h', - 'ext/canvas_paint_common.h', - 'ext/canvas_paint_gtk.h', - 'ext/canvas_paint_mac.h', - 'ext/canvas_paint_win.h', 'ext/convolver.cc', 'ext/convolver.h', 'ext/google_logging.cc', |