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

Side by Side Diff: sky/engine/platform/graphics/GraphicsContext.h

Issue 1017593005: Add a basic custom painting facility to Sky (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Add missing files Created 5 years, 9 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 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 bool getTransformedClipBounds(FloatRect* bounds) const; 148 bool getTransformedClipBounds(FloatRect* bounds) const;
149 SkMatrix getTotalMatrix() const; 149 SkMatrix getTotalMatrix() const;
150 150
151 void setShouldAntialias(bool antialias) { mutableState()->setShouldAntialias (antialias); } 151 void setShouldAntialias(bool antialias) { mutableState()->setShouldAntialias (antialias); }
152 bool shouldAntialias() const { return immutableState()->shouldAntialias(); } 152 bool shouldAntialias() const { return immutableState()->shouldAntialias(); }
153 153
154 // Disable the anti-aliasing optimization for scales/multiple-of-90-degrees 154 // Disable the anti-aliasing optimization for scales/multiple-of-90-degrees
155 // rotations of thin ("hairline") images. 155 // rotations of thin ("hairline") images.
156 // Note: This will only be reliable when the device pixel scale/ratio is 156 // Note: This will only be reliable when the device pixel scale/ratio is
157 // fixed (e.g. when drawing to context backed by an ImageBuffer). 157 // fixed (e.g. when drawing to context backed by an ImageBuffer).
158 void disableAntialiasingOptimizationForHairlineImages() { ASSERT(!isRecordin g()); m_antialiasHairlineImages = true; } 158 void disableAntialiasingOptimizationForHairlineImages() { m_antialiasHairlin eImages = true; }
159 bool shouldAntialiasHairlineImages() const { return m_antialiasHairlineImage s; } 159 bool shouldAntialiasHairlineImages() const { return m_antialiasHairlineImage s; }
160 160
161 void setShouldClampToSourceRect(bool clampToSourceRect) { mutableState()->se tShouldClampToSourceRect(clampToSourceRect); } 161 void setShouldClampToSourceRect(bool clampToSourceRect) { mutableState()->se tShouldClampToSourceRect(clampToSourceRect); }
162 bool shouldClampToSourceRect() const { return immutableState()->shouldClampT oSourceRect(); } 162 bool shouldClampToSourceRect() const { return immutableState()->shouldClampT oSourceRect(); }
163 163
164 // FIXME: the setter is only used once, at construction time; convert to a c onstructor param, 164 // FIXME: the setter is only used once, at construction time; convert to a c onstructor param,
165 // and possibly consolidate with other flags (paintDisabled, isPrinting, ... ) 165 // and possibly consolidate with other flags (paintDisabled, isPrinting, ... )
166 void setShouldSmoothFonts(bool smoothFonts) { m_shouldSmoothFonts = smoothFo nts; } 166 void setShouldSmoothFonts(bool smoothFonts) { m_shouldSmoothFonts = smoothFo nts; }
167 167
168 // Turn off LCD text for the paint if not supported on this context. 168 // Turn off LCD text for the paint if not supported on this context.
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 251
252 void clearRect(const FloatRect&); 252 void clearRect(const FloatRect&);
253 253
254 void strokeRect(const FloatRect&); 254 void strokeRect(const FloatRect&);
255 void strokeRect(const FloatRect&, float lineWidth); 255 void strokeRect(const FloatRect&, float lineWidth);
256 256
257 void fillBetweenRoundedRects(const IntRect&, const IntSize& outerTopLeft, co nst IntSize& outerTopRight, const IntSize& outerBottomLeft, const IntSize& outer BottomRight, 257 void fillBetweenRoundedRects(const IntRect&, const IntSize& outerTopLeft, co nst IntSize& outerTopRight, const IntSize& outerBottomLeft, const IntSize& outer BottomRight,
258 const IntRect&, const IntSize& innerTopLeft, const IntSize& innerTopRigh t, const IntSize& innerBottomLeft, const IntSize& innerBottomRight, const Color& ); 258 const IntRect&, const IntSize& innerTopLeft, const IntSize& innerTopRigh t, const IntSize& innerBottomLeft, const IntSize& innerBottomRight, const Color& );
259 void fillBetweenRoundedRects(const RoundedRect&, const RoundedRect&, const C olor&); 259 void fillBetweenRoundedRects(const RoundedRect&, const RoundedRect&, const C olor&);
260 260
261 void drawDisplayList(DisplayList*); 261 void drawDisplayList(DisplayList*, const FloatPoint&);
262 262
263 void drawImage(Image*, const IntPoint&, CompositeOperator = CompositeSourceO ver, RespectImageOrientationEnum = DoNotRespectImageOrientation); 263 void drawImage(Image*, const IntPoint&, CompositeOperator = CompositeSourceO ver, RespectImageOrientationEnum = DoNotRespectImageOrientation);
264 void drawImage(Image*, const IntRect&, CompositeOperator = CompositeSourceOv er, RespectImageOrientationEnum = DoNotRespectImageOrientation); 264 void drawImage(Image*, const IntRect&, CompositeOperator = CompositeSourceOv er, RespectImageOrientationEnum = DoNotRespectImageOrientation);
265 void drawImage(Image*, const FloatRect& destRect); 265 void drawImage(Image*, const FloatRect& destRect);
266 void drawImage(Image*, const FloatRect& destRect, const FloatRect& srcRect, CompositeOperator = CompositeSourceOver, RespectImageOrientationEnum = DoNotResp ectImageOrientation); 266 void drawImage(Image*, const FloatRect& destRect, const FloatRect& srcRect, CompositeOperator = CompositeSourceOver, RespectImageOrientationEnum = DoNotResp ectImageOrientation);
267 void drawImage(Image*, const FloatRect& destRect, const FloatRect& srcRect, CompositeOperator, WebBlendMode, RespectImageOrientationEnum = DoNotRespectImage Orientation); 267 void drawImage(Image*, const FloatRect& destRect, const FloatRect& srcRect, CompositeOperator, WebBlendMode, RespectImageOrientationEnum = DoNotRespectImage Orientation);
268 268
269 void drawTiledImage(Image*, const IntRect& destRect, const IntPoint& srcPoin t, const IntSize& tileSize, 269 void drawTiledImage(Image*, const IntRect& destRect, const IntPoint& srcPoin t, const IntSize& tileSize,
270 CompositeOperator = CompositeSourceOver, WebBlendMode = WebBlendModeNorm al, const IntSize& repeatSpacing = IntSize()); 270 CompositeOperator = CompositeSourceOver, WebBlendMode = WebBlendModeNorm al, const IntSize& repeatSpacing = IntSize());
271 void drawTiledImage(Image*, const IntRect& destRect, const IntRect& srcRect, 271 void drawTiledImage(Image*, const IntRect& destRect, const IntRect& srcRect,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 enum DocumentMarkerLineStyle { 312 enum DocumentMarkerLineStyle {
313 DocumentMarkerSpellingLineStyle, 313 DocumentMarkerSpellingLineStyle,
314 DocumentMarkerGrammarLineStyle 314 DocumentMarkerGrammarLineStyle
315 }; 315 };
316 void drawLineForDocumentMarker(const FloatPoint&, float width, DocumentMarke rLineStyle); 316 void drawLineForDocumentMarker(const FloatPoint&, float width, DocumentMarke rLineStyle);
317 317
318 void beginTransparencyLayer(float opacity, const FloatRect* = 0); 318 void beginTransparencyLayer(float opacity, const FloatRect* = 0);
319 void beginLayer(float opacity, CompositeOperator, const FloatRect* = 0, Colo rFilter = ColorFilterNone, ImageFilter* = 0); 319 void beginLayer(float opacity, CompositeOperator, const FloatRect* = 0, Colo rFilter = ColorFilterNone, ImageFilter* = 0);
320 void endLayer(); 320 void endLayer();
321 321
322 // Instead of being dispatched to the active canvas, draw commands following beginRecording()
323 // are stored in a display list that can be replayed at a later time.
324 void beginRecording(const FloatRect& bounds);
325 PassRefPtr<DisplayList> endRecording();
326
327 bool hasShadow() const; 322 bool hasShadow() const;
328 void setShadow(const FloatSize& offset, float blur, const Color&, 323 void setShadow(const FloatSize& offset, float blur, const Color&,
329 DrawLooperBuilder::ShadowTransformMode = DrawLooperBuilder::ShadowRespec tsTransforms, 324 DrawLooperBuilder::ShadowTransformMode = DrawLooperBuilder::ShadowRespec tsTransforms,
330 DrawLooperBuilder::ShadowAlphaMode = DrawLooperBuilder::ShadowRespectsAl pha); 325 DrawLooperBuilder::ShadowAlphaMode = DrawLooperBuilder::ShadowRespectsAl pha);
331 void clearShadow() { clearDrawLooper(); } 326 void clearShadow() { clearDrawLooper(); }
332 327
333 // It is assumed that this draw looper is used only for shadows 328 // It is assumed that this draw looper is used only for shadows
334 // (i.e. a draw looper is set if and only if there is a shadow). 329 // (i.e. a draw looper is set if and only if there is a shadow).
335 // The builder passed into this method will be destroyed. 330 // The builder passed into this method will be destroyed.
336 void setDrawLooper(PassOwnPtr<DrawLooperBuilder>); 331 void setDrawLooper(PassOwnPtr<DrawLooperBuilder>);
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 return; 454 return;
460 455
461 m_canvas->save(); 456 m_canvas->save();
462 m_pendingCanvasSave = false; 457 m_pendingCanvasSave = false;
463 } 458 }
464 459
465 void didDrawTextInRect(const SkRect& textRect); 460 void didDrawTextInRect(const SkRect& textRect);
466 461
467 void fillRectWithRoundedHole(const IntRect&, const RoundedRect& roundedHoleR ect, const Color&); 462 void fillRectWithRoundedHole(const IntRect&, const RoundedRect& roundedHoleR ect, const Color&);
468 463
469 bool isRecording() const;
470
471 // null indicates painting is contextDisabled. Never delete this object. 464 // null indicates painting is contextDisabled. Never delete this object.
472 SkCanvas* m_canvas; 465 SkCanvas* m_canvas;
473 466
474 // Paint states stack. Enables local drawing state change with save()/restor e() calls. 467 // Paint states stack. Enables local drawing state change with save()/restor e() calls.
475 // This state controls the appearance of drawn content. 468 // This state controls the appearance of drawn content.
476 // We do not delete from this stack to avoid memory churn. 469 // We do not delete from this stack to avoid memory churn.
477 Vector<OwnPtr<GraphicsContextState> > m_paintStateStack; 470 Vector<OwnPtr<GraphicsContextState> > m_paintStateStack;
478 // Current index on the stack. May not be the last thing on the stack. 471 // Current index on the stack. May not be the last thing on the stack.
479 unsigned m_paintStateIndex; 472 unsigned m_paintStateIndex;
480 // Raw pointer to the current state. 473 // Raw pointer to the current state.
481 GraphicsContextState* m_paintState; 474 GraphicsContextState* m_paintState;
482 475
483 // Currently pending save flags for Skia Canvas state. 476 // Currently pending save flags for Skia Canvas state.
484 // Canvas state includes the canavs, it's matrix and clips. Think of it as _ where_ 477 // Canvas state includes the canavs, it's matrix and clips. Think of it as _ where_
485 // the draw operations will happen. 478 // the draw operations will happen.
486 struct CanvasSaveState; 479 struct CanvasSaveState;
487 Vector<CanvasSaveState> m_canvasStateStack; 480 Vector<CanvasSaveState> m_canvasStateStack;
488 bool m_pendingCanvasSave; 481 bool m_pendingCanvasSave;
489 482
490 struct RecordingState;
491 Vector<RecordingState> m_recordingStateStack;
492
493 #if ENABLE(ASSERT) 483 #if ENABLE(ASSERT)
494 unsigned m_layerCount; 484 unsigned m_layerCount;
495 bool m_disableDestructionChecks; 485 bool m_disableDestructionChecks;
496 #endif 486 #endif
497 // Tracks the region painted opaque via the GraphicsContext. 487 // Tracks the region painted opaque via the GraphicsContext.
498 RegionTracker m_trackedRegion; 488 RegionTracker m_trackedRegion;
499 489
500 // Tracks the region where text is painted via the GraphicsContext. 490 // Tracks the region where text is painted via the GraphicsContext.
501 SkRect m_textRegion; 491 SkRect m_textRegion;
502 492
503 unsigned m_disabledState; 493 unsigned m_disabledState;
504 494
505 float m_deviceScaleFactor; 495 float m_deviceScaleFactor;
506 496
507 // Activation for the above region tracking features 497 // Activation for the above region tracking features
508 unsigned m_regionTrackingMode : 2; 498 unsigned m_regionTrackingMode : 2;
509 bool m_trackTextRegion : 1; 499 bool m_trackTextRegion : 1;
510 500
511 bool m_accelerated : 1; 501 bool m_accelerated : 1;
512 bool m_isCertainlyOpaque : 1; 502 bool m_isCertainlyOpaque : 1;
513 bool m_antialiasHairlineImages : 1; 503 bool m_antialiasHairlineImages : 1;
514 bool m_shouldSmoothFonts : 1; 504 bool m_shouldSmoothFonts : 1;
515 }; 505 };
516 506
517 } // namespace blink 507 } // namespace blink
518 508
519 #endif // SKY_ENGINE_PLATFORM_GRAPHICS_GRAPHICSCONTEXT_H_ 509 #endif // SKY_ENGINE_PLATFORM_GRAPHICS_GRAPHICSCONTEXT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698