OLD | NEW |
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 19 matching lines...) Expand all Loading... |
30 | 30 |
31 #include "platform/PlatformExport.h" | 31 #include "platform/PlatformExport.h" |
32 #include "platform/fonts/Font.h" | 32 #include "platform/fonts/Font.h" |
33 #include "platform/geometry/FloatRect.h" | 33 #include "platform/geometry/FloatRect.h" |
34 #include "platform/geometry/FloatRoundedRect.h" | 34 #include "platform/geometry/FloatRoundedRect.h" |
35 #include "platform/graphics/DashArray.h" | 35 #include "platform/graphics/DashArray.h" |
36 #include "platform/graphics/DrawLooperBuilder.h" | 36 #include "platform/graphics/DrawLooperBuilder.h" |
37 #include "platform/graphics/ImageOrientation.h" | 37 #include "platform/graphics/ImageOrientation.h" |
38 #include "platform/graphics/GraphicsContextState.h" | 38 #include "platform/graphics/GraphicsContextState.h" |
39 #include "platform/graphics/skia/SkiaUtils.h" | 39 #include "platform/graphics/skia/SkiaUtils.h" |
| 40 #include "third_party/skia/include/core/SkMetaData.h" |
40 #include "third_party/skia/include/core/SkPictureRecorder.h" | 41 #include "third_party/skia/include/core/SkPictureRecorder.h" |
41 #include "third_party/skia/include/core/SkRegion.h" | 42 #include "third_party/skia/include/core/SkRegion.h" |
42 #include "wtf/FastAllocBase.h" | 43 #include "wtf/FastAllocBase.h" |
43 #include "wtf/Forward.h" | 44 #include "wtf/Forward.h" |
44 #include "wtf/Noncopyable.h" | 45 #include "wtf/Noncopyable.h" |
45 #include "wtf/PassOwnPtr.h" | 46 #include "wtf/PassOwnPtr.h" |
46 | 47 |
47 class SkBitmap; | 48 class SkBitmap; |
48 class SkImage; | 49 class SkImage; |
49 class SkPaint; | 50 class SkPaint; |
(...skipping 16 matching lines...) Expand all Loading... |
66 enum AccessMode { | 67 enum AccessMode { |
67 ReadOnly, | 68 ReadOnly, |
68 ReadWrite | 69 ReadWrite |
69 }; | 70 }; |
70 | 71 |
71 enum DisabledMode { | 72 enum DisabledMode { |
72 NothingDisabled = 0, // Run as normal. | 73 NothingDisabled = 0, // Run as normal. |
73 FullyDisabled = 1 // Do absolutely minimal work to remove the cost of th
e context from performance tests. | 74 FullyDisabled = 1 // Do absolutely minimal work to remove the cost of th
e context from performance tests. |
74 }; | 75 }; |
75 | 76 |
76 explicit GraphicsContext(DisplayItemList*, DisabledMode = NothingDisabled); | 77 explicit GraphicsContext(DisplayItemList*, DisabledMode = NothingDisabled, S
kMetaData* = 0); |
77 | 78 |
78 // TODO(chrishtr): Once Slimming Paint launches this should be removed (crbu
g.com/471333). | 79 // TODO(chrishtr): Once Slimming Paint launches this should be removed (crbu
g.com/471333). |
79 // A 0 canvas is allowed, but in such cases the context must only have canva
s | 80 // A 0 canvas is allowed, but in such cases the context must only have canva
s |
80 // related commands called when within a beginRecording/endRecording block. | 81 // related commands called when within a beginRecording/endRecording block. |
81 // Furthermore, save/restore calls must be balanced any time the canvas is 0
. | 82 // Furthermore, save/restore calls must be balanced any time the canvas is 0
. |
82 static PassOwnPtr<GraphicsContext> deprecatedCreateWithCanvas(SkCanvas*, Dis
abledMode = NothingDisabled); | 83 static PassOwnPtr<GraphicsContext> deprecatedCreateWithCanvas(SkCanvas*, Dis
abledMode = NothingDisabled, SkMetaData* = 0); |
83 | 84 |
84 ~GraphicsContext(); | 85 ~GraphicsContext(); |
85 | 86 |
86 SkCanvas* canvas() { return m_canvas; } | 87 SkCanvas* canvas() { return m_canvas; } |
87 const SkCanvas* canvas() const { return m_canvas; } | 88 const SkCanvas* canvas() const { return m_canvas; } |
88 | 89 |
89 DisplayItemList* displayItemList() { return m_displayItemList; } | 90 DisplayItemList* displayItemList() { return m_displayItemList; } |
90 | 91 |
91 void resetCanvas(SkCanvas*); | 92 void resetCanvas(SkCanvas*); |
92 | 93 |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 // public decl needed for OwnPtr wrapper. | 300 // public decl needed for OwnPtr wrapper. |
300 class RecordingState; | 301 class RecordingState; |
301 | 302 |
302 #if ENABLE(ASSERT) | 303 #if ENABLE(ASSERT) |
303 void setInDrawingRecorder(bool); | 304 void setInDrawingRecorder(bool); |
304 #endif | 305 #endif |
305 | 306 |
306 static PassRefPtr<SkColorFilter> WebCoreColorFilterToSkiaColorFilter(ColorFi
lter); | 307 static PassRefPtr<SkColorFilter> WebCoreColorFilterToSkiaColorFilter(ColorFi
lter); |
307 | 308 |
308 private: | 309 private: |
309 explicit GraphicsContext(SkCanvas*, DisplayItemList*, DisabledMode = Nothing
Disabled); | 310 explicit GraphicsContext(SkCanvas*, DisplayItemList*, DisabledMode = Nothing
Disabled, SkMetaData* = 0); |
310 | 311 |
311 const GraphicsContextState* immutableState() const { return m_paintState; } | 312 const GraphicsContextState* immutableState() const { return m_paintState; } |
312 | 313 |
313 GraphicsContextState* mutableState() | 314 GraphicsContextState* mutableState() |
314 { | 315 { |
315 realizePaintSave(); | 316 realizePaintSave(); |
316 return m_paintState; | 317 return m_paintState; |
317 } | 318 } |
318 | 319 |
319 template<typename DrawTextFunc> | 320 template<typename DrawTextFunc> |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 m_paintState = m_paintStateStack[m_paintStateIndex].get(); | 364 m_paintState = m_paintStateStack[m_paintStateIndex].get(); |
364 m_paintState->copy(*priorPaintState); | 365 m_paintState->copy(*priorPaintState); |
365 } | 366 } |
366 } | 367 } |
367 } | 368 } |
368 | 369 |
369 void fillRectWithRoundedHole(const FloatRect&, const FloatRoundedRect& round
edHoleRect, const Color&); | 370 void fillRectWithRoundedHole(const FloatRect&, const FloatRoundedRect& round
edHoleRect, const Color&); |
370 | 371 |
371 bool isRecording() const; | 372 bool isRecording() const; |
372 | 373 |
| 374 const SkMetaData& metaData() const { return m_metaData; } |
| 375 |
373 // null indicates painting is contextDisabled. Never delete this object. | 376 // null indicates painting is contextDisabled. Never delete this object. |
374 SkCanvas* m_canvas; | 377 SkCanvas* m_canvas; |
375 | 378 |
376 // This stores the canvas object used to construct the GraphicsContext, if a
ny. It is only | 379 // This stores the canvas object used to construct the GraphicsContext, if a
ny. It is only |
377 // used when Slimming Paint is active. | 380 // used when Slimming Paint is active. |
378 SkCanvas* m_originalCanvas; | 381 SkCanvas* m_originalCanvas; |
379 | 382 |
380 // This being null indicates not to paint into a DisplayItemList, and instea
d directly into the canvas. | 383 // This being null indicates not to paint into a DisplayItemList, and instea
d directly into the canvas. |
381 DisplayItemList* m_displayItemList; | 384 DisplayItemList* m_displayItemList; |
382 | 385 |
383 // Paint states stack. Enables local drawing state change with save()/restor
e() calls. | 386 // Paint states stack. Enables local drawing state change with save()/restor
e() calls. |
384 // This state controls the appearance of drawn content. | 387 // This state controls the appearance of drawn content. |
385 // We do not delete from this stack to avoid memory churn. | 388 // We do not delete from this stack to avoid memory churn. |
386 Vector<OwnPtr<GraphicsContextState>> m_paintStateStack; | 389 Vector<OwnPtr<GraphicsContextState>> m_paintStateStack; |
387 // Current index on the stack. May not be the last thing on the stack. | 390 // Current index on the stack. May not be the last thing on the stack. |
388 unsigned m_paintStateIndex; | 391 unsigned m_paintStateIndex; |
389 // Raw pointer to the current state. | 392 // Raw pointer to the current state. |
390 GraphicsContextState* m_paintState; | 393 GraphicsContextState* m_paintState; |
391 | 394 |
392 // Only used when Slimming Paint is off. When it is on, m_pictureRecorder is
used instead. | 395 // Only used when Slimming Paint is off. When it is on, m_pictureRecorder is
used instead. |
393 Vector<OwnPtr<RecordingState>> m_recordingStateStack; | 396 Vector<OwnPtr<RecordingState>> m_recordingStateStack; |
394 SkPictureRecorder m_pictureRecorder; | 397 SkPictureRecorder m_pictureRecorder; |
395 | 398 |
| 399 SkMetaData m_metaData; |
| 400 |
396 #if ENABLE(ASSERT) | 401 #if ENABLE(ASSERT) |
397 unsigned m_layerCount; | 402 unsigned m_layerCount; |
398 bool m_disableDestructionChecks; | 403 bool m_disableDestructionChecks; |
399 bool m_inDrawingRecorder; | 404 bool m_inDrawingRecorder; |
400 #endif | 405 #endif |
401 | 406 |
402 const DisabledMode m_disabledState; | 407 const DisabledMode m_disabledState; |
403 | 408 |
404 float m_deviceScaleFactor; | 409 float m_deviceScaleFactor; |
405 | 410 |
406 unsigned m_accelerated : 1; | 411 unsigned m_accelerated : 1; |
407 unsigned m_printing : 1; | 412 unsigned m_printing : 1; |
| 413 unsigned m_hasMetaData : 1; |
408 }; | 414 }; |
409 | 415 |
410 } // namespace blink | 416 } // namespace blink |
411 | 417 |
412 #endif // GraphicsContext_h | 418 #endif // GraphicsContext_h |
OLD | NEW |