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

Side by Side Diff: Source/platform/graphics/GraphicsContext.h

Issue 651243002: Clarify GraphicsContext::beginLayer()/endLayer() have unexpected behaviors. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 2 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2003, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2008-2009 Torch Mobile, Inc. 3 * Copyright (C) 2008-2009 Torch Mobile, Inc.
4 * Copyright (C) 2013 Google Inc. All rights reserved. 4 * Copyright (C) 2013 Google Inc. All rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 bool contextDisabled() const { return m_disabledState; } 102 bool contextDisabled() const { return m_disabledState; }
103 103
104 // ---------- State management methods ----------------- 104 // ---------- State management methods -----------------
105 void save(); 105 void save();
106 void restore(); 106 void restore();
107 unsigned saveCount() { return m_canvasStateStack.size(); } 107 unsigned saveCount() { return m_canvasStateStack.size(); }
108 #if ENABLE(ASSERT) 108 #if ENABLE(ASSERT)
109 void disableDestructionChecks() { m_disableDestructionChecks = true; } 109 void disableDestructionChecks() { m_disableDestructionChecks = true; }
110 #endif 110 #endif
111 111
112 void saveLayer(const SkRect* bounds, const SkPaint*);
113 void restoreLayer();
114
115 bool hasStroke() const { return strokeStyle() != NoStroke && strokeThickness () > 0; } 112 bool hasStroke() const { return strokeStyle() != NoStroke && strokeThickness () > 0; }
116 113
117 float strokeThickness() const { return immutableState()->strokeData().thickn ess(); } 114 float strokeThickness() const { return immutableState()->strokeData().thickn ess(); }
118 void setStrokeThickness(float thickness) { mutableState()->setStrokeThicknes s(thickness); } 115 void setStrokeThickness(float thickness) { mutableState()->setStrokeThicknes s(thickness); }
119 116
120 StrokeStyle strokeStyle() const { return immutableState()->strokeData().styl e(); } 117 StrokeStyle strokeStyle() const { return immutableState()->strokeData().styl e(); }
121 void setStrokeStyle(StrokeStyle style) { mutableState()->setStrokeStyle(styl e); } 118 void setStrokeStyle(StrokeStyle style) { mutableState()->setStrokeStyle(styl e); }
122 119
123 Color strokeColor() const { return immutableState()->strokeColor(); } 120 Color strokeColor() const { return immutableState()->strokeColor(); }
124 void setStrokeColor(const Color& color) { mutableState()->setStrokeColor(col or); } 121 void setStrokeColor(const Color& color) { mutableState()->setStrokeColor(col or); }
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 void drawBidiText(const Font&, const TextRunPaintInfo&, const FloatPoint&, F ont::CustomFontNotReadyAction = Font::DoNotPaintIfFontNotReady); 326 void drawBidiText(const Font&, const TextRunPaintInfo&, const FloatPoint&, F ont::CustomFontNotReadyAction = Font::DoNotPaintIfFontNotReady);
330 void drawHighlightForText(const Font&, const TextRun&, const FloatPoint&, in t h, const Color& backgroundColor, int from = 0, int to = -1); 327 void drawHighlightForText(const Font&, const TextRun&, const FloatPoint&, in t h, const Color& backgroundColor, int from = 0, int to = -1);
331 328
332 void drawLineForText(const FloatPoint&, float width, bool printing); 329 void drawLineForText(const FloatPoint&, float width, bool printing);
333 enum DocumentMarkerLineStyle { 330 enum DocumentMarkerLineStyle {
334 DocumentMarkerSpellingLineStyle, 331 DocumentMarkerSpellingLineStyle,
335 DocumentMarkerGrammarLineStyle 332 DocumentMarkerGrammarLineStyle
336 }; 333 };
337 void drawLineForDocumentMarker(const FloatPoint&, float width, DocumentMarke rLineStyle); 334 void drawLineForDocumentMarker(const FloatPoint&, float width, DocumentMarke rLineStyle);
338 335
336 // This behaves the same as save(), but in addition it allocates an offscree n buffer.
339 void beginTransparencyLayer(float opacity, const FloatRect* = 0); 337 void beginTransparencyLayer(float opacity, const FloatRect* = 0);
338 // Apply CompositeOperator when the layer is composited on the backdrop (i.e . endLayer()).
339 // Don't change the current CompositeOperator state.
340 void beginLayer(float opacity, CompositeOperator, const FloatRect* = 0, Colo rFilter = ColorFilterNone, ImageFilter* = 0); 340 void beginLayer(float opacity, CompositeOperator, const FloatRect* = 0, Colo rFilter = ColorFilterNone, ImageFilter* = 0);
341 void endLayer(); 341 void endLayer();
342 342
343 void beginCull(const FloatRect&); 343 void beginCull(const FloatRect&);
344 void endCull(); 344 void endCull();
345 345
346 // Instead of being dispatched to the active canvas, draw commands following beginRecording() 346 // Instead of being dispatched to the active canvas, draw commands following beginRecording()
347 // are stored in a display list that can be replayed at a later time. Pass i n the bounding 347 // are stored in a display list that can be replayed at a later time. Pass i n the bounding
348 // rectangle for the content in the list. 348 // rectangle for the content in the list.
349 void beginRecording(const FloatRect&, uint32_t = 0); 349 void beginRecording(const FloatRect&, uint32_t = 0);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 #else 440 #else
441 static inline int focusRingOutset(int offset) { return 0; } 441 static inline int focusRingOutset(int offset) { return 0; }
442 static inline int focusRingWidth(int width) { return 1; } 442 static inline int focusRingWidth(int width) { return 1; }
443 static SkPMColor lineColors(int); 443 static SkPMColor lineColors(int);
444 static SkPMColor antiColors1(int); 444 static SkPMColor antiColors1(int);
445 static SkPMColor antiColors2(int); 445 static SkPMColor antiColors2(int);
446 static void draw1xMarker(SkBitmap*, int); 446 static void draw1xMarker(SkBitmap*, int);
447 static void draw2xMarker(SkBitmap*, int); 447 static void draw2xMarker(SkBitmap*, int);
448 #endif 448 #endif
449 449
450 void saveLayer(const SkRect* bounds, const SkPaint*);
451 void restoreLayer();
452
450 // Helpers for drawing a focus ring (drawFocusRing) 453 // Helpers for drawing a focus ring (drawFocusRing)
451 float prepareFocusRingPaint(SkPaint&, const Color&, int width) const; 454 float prepareFocusRingPaint(SkPaint&, const Color&, int width) const;
452 void drawFocusRingPath(const SkPath&, const Color&, int width); 455 void drawFocusRingPath(const SkPath&, const Color&, int width);
453 void drawFocusRingRect(const SkRect&, const Color&, int width); 456 void drawFocusRingRect(const SkRect&, const Color&, int width);
454 457
455 // SkCanvas wrappers. 458 // SkCanvas wrappers.
456 void clipPath(const SkPath&, AntiAliasingMode = NotAntiAliased, SkRegion::Op = SkRegion::kIntersect_Op); 459 void clipPath(const SkPath&, AntiAliasingMode = NotAntiAliased, SkRegion::Op = SkRegion::kIntersect_Op);
457 void clipRRect(const SkRRect&, AntiAliasingMode = NotAntiAliased, SkRegion:: Op = SkRegion::kIntersect_Op); 460 void clipRRect(const SkRRect&, AntiAliasingMode = NotAntiAliased, SkRegion:: Op = SkRegion::kIntersect_Op);
458 void concat(const SkMatrix&); 461 void concat(const SkMatrix&);
459 void drawRRect(const SkRRect&, const SkPaint&); 462 void drawRRect(const SkRRect&, const SkPaint&);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 bool m_accelerated : 1; 544 bool m_accelerated : 1;
542 bool m_isCertainlyOpaque : 1; 545 bool m_isCertainlyOpaque : 1;
543 bool m_printing : 1; 546 bool m_printing : 1;
544 bool m_antialiasHairlineImages : 1; 547 bool m_antialiasHairlineImages : 1;
545 bool m_shouldSmoothFonts : 1; 548 bool m_shouldSmoothFonts : 1;
546 }; 549 };
547 550
548 } // namespace blink 551 } // namespace blink
549 552
550 #endif // GraphicsContext_h 553 #endif // GraphicsContext_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698