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

Side by Side Diff: gfx/canvas_skia.h

Issue 6246027: Move src/gfx/ to src/ui/gfx... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 10 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « gfx/canvas_direct2d_unittest.cc ('k') | gfx/canvas_skia.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef GFX_CANVAS_SKIA_H_ 5 #ifndef GFX_CANVAS_SKIA_H_
6 #define GFX_CANVAS_SKIA_H_ 6 #define GFX_CANVAS_SKIA_H_
7 #pragma once 7 #pragma once
8 8
9 #include "base/basictypes.h" 9 #include "ui/gfx/canvas_skia.h"
10 #include "base/string16.h" 10 // TODO(sail): remove this file once all includes have been updated.
11 #include "gfx/canvas.h"
12 #include "skia/ext/platform_canvas.h"
13
14 #if defined(OS_POSIX) && !defined(OS_MACOSX)
15 typedef struct _GdkPixbuf GdkPixbuf;
16 #endif
17
18 namespace gfx {
19
20 class Canvas;
21
22 // CanvasSkia is a SkCanvas subclass that provides a number of methods for
23 // common operations used throughout an application built using base/gfx and
24 // app/gfx.
25 //
26 // All methods that take integer arguments (as is used throughout views)
27 // end with Int. If you need to use methods provided by the superclass
28 // you'll need to do a conversion. In particular you'll need to use
29 // macro SkIntToScalar(xxx), or if converting from a scalar to an integer
30 // SkScalarRound.
31 //
32 // A handful of methods in this class are overloaded providing an additional
33 // argument of type SkXfermode::Mode. SkXfermode::Mode specifies how the
34 // source and destination colors are combined. Unless otherwise specified,
35 // the variant that does not take a SkXfermode::Mode uses a transfer mode
36 // of kSrcOver_Mode.
37 class CanvasSkia : public skia::PlatformCanvas,
38 public Canvas {
39 public:
40 // Creates an empty Canvas. Callers must use initialize before using the
41 // canvas.
42 CanvasSkia();
43
44 CanvasSkia(int width, int height, bool is_opaque);
45
46 virtual ~CanvasSkia();
47
48 // Compute the size required to draw some text with the provided font.
49 // Attempts to fit the text with the provided width and height. Increases
50 // height and then width as needed to make the text fit. This method
51 // supports multiple lines.
52 static void SizeStringInt(const string16& text,
53 const gfx::Font& font,
54 int* width, int* height,
55 int flags);
56
57 // Returns the default text alignment to be used when drawing text on a
58 // gfx::CanvasSkia based on the directionality of the system locale language.
59 // This function is used by gfx::Canvas::DrawStringInt when the text alignment
60 // is not specified.
61 //
62 // This function returns either gfx::Canvas::TEXT_ALIGN_LEFT or
63 // gfx::Canvas::TEXT_ALIGN_RIGHT.
64 static int DefaultCanvasTextAlignment();
65
66 #if defined(OS_POSIX) && !defined(OS_MACOSX)
67 // Draw the pixbuf in its natural size at (x, y).
68 void DrawGdkPixbuf(GdkPixbuf* pixbuf, int x, int y);
69 #endif
70
71 #if defined(OS_WIN) || (defined(OS_POSIX) && !defined(OS_MACOSX))
72 // Draws text with a 1-pixel halo around it of the given color.
73 // On Windows, it allows ClearType to be drawn to an otherwise transparenct
74 // bitmap for drag images. Drag images have only 1-bit of transparency, so
75 // we don't do any fancy blurring.
76 // On Linux, text with halo is created by stroking it with 2px |halo_color|
77 // then filling it with |text_color|.
78 void DrawStringWithHalo(const string16& text,
79 const gfx::Font& font,
80 const SkColor& text_color,
81 const SkColor& halo_color,
82 int x, int y, int w, int h,
83 int flags);
84 #endif
85
86 // Extracts a bitmap from the contents of this canvas.
87 SkBitmap ExtractBitmap() const;
88
89 // Overridden from Canvas:
90 virtual void Save();
91 virtual void SaveLayerAlpha(uint8 alpha);
92 virtual void SaveLayerAlpha(uint8 alpha, const gfx::Rect& layer_bounds);
93 virtual void Restore();
94 virtual bool ClipRectInt(int x, int y, int w, int h);
95 virtual void TranslateInt(int x, int y);
96 virtual void ScaleInt(int x, int y);
97 virtual void FillRectInt(const SkColor& color, int x, int y, int w, int h);
98 virtual void FillRectInt(const SkColor& color, int x, int y, int w, int h,
99 SkXfermode::Mode mode);
100 virtual void FillRectInt(const gfx::Brush* brush, int x, int y, int w, int h);
101 virtual void DrawRectInt(const SkColor& color, int x, int y, int w, int h);
102 virtual void DrawRectInt(const SkColor& color,
103 int x, int y, int w, int h,
104 SkXfermode::Mode mode);
105 virtual void DrawRectInt(int x, int y, int w, int h, const SkPaint& paint);
106 virtual void DrawLineInt(const SkColor& color,
107 int x1, int y1,
108 int x2, int y2);
109 virtual void DrawBitmapInt(const SkBitmap& bitmap, int x, int y);
110 virtual void DrawBitmapInt(const SkBitmap& bitmap,
111 int x, int y,
112 const SkPaint& paint);
113 virtual void DrawBitmapInt(const SkBitmap& bitmap,
114 int src_x, int src_y, int src_w, int src_h,
115 int dest_x, int dest_y, int dest_w, int dest_h,
116 bool filter);
117 virtual void DrawBitmapInt(const SkBitmap& bitmap,
118 int src_x, int src_y, int src_w, int src_h,
119 int dest_x, int dest_y, int dest_w, int dest_h,
120 bool filter,
121 const SkPaint& paint);
122 virtual void DrawStringInt(const string16& text,
123 const gfx::Font& font,
124 const SkColor& color,
125 int x, int y, int w, int h);
126 virtual void DrawStringInt(const string16& text,
127 const gfx::Font& font,
128 const SkColor& color,
129 const gfx::Rect& display_rect);
130 virtual void DrawStringInt(const string16& text,
131 const gfx::Font& font,
132 const SkColor& color,
133 int x, int y, int w, int h,
134 int flags);
135 virtual void DrawFocusRect(int x, int y, int width, int height);
136 virtual void TileImageInt(const SkBitmap& bitmap, int x, int y, int w, int h);
137 virtual void TileImageInt(const SkBitmap& bitmap,
138 int src_x, int src_y,
139 int dest_x, int dest_y, int w, int h);
140 virtual gfx::NativeDrawingContext BeginPlatformPaint();
141 virtual void EndPlatformPaint();
142 virtual CanvasSkia* AsCanvasSkia();
143 virtual const CanvasSkia* AsCanvasSkia() const;
144
145 private:
146 // Test whether the provided rectangle intersects the current clip rect.
147 bool IntersectsClipRectInt(int x, int y, int w, int h);
148
149 #if defined(OS_WIN)
150 // Draws text with the specified color, font and location. The text is
151 // aligned to the left, vertically centered, clipped to the region. If the
152 // text is too big, it is truncated and '...' is added to the end.
153 void DrawStringInt(const string16& text,
154 HFONT font,
155 const SkColor& color,
156 int x, int y, int w, int h,
157 int flags);
158 #endif
159
160 DISALLOW_COPY_AND_ASSIGN(CanvasSkia);
161 };
162
163 } // namespace gfx;
164 11
165 #endif // GFX_CANVAS_SKIA_H_ 12 #endif // GFX_CANVAS_SKIA_H_
OLDNEW
« no previous file with comments | « gfx/canvas_direct2d_unittest.cc ('k') | gfx/canvas_skia.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698