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

Side by Side Diff: ui/gfx/canvas.h

Issue 22835002: Supports gfx::FontList in gfx::Canvas and ui::ElideText family. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Introduces layout_text.h to provide GetStringWidth(). Created 7 years, 4 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 UI_GFX_CANVAS_H_ 5 #ifndef UI_GFX_CANVAS_H_
6 #define UI_GFX_CANVAS_H_ 6 #define UI_GFX_CANVAS_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "base/strings/string16.h" 12 #include "base/strings/string16.h"
13 #include "skia/ext/platform_canvas.h" 13 #include "skia/ext/platform_canvas.h"
14 #include "skia/ext/refptr.h" 14 #include "skia/ext/refptr.h"
15 #include "ui/gfx/image/image_skia.h" 15 #include "ui/gfx/image/image_skia.h"
16 #include "ui/gfx/native_widget_types.h" 16 #include "ui/gfx/native_widget_types.h"
17 #include "ui/gfx/shadow_value.h" 17 #include "ui/gfx/shadow_value.h"
18 18
19 namespace gfx { 19 namespace gfx {
20 20
21 class Rect; 21 class Rect;
22 class Font; 22 class Font;
23 class FontList;
23 class Point; 24 class Point;
24 class Size; 25 class Size;
25 class Transform; 26 class Transform;
26 27
27 // Canvas is a SkCanvas wrapper that provides a number of methods for 28 // Canvas is a SkCanvas wrapper that provides a number of methods for
28 // common operations used throughout an application built using ui/gfx. 29 // common operations used throughout an application built using ui/gfx.
29 // 30 //
30 // All methods that take integer arguments (as is used throughout views) 31 // All methods that take integer arguments (as is used throughout views)
31 // end with Int. If you need to use methods provided by SkCanvas, you'll 32 // end with Int. If you need to use methods provided by SkCanvas, you'll
32 // need to do a conversion. In particular you'll need to use |SkIntToScalar()|, 33 // need to do a conversion. In particular you'll need to use |SkIntToScalar()|,
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 // that will later be blended with another image. 89 // that will later be blended with another image.
89 NO_SUBPIXEL_RENDERING = 1 << 10, 90 NO_SUBPIXEL_RENDERING = 1 << 10,
90 }; 91 };
91 92
92 // Creates an empty canvas with scale factor of 1x. 93 // Creates an empty canvas with scale factor of 1x.
93 Canvas(); 94 Canvas();
94 95
95 // Creates canvas with provided DIP |size| and |scale_factor|. 96 // Creates canvas with provided DIP |size| and |scale_factor|.
96 // If this canvas is not opaque, it's explicitly cleared to transparent before 97 // If this canvas is not opaque, it's explicitly cleared to transparent before
97 // being returned. 98 // being returned.
98 Canvas(const gfx::Size& size, 99 Canvas(const Size& size, ui::ScaleFactor scale_factor, bool is_opaque);
99 ui::ScaleFactor scale_factor,
100 bool is_opaque);
101 100
102 // Constructs a canvas with the size and the scale factor of the 101 // Constructs a canvas with the size and the scale factor of the
103 // provided |image_rep|, and draws the |image_rep| into it. 102 // provided |image_rep|, and draws the |image_rep| into it.
104 Canvas(const gfx::ImageSkiaRep& image_rep, bool is_opaque); 103 Canvas(const ImageSkiaRep& image_rep, bool is_opaque);
105 104
106 virtual ~Canvas(); 105 virtual ~Canvas();
107 106
108 // Creates a gfx::Canvas backed by an |sk_canvas| with |scale_factor|. 107 // Creates a Canvas backed by an |sk_canvas| with |scale_factor|.
109 // |sk_canvas| is assumed to be already scaled based on |scale_factor| 108 // |sk_canvas| is assumed to be already scaled based on |scale_factor|
110 // so no additional scaling is applied. 109 // so no additional scaling is applied.
111 static Canvas* CreateCanvasWithoutScaling(SkCanvas* sk_canvas, 110 static Canvas* CreateCanvasWithoutScaling(SkCanvas* sk_canvas,
112 ui::ScaleFactor scale_factor); 111 ui::ScaleFactor scale_factor);
113 112
114 // Recreates the backing platform canvas with DIP |size| and |scale_factor|. 113 // Recreates the backing platform canvas with DIP |size| and |scale_factor|.
115 // If the canvas is not opaque, it is explicitly cleared. 114 // If the canvas is not opaque, it is explicitly cleared.
116 // This method is public so that canvas_skia_paint can recreate the platform 115 // This method is public so that canvas_skia_paint can recreate the platform
117 // canvas after having initialized the canvas. 116 // canvas after having initialized the canvas.
118 // TODO(pkotwicz): Push the scale factor into skia::PlatformCanvas such that 117 // TODO(pkotwicz): Push the scale factor into skia::PlatformCanvas such that
119 // this method can be private. 118 // this method can be private.
120 void RecreateBackingCanvas(const gfx::Size& size, 119 void RecreateBackingCanvas(const Size& size,
121 ui::ScaleFactor scale_factor, 120 ui::ScaleFactor scale_factor,
122 bool is_opaque); 121 bool is_opaque);
123 122
124 // Compute the size required to draw some text with the provided font. 123 // Compute the size required to draw some text with the provided fonts.
125 // Attempts to fit the text with the provided width and height. Increases 124 // Attempts to fit the text with the provided width and height. Increases
126 // height and then width as needed to make the text fit. This method 125 // height and then width as needed to make the text fit. This method
127 // supports multiple lines. On Skia only a line_height can be specified and 126 // supports multiple lines. On Skia only a line_height can be specified and
128 // specifying a 0 value for it will cause the default height to be used. 127 // specifying a 0 value for it will cause the default height to be used.
129 static void SizeStringInt(const base::string16& text, 128 static void SizeStringInt(const base::string16& text,
130 const gfx::Font& font, 129 const FontList& font_list,
131 int* width, int* height, 130 int* width,
131 int* height,
132 int line_height,
133 int flags);
134 // Obsolete version. Use the above version which takes FontList.
135 static void SizeStringInt(const base::string16& text,
136 const Font& font,
137 int* width,
138 int* height,
132 int line_height, 139 int line_height,
133 int flags); 140 int flags);
134 141
135 // Returns the number of horizontal pixels needed to display the specified 142 // Returns the number of horizontal pixels needed to display the specified
136 // |text| with |font|. 143 // |text| with |font_list|.
137 static int GetStringWidth(const base::string16& text, const gfx::Font& font); 144 static int GetStringWidth(const base::string16& text,
145 const FontList& font_list);
146 // Obsolete version. Use the above version which takes FontList.
147 static int GetStringWidth(const base::string16& text, const Font& font);
138 148
139 // Returns the default text alignment to be used when drawing text on a 149 // Returns the default text alignment to be used when drawing text on a
140 // gfx::Canvas based on the directionality of the system locale language. 150 // Canvas based on the directionality of the system locale language.
141 // This function is used by gfx::Canvas::DrawStringInt when the text alignment 151 // This function is used by Canvas::DrawStringInt when the text alignment
142 // is not specified. 152 // is not specified.
143 // 153 //
144 // This function returns either gfx::Canvas::TEXT_ALIGN_LEFT or 154 // This function returns either Canvas::TEXT_ALIGN_LEFT or
145 // gfx::Canvas::TEXT_ALIGN_RIGHT. 155 // Canvas::TEXT_ALIGN_RIGHT.
146 static int DefaultCanvasTextAlignment(); 156 static int DefaultCanvasTextAlignment();
147 157
148 // Draws text with a 1-pixel halo around it of the given color. 158 // Draws text with a 1-pixel halo around it of the given color.
149 // On Windows, it allows ClearType to be drawn to an otherwise transparenct 159 // On Windows, it allows ClearType to be drawn to an otherwise transparent
150 // bitmap for drag images. Drag images have only 1-bit of transparency, so 160 // bitmap for drag images. Drag images have only 1-bit of transparency, so
151 // we don't do any fancy blurring. 161 // we don't do any fancy blurring.
152 // On Linux, text with halo is created by stroking it with 2px |halo_color| 162 // On Linux, text with halo is created by stroking it with 2px |halo_color|
153 // then filling it with |text_color|. 163 // then filling it with |text_color|.
154 // On Mac, NOTIMPLEMENTED. 164 // On Mac, NOTIMPLEMENTED.
155 // TODO(dhollowa): Skia-native implementation is underway. Cut over to 165 // TODO(dhollowa): Skia-native implementation is underway. Cut over to
156 // that when ready. http::/crbug.com/109946 166 // that when ready. http::/crbug.com/109946
167 void DrawStringRectWithHalo(const base::string16& text,
168 const FontList& font_list,
169 SkColor text_color,
170 SkColor halo_color,
171 const Rect& display_rect,
172 int flags);
173 // Obsolete version. Use the above version which takes FontList.
157 void DrawStringWithHalo(const base::string16& text, 174 void DrawStringWithHalo(const base::string16& text,
158 const gfx::Font& font, 175 const Font& font,
159 SkColor text_color, 176 SkColor text_color,
160 SkColor halo_color, 177 SkColor halo_color,
161 int x, int y, int w, int h, 178 int x,
179 int y,
180 int w,
181 int h,
162 int flags); 182 int flags);
163 183
164 // Extracts an ImageSkiaRep from the contents of this canvas. 184 // Extracts an ImageSkiaRep from the contents of this canvas.
165 gfx::ImageSkiaRep ExtractImageRep() const; 185 ImageSkiaRep ExtractImageRep() const;
166 186
167 // Draws a dashed rectangle of the specified color. 187 // Draws a dashed rectangle of the specified color.
168 void DrawDashedRect(const gfx::Rect& rect, SkColor color); 188 void DrawDashedRect(const Rect& rect, SkColor color);
169 189
170 // Saves a copy of the drawing state onto a stack, operating on this copy 190 // Saves a copy of the drawing state onto a stack, operating on this copy
171 // until a balanced call to Restore() is made. 191 // until a balanced call to Restore() is made.
172 void Save(); 192 void Save();
173 193
174 // As with Save(), except draws to a layer that is blended with the canvas 194 // As with Save(), except draws to a layer that is blended with the canvas
175 // at the specified alpha once Restore() is called. 195 // at the specified alpha once Restore() is called.
176 // |layer_bounds| are the bounds of the layer relative to the current 196 // |layer_bounds| are the bounds of the layer relative to the current
177 // transform. 197 // transform.
178 void SaveLayerAlpha(uint8 alpha); 198 void SaveLayerAlpha(uint8 alpha);
179 void SaveLayerAlpha(uint8 alpha, const gfx::Rect& layer_bounds); 199 void SaveLayerAlpha(uint8 alpha, const Rect& layer_bounds);
180 200
181 // Restores the drawing state after a call to Save*(). It is an error to 201 // Restores the drawing state after a call to Save*(). It is an error to
182 // call Restore() more times than Save*(). 202 // call Restore() more times than Save*().
183 void Restore(); 203 void Restore();
184 204
185 // Adds |rect| to the current clip. Returns true if the resulting clip is 205 // Adds |rect| to the current clip. Returns true if the resulting clip is
186 // non-empty. 206 // non-empty.
187 bool ClipRect(const gfx::Rect& rect); 207 bool ClipRect(const Rect& rect);
188 208
189 // Adds |path| to the current clip. Returns true if the resulting clip is 209 // Adds |path| to the current clip. Returns true if the resulting clip is
190 // non-empty. 210 // non-empty.
191 bool ClipPath(const SkPath& path); 211 bool ClipPath(const SkPath& path);
192 212
193 // Returns the bounds of the current clip (in local coordinates) in the 213 // Returns the bounds of the current clip (in local coordinates) in the
194 // |bounds| parameter, and returns true if it is non empty. 214 // |bounds| parameter, and returns true if it is non empty.
195 bool GetClipBounds(gfx::Rect* bounds); 215 bool GetClipBounds(Rect* bounds);
196 216
197 void Translate(const gfx::Vector2d& offset); 217 void Translate(const Vector2d& offset);
198 218
199 void Scale(int x_scale, int y_scale); 219 void Scale(int x_scale, int y_scale);
200 220
201 // Fills the entire canvas' bitmap (restricted to current clip) with 221 // Fills the entire canvas' bitmap (restricted to current clip) with
202 // specified |color| using a transfer mode of SkXfermode::kSrcOver_Mode. 222 // specified |color| using a transfer mode of SkXfermode::kSrcOver_Mode.
203 void DrawColor(SkColor color); 223 void DrawColor(SkColor color);
204 224
205 // Fills the entire canvas' bitmap (restricted to current clip) with 225 // Fills the entire canvas' bitmap (restricted to current clip) with
206 // specified |color| and |mode|. 226 // specified |color| and |mode|.
207 void DrawColor(SkColor color, SkXfermode::Mode mode); 227 void DrawColor(SkColor color, SkXfermode::Mode mode);
208 228
209 // Fills |rect| with |color| using a transfer mode of 229 // Fills |rect| with |color| using a transfer mode of
210 // SkXfermode::kSrcOver_Mode. 230 // SkXfermode::kSrcOver_Mode.
211 void FillRect(const gfx::Rect& rect, SkColor color); 231 void FillRect(const Rect& rect, SkColor color);
212 232
213 // Fills |rect| with the specified |color| and |mode|. 233 // Fills |rect| with the specified |color| and |mode|.
214 void FillRect(const gfx::Rect& rect, SkColor color, SkXfermode::Mode mode); 234 void FillRect(const Rect& rect, SkColor color, SkXfermode::Mode mode);
215 235
216 // Draws a single pixel rect in the specified region with the specified 236 // Draws a single pixel rect in the specified region with the specified
217 // color, using a transfer mode of SkXfermode::kSrcOver_Mode. 237 // color, using a transfer mode of SkXfermode::kSrcOver_Mode.
218 // 238 //
219 // NOTE: if you need a single pixel line, use DrawLine. 239 // NOTE: if you need a single pixel line, use DrawLine.
220 void DrawRect(const gfx::Rect& rect, SkColor color); 240 void DrawRect(const Rect& rect, SkColor color);
221 241
222 // Draws a single pixel rect in the specified region with the specified 242 // Draws a single pixel rect in the specified region with the specified
223 // color and transfer mode. 243 // color and transfer mode.
224 // 244 //
225 // NOTE: if you need a single pixel line, use DrawLine. 245 // NOTE: if you need a single pixel line, use DrawLine.
226 void DrawRect(const gfx::Rect& rect, SkColor color, SkXfermode::Mode mode); 246 void DrawRect(const Rect& rect, SkColor color, SkXfermode::Mode mode);
227 247
228 // Draws the given rectangle with the given |paint| parameters. 248 // Draws the given rectangle with the given |paint| parameters.
229 void DrawRect(const gfx::Rect& rect, const SkPaint& paint); 249 void DrawRect(const Rect& rect, const SkPaint& paint);
230 250
231 // Draw the given point with the given |paint| parameters. 251 // Draw the given point with the given |paint| parameters.
232 void DrawPoint(const gfx::Point& p, const SkPaint& paint); 252 void DrawPoint(const Point& p, const SkPaint& paint);
233 253
234 // Draws a single pixel line with the specified color. 254 // Draws a single pixel line with the specified color.
235 void DrawLine(const gfx::Point& p1, const gfx::Point& p2, SkColor color); 255 void DrawLine(const Point& p1, const Point& p2, SkColor color);
236 256
237 // Draws a line with the given |paint| parameters. 257 // Draws a line with the given |paint| parameters.
238 void DrawLine(const gfx::Point& p1, 258 void DrawLine(const Point& p1, const Point& p2, const SkPaint& paint);
239 const gfx::Point& p2,
240 const SkPaint& paint);
241 259
242 // Draws a circle with the given |paint| parameters. 260 // Draws a circle with the given |paint| parameters.
243 void DrawCircle(const gfx::Point& center_point, 261 void DrawCircle(const Point& center_point,
244 int radius, 262 int radius,
245 const SkPaint& paint); 263 const SkPaint& paint);
246 264
247 // Draws the given rectangle with rounded corners of |radius| using the 265 // Draws the given rectangle with rounded corners of |radius| using the
248 // given |paint| parameters. 266 // given |paint| parameters.
249 void DrawRoundRect(const gfx::Rect& rect, int radius, const SkPaint& paint); 267 void DrawRoundRect(const Rect& rect, int radius, const SkPaint& paint);
250 268
251 // Draws the given path using the given |paint| parameters. 269 // Draws the given path using the given |paint| parameters.
252 void DrawPath(const SkPath& path, const SkPaint& paint); 270 void DrawPath(const SkPath& path, const SkPaint& paint);
253 271
254 // Draws an image with the origin at the specified location. The upper left 272 // Draws an image with the origin at the specified location. The upper left
255 // corner of the bitmap is rendered at the specified location. 273 // corner of the bitmap is rendered at the specified location.
256 // Parameters are specified relative to current canvas scale not in pixels. 274 // Parameters are specified relative to current canvas scale not in pixels.
257 // Thus, x is 2 pixels if canvas scale = 2 & |x| = 1. 275 // Thus, x is 2 pixels if canvas scale = 2 & |x| = 1.
258 void DrawImageInt(const gfx::ImageSkia&, int x, int y); 276 void DrawImageInt(const ImageSkia&, int x, int y);
259 277
260 // Helper for DrawImageInt(..., paint) that constructs a temporary paint and 278 // Helper for DrawImageInt(..., paint) that constructs a temporary paint and
261 // calls paint.setAlpha(alpha). 279 // calls paint.setAlpha(alpha).
262 void DrawImageInt(const gfx::ImageSkia&, int x, int y, uint8 alpha); 280 void DrawImageInt(const ImageSkia&, int x, int y, uint8 alpha);
263 281
264 // Draws an image with the origin at the specified location, using the 282 // Draws an image with the origin at the specified location, using the
265 // specified paint. The upper left corner of the bitmap is rendered at the 283 // specified paint. The upper left corner of the bitmap is rendered at the
266 // specified location. 284 // specified location.
267 // Parameters are specified relative to current canvas scale not in pixels. 285 // Parameters are specified relative to current canvas scale not in pixels.
268 // Thus, |x| is 2 pixels if canvas scale = 2 & |x| = 1. 286 // Thus, |x| is 2 pixels if canvas scale = 2 & |x| = 1.
269 void DrawImageInt(const gfx::ImageSkia& image, 287 void DrawImageInt(const ImageSkia& image,
270 int x, int y, 288 int x,
289 int y,
271 const SkPaint& paint); 290 const SkPaint& paint);
272 291
273 // Draws a portion of an image in the specified location. The src parameters 292 // Draws a portion of an image in the specified location. The src parameters
274 // correspond to the region of the bitmap to draw in the region defined 293 // correspond to the region of the bitmap to draw in the region defined
275 // by the dest coordinates. 294 // by the dest coordinates.
276 // 295 //
277 // If the width or height of the source differs from that of the destination, 296 // If the width or height of the source differs from that of the destination,
278 // the image will be scaled. When scaling down, a mipmap will be generated. 297 // the image will be scaled. When scaling down, a mipmap will be generated.
279 // Set |filter| to use filtering for images, otherwise the nearest-neighbor 298 // Set |filter| to use filtering for images, otherwise the nearest-neighbor
280 // algorithm is used for resampling. 299 // algorithm is used for resampling.
281 // 300 //
282 // An optional custom SkPaint can be provided. 301 // An optional custom SkPaint can be provided.
283 // Parameters are specified relative to current canvas scale not in pixels. 302 // Parameters are specified relative to current canvas scale not in pixels.
284 // Thus, |x| is 2 pixels if canvas scale = 2 & |x| = 1. 303 // Thus, |x| is 2 pixels if canvas scale = 2 & |x| = 1.
285 void DrawImageInt(const gfx::ImageSkia& image, 304 void DrawImageInt(const ImageSkia& image,
286 int src_x, int src_y, int src_w, int src_h, 305 int src_x,
287 int dest_x, int dest_y, int dest_w, int dest_h, 306 int src_y,
307 int src_w,
308 int src_h,
309 int dest_x,
310 int dest_y,
311 int dest_w,
312 int dest_h,
288 bool filter); 313 bool filter);
289 void DrawImageInt(const gfx::ImageSkia& image, 314 void DrawImageInt(const ImageSkia& image,
290 int src_x, int src_y, int src_w, int src_h, 315 int src_x,
291 int dest_x, int dest_y, int dest_w, int dest_h, 316 int src_y,
317 int src_w,
318 int src_h,
319 int dest_x,
320 int dest_y,
321 int dest_w,
322 int dest_h,
292 bool filter, 323 bool filter,
293 const SkPaint& paint); 324 const SkPaint& paint);
294 325
295 // Draws an |image| with the top left corner at |x| and |y|, clipped to 326 // Draws an |image| with the top left corner at |x| and |y|, clipped to
296 // |path|. 327 // |path|.
297 // Parameters are specified relative to current canvas scale not in pixels. 328 // Parameters are specified relative to current canvas scale not in pixels.
298 // Thus, x is 2 pixels if canvas scale = 2 & |x| = 1. 329 // Thus, x is 2 pixels if canvas scale = 2 & |x| = 1.
299 void DrawImageInPath(const gfx::ImageSkia& image, 330 void DrawImageInPath(const ImageSkia& image,
300 int x, 331 int x,
301 int y, 332 int y,
302 const SkPath& path, 333 const SkPath& path,
303 const SkPaint& paint); 334 const SkPaint& paint);
304 335
305 // Draws text with the specified color, font and location. The text is 336 // Draws text with the specified color, fonts and location. The text is
306 // aligned to the left, vertically centered, clipped to the region. If the 337 // aligned to the left, vertically centered, clipped to the region. If the
307 // text is too big, it is truncated and '...' is added to the end. 338 // text is too big, it is truncated and '...' is added to the end.
339 void DrawStringRect(const base::string16& text,
340 const FontList& font_list,
341 SkColor color,
342 const Rect& display_rect);
343 // Obsolete versions. Use the above versions which take FontList.
308 void DrawStringInt(const base::string16& text, 344 void DrawStringInt(const base::string16& text,
309 const gfx::Font& font, 345 const Font& font,
310 SkColor color, 346 SkColor color,
311 int x, int y, int w, int h); 347 int x,
348 int y,
349 int w,
350 int h);
312 void DrawStringInt(const base::string16& text, 351 void DrawStringInt(const base::string16& text,
313 const gfx::Font& font, 352 const Font& font,
314 SkColor color, 353 SkColor color,
315 const gfx::Rect& display_rect); 354 const Rect& display_rect);
316 355
317 // Draws text with the specified color, font and location. The last argument 356 // Draws text with the specified color, fonts and location. The last argument
318 // specifies flags for how the text should be rendered. It can be one of 357 // specifies flags for how the text should be rendered. It can be one of
319 // TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT or TEXT_ALIGN_LEFT. 358 // TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT or TEXT_ALIGN_LEFT.
359 void DrawStringRectWithFlags(const base::string16& text,
360 const FontList& font_list,
361 SkColor color,
362 const Rect& display_rect,
363 int flags);
364 // Obsolete version. Use the above version which takes FontList.
320 void DrawStringInt(const base::string16& text, 365 void DrawStringInt(const base::string16& text,
321 const gfx::Font& font, 366 const Font& font,
322 SkColor color, 367 SkColor color,
323 int x, int y, int w, int h, 368 int x,
369 int y,
370 int w,
371 int h,
324 int flags); 372 int flags);
325 373
326 // Similar to above DrawStringInt method but with text shadows support. 374 // Similar to above DrawStringInt method but with text shadows support.
327 // Currently it's only implemented for canvas skia. Specifying a 0 line_height 375 // Currently it's only implemented for canvas skia. Specifying a 0 line_height
328 // will cause the default height to be used. 376 // will cause the default height to be used.
377 void DrawStringRectWithShadows(const base::string16& text,
378 const FontList& font_list,
379 SkColor color,
380 const Rect& text_bounds,
381 int line_height,
382 int flags,
383 const ShadowValues& shadows);
384 // Obsolete version. Use the above version which takes FontList.
329 void DrawStringWithShadows(const base::string16& text, 385 void DrawStringWithShadows(const base::string16& text,
330 const gfx::Font& font, 386 const Font& font,
331 SkColor color, 387 SkColor color,
332 const gfx::Rect& text_bounds, 388 const Rect& text_bounds,
333 int line_height, 389 int line_height,
334 int flags, 390 int flags,
335 const ShadowValues& shadows); 391 const ShadowValues& shadows);
336 392
337 // Draws a dotted gray rectangle used for focus purposes. 393 // Draws a dotted gray rectangle used for focus purposes.
338 void DrawFocusRect(const gfx::Rect& rect); 394 void DrawFocusRect(const Rect& rect);
339 395
340 // Tiles the image in the specified region. 396 // Tiles the image in the specified region.
341 // Parameters are specified relative to current canvas scale not in pixels. 397 // Parameters are specified relative to current canvas scale not in pixels.
342 // Thus, |x| is 2 pixels if canvas scale = 2 & |x| = 1. 398 // Thus, |x| is 2 pixels if canvas scale = 2 & |x| = 1.
343 void TileImageInt(const gfx::ImageSkia& image, 399 void TileImageInt(const ImageSkia& image,
344 int x, int y, int w, int h); 400 int x,
345 void TileImageInt(const gfx::ImageSkia& image, 401 int y,
346 int src_x, int src_y, 402 int w,
347 int dest_x, int dest_y, int w, int h); 403 int h);
348 void TileImageInt(const gfx::ImageSkia& image, 404 void TileImageInt(const ImageSkia& image,
349 int src_x, int src_y, 405 int src_x,
350 float tile_scale_x, float tile_scale_y, 406 int src_y,
351 int dest_x, int dest_y, int w, int h); 407 int dest_x,
408 int dest_y,
409 int w,
410 int h);
411 void TileImageInt(const ImageSkia& image,
412 int src_x,
413 int src_y,
414 float tile_scale_x,
415 float tile_scale_y,
416 int dest_x,
417 int dest_y,
418 int w,
419 int h);
352 420
353 // Returns a native drawing context for platform specific drawing routines to 421 // Returns a native drawing context for platform specific drawing routines to
354 // use. Must be balanced by a call to EndPlatformPaint(). 422 // use. Must be balanced by a call to EndPlatformPaint().
355 NativeDrawingContext BeginPlatformPaint(); 423 NativeDrawingContext BeginPlatformPaint();
356 424
357 // Signifies the end of platform drawing using the native drawing context 425 // Signifies the end of platform drawing using the native drawing context
358 // returned by BeginPlatformPaint(). 426 // returned by BeginPlatformPaint().
359 void EndPlatformPaint(); 427 void EndPlatformPaint();
360 428
361 // Apply transformation on the canvas. 429 // Apply transformation on the canvas.
362 void Transform(const gfx::Transform& transform); 430 void Transform(const Transform& transform);
363 431
364 // Draws the given string with the beginning and/or the end using a fade 432 // Draws the given string with the beginning and/or the end using a fade
365 // gradient. When truncating the head 433 // gradient. When truncating the head
366 // |desired_characters_to_truncate_from_head| specifies the maximum number of 434 // |desired_characters_to_truncate_from_head| specifies the maximum number of
367 // characters that can be truncated. 435 // characters that can be truncated.
436 void DrawFadeTruncatingStringRect(
437 const base::string16& text,
438 TruncateFadeMode truncate_mode,
439 size_t desired_characters_to_truncate_from_head,
440 const FontList& font_list,
441 SkColor color,
442 const Rect& display_rect);
443 // Obsolete version. Use the above version which takes FontList.
368 void DrawFadeTruncatingString( 444 void DrawFadeTruncatingString(
369 const base::string16& text, 445 const base::string16& text,
370 TruncateFadeMode truncate_mode, 446 TruncateFadeMode truncate_mode,
371 size_t desired_characters_to_truncate_from_head, 447 size_t desired_characters_to_truncate_from_head,
372 const gfx::Font& font, 448 const Font& font,
373 SkColor color, 449 SkColor color,
374 const gfx::Rect& display_rect); 450 const Rect& display_rect);
375 451
376 skia::PlatformCanvas* platform_canvas() const { return owned_canvas_.get(); } 452 skia::PlatformCanvas* platform_canvas() const { return owned_canvas_.get(); }
377 SkCanvas* sk_canvas() const { return canvas_; } 453 SkCanvas* sk_canvas() const { return canvas_; }
378 ui::ScaleFactor scale_factor() const { return scale_factor_; } 454 ui::ScaleFactor scale_factor() const { return scale_factor_; }
379 455
380 private: 456 private:
381 Canvas(SkCanvas* canvas, ui::ScaleFactor scale_factor); 457 Canvas(SkCanvas* canvas, ui::ScaleFactor scale_factor);
382 458
383 // Test whether the provided rectangle intersects the current clip rect. 459 // Test whether the provided rectangle intersects the current clip rect.
384 bool IntersectsClipRectInt(int x, int y, int w, int h); 460 bool IntersectsClipRectInt(int x, int y, int w, int h);
385 bool IntersectsClipRect(const gfx::Rect& rect); 461 bool IntersectsClipRect(const Rect& rect);
386 462
387 // Returns the image rep which best matches the canvas |scale_factor_|. 463 // Returns the image rep which best matches the canvas |scale_factor_|.
388 // Returns a null image rep if |image| contains no image reps. 464 // Returns a null image rep if |image| contains no image reps.
389 // Builds mip map for returned image rep if necessary. 465 // Builds mip map for returned image rep if necessary.
390 // 466 //
391 // An optional additional user defined scale can be provided. 467 // An optional additional user defined scale can be provided.
392 const gfx::ImageSkiaRep& GetImageRepToPaint( 468 const ImageSkiaRep& GetImageRepToPaint(const ImageSkia& image) const;
393 const gfx::ImageSkia& image) const; 469 const ImageSkiaRep& GetImageRepToPaint(
394 const gfx::ImageSkiaRep& GetImageRepToPaint( 470 const ImageSkia& image,
395 const gfx::ImageSkia& image,
396 float user_defined_scale_factor_x, 471 float user_defined_scale_factor_x,
397 float user_defined_scale_factor_y) const; 472 float user_defined_scale_factor_y) const;
398 473
399 // The device scale factor at which drawing on this canvas occurs. 474 // The device scale factor at which drawing on this canvas occurs.
400 // An additional scale can be applied via Canvas::Scale(). However, 475 // An additional scale can be applied via Canvas::Scale(). However,
401 // Canvas::Scale() does not affect |scale_factor_|. 476 // Canvas::Scale() does not affect |scale_factor_|.
402 ui::ScaleFactor scale_factor_; 477 ui::ScaleFactor scale_factor_;
403 478
404 skia::RefPtr<skia::PlatformCanvas> owned_canvas_; 479 skia::RefPtr<skia::PlatformCanvas> owned_canvas_;
405 SkCanvas* canvas_; 480 SkCanvas* canvas_;
406 481
407 DISALLOW_COPY_AND_ASSIGN(Canvas); 482 DISALLOW_COPY_AND_ASSIGN(Canvas);
408 }; 483 };
409 484
410 } // namespace gfx 485 } // namespace gfx
411 486
412 #endif // UI_GFX_CANVAS_H_ 487 #endif // UI_GFX_CANVAS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698