OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. | 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. |
3 * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies) |
4 * Copyright (C) 2007 Alp Toker <alp@atoker.com> | 4 * Copyright (C) 2007 Alp Toker <alp@atoker.com> |
5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> | 5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> |
6 * Copyright (C) 2008 Dirk Schulze <krit@webkit.org> | 6 * Copyright (C) 2008 Dirk Schulze <krit@webkit.org> |
7 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. | 7 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. |
8 * Copyright (C) 2012, 2013 Intel Corporation. All rights reserved. | 8 * Copyright (C) 2012, 2013 Intel Corporation. All rights reserved. |
9 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 9 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
10 * | 10 * |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 static const char ltr[] = "ltr"; | 83 static const char ltr[] = "ltr"; |
84 static const double TryRestoreContextInterval = 0.5; | 84 static const double TryRestoreContextInterval = 0.5; |
85 static const unsigned MaxTryRestoreContextAttempts = 4; | 85 static const unsigned MaxTryRestoreContextAttempts = 4; |
86 static const unsigned FetchedFontsCacheLimit = 50; | 86 static const unsigned FetchedFontsCacheLimit = 50; |
87 | 87 |
88 static bool contextLostRestoredEventsEnabled() | 88 static bool contextLostRestoredEventsEnabled() |
89 { | 89 { |
90 return RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled(); | 90 return RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled(); |
91 } | 91 } |
92 | 92 |
93 CanvasRenderingContext2D::CanvasRenderingContext2D(HTMLCanvasElement* canvas, co
nst Canvas2DContextAttributes* attrs, Document& document) | 93 static Canvas2DContextStorage storageFromAttributes(const CanvasContextCreationA
ttributes& attrs) |
| 94 { |
| 95 if (!RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled()) |
| 96 return PersistentStorage; |
| 97 |
| 98 // The other valid option is "persistent" -- but since the default |
| 99 // is Persistent, it isn't necessary to test for it explicitly. |
| 100 if (attrs.hasStorage() && attrs.storage() == "discardable") { |
| 101 return DiscardableStorage; |
| 102 } |
| 103 return PersistentStorage; |
| 104 } |
| 105 |
| 106 CanvasRenderingContext2D::CanvasRenderingContext2D(HTMLCanvasElement* canvas, co
nst CanvasContextCreationAttributes& attrs, Document& document) |
94 : CanvasRenderingContext(canvas) | 107 : CanvasRenderingContext(canvas) |
95 , m_usesCSSCompatibilityParseMode(document.inQuirksMode()) | 108 , m_usesCSSCompatibilityParseMode(document.inQuirksMode()) |
96 , m_clipAntialiasing(NotAntiAliased) | 109 , m_clipAntialiasing(NotAntiAliased) |
97 , m_hasAlpha(!attrs || attrs->alpha()) | 110 , m_hasAlpha(attrs.alpha()) |
98 , m_isContextLost(false) | 111 , m_isContextLost(false) |
99 , m_contextRestorable(true) | 112 , m_contextRestorable(true) |
100 , m_storageMode(!attrs ? PersistentStorage : attrs->parsedStorage()) | 113 , m_storageMode(storageFromAttributes(attrs)) |
101 , m_tryRestoreContextAttemptCount(0) | 114 , m_tryRestoreContextAttemptCount(0) |
102 , m_dispatchContextLostEventTimer(this, &CanvasRenderingContext2D::dispatchC
ontextLostEvent) | 115 , m_dispatchContextLostEventTimer(this, &CanvasRenderingContext2D::dispatchC
ontextLostEvent) |
103 , m_dispatchContextRestoredEventTimer(this, &CanvasRenderingContext2D::dispa
tchContextRestoredEvent) | 116 , m_dispatchContextRestoredEventTimer(this, &CanvasRenderingContext2D::dispa
tchContextRestoredEvent) |
104 , m_tryRestoreContextEventTimer(this, &CanvasRenderingContext2D::tryRestoreC
ontextEvent) | 117 , m_tryRestoreContextEventTimer(this, &CanvasRenderingContext2D::tryRestoreC
ontextEvent) |
105 { | 118 { |
106 if (document.settings() && document.settings()->antialiasedClips2dCanvasEnab
led()) | 119 if (document.settings() && document.settings()->antialiasedClips2dCanvasEnab
led()) |
107 m_clipAntialiasing = AntiAliased; | 120 m_clipAntialiasing = AntiAliased; |
108 m_stateStack.append(adoptPtrWillBeNoop(new State())); | 121 m_stateStack.append(adoptPtrWillBeNoop(new State())); |
109 } | 122 } |
110 | 123 |
(...skipping 2109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2220 if (enabled == state().m_imageSmoothingEnabled) | 2233 if (enabled == state().m_imageSmoothingEnabled) |
2221 return; | 2234 return; |
2222 | 2235 |
2223 GraphicsContext* c = drawingContext(); | 2236 GraphicsContext* c = drawingContext(); |
2224 realizeSaves(c); | 2237 realizeSaves(c); |
2225 modifiableState().m_imageSmoothingEnabled = enabled; | 2238 modifiableState().m_imageSmoothingEnabled = enabled; |
2226 if (c) | 2239 if (c) |
2227 c->setImageInterpolationQuality(enabled ? CanvasDefaultInterpolationQual
ity : InterpolationNone); | 2240 c->setImageInterpolationQuality(enabled ? CanvasDefaultInterpolationQual
ity : InterpolationNone); |
2228 } | 2241 } |
2229 | 2242 |
2230 PassRefPtrWillBeRawPtr<Canvas2DContextAttributes> CanvasRenderingContext2D::getC
ontextAttributes() const | 2243 void CanvasRenderingContext2D::getContextAttributes(Canvas2DContextAttributes& a
ttrs) const |
2231 { | 2244 { |
2232 RefPtrWillBeRawPtr<Canvas2DContextAttributes> attributes = Canvas2DContextAt
tributes::create(); | 2245 attrs.setAlpha(m_hasAlpha); |
2233 attributes->setAlpha(m_hasAlpha); | 2246 if (RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled()) { |
2234 return attributes.release(); | 2247 attrs.setStorage(m_storageMode == PersistentStorage ? "persistent" : "di
scardable"); |
| 2248 } |
2235 } | 2249 } |
2236 | 2250 |
2237 void CanvasRenderingContext2D::drawFocusIfNeeded(Element* element) | 2251 void CanvasRenderingContext2D::drawFocusIfNeeded(Element* element) |
2238 { | 2252 { |
2239 drawFocusIfNeededInternal(m_path, element); | 2253 drawFocusIfNeededInternal(m_path, element); |
2240 } | 2254 } |
2241 | 2255 |
2242 void CanvasRenderingContext2D::drawFocusIfNeeded(Path2D* path2d, Element* elemen
t) | 2256 void CanvasRenderingContext2D::drawFocusIfNeeded(Path2D* path2d, Element* elemen
t) |
2243 { | 2257 { |
2244 drawFocusIfNeededInternal(path2d->path(), element); | 2258 drawFocusIfNeededInternal(path2d->path(), element); |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2360 | 2374 |
2361 unsigned CanvasRenderingContext2D::hitRegionsCount() const | 2375 unsigned CanvasRenderingContext2D::hitRegionsCount() const |
2362 { | 2376 { |
2363 if (m_hitRegionManager) | 2377 if (m_hitRegionManager) |
2364 return m_hitRegionManager->getHitRegionsCount(); | 2378 return m_hitRegionManager->getHitRegionsCount(); |
2365 | 2379 |
2366 return 0; | 2380 return 0; |
2367 } | 2381 } |
2368 | 2382 |
2369 } // namespace blink | 2383 } // namespace blink |
OLD | NEW |