OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved. |
3 * Copyright (C) 2007 Alp Toker <alp@atoker.com> | 3 * Copyright (C) 2007 Alp Toker <alp@atoker.com> |
4 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. | 4 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. 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 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 ContextTypeCount, | 214 ContextTypeCount, |
215 }; | 215 }; |
216 | 216 |
217 // FIXME - The code depends on the context not going away once created, to p
revent JS from | 217 // FIXME - The code depends on the context not going away once created, to p
revent JS from |
218 // seeing a dangling pointer. So for now we will disallow the context from b
eing changed | 218 // seeing a dangling pointer. So for now we will disallow the context from b
eing changed |
219 // once it is created. | 219 // once it is created. |
220 if (type == "2d") { | 220 if (type == "2d") { |
221 if (m_context && !m_context->is2d()) | 221 if (m_context && !m_context->is2d()) |
222 return; | 222 return; |
223 if (!m_context) { | 223 if (!m_context) { |
224 blink::Platform::current()->histogramEnumeration("Canvas.ContextType
", Context2d, ContextTypeCount); | 224 Platform::current()->histogramEnumeration("Canvas.ContextType", Cont
ext2d, ContextTypeCount); |
225 | 225 |
226 m_context = CanvasRenderingContext2D::create(this, attributes, docum
ent()); | 226 m_context = CanvasRenderingContext2D::create(this, attributes, docum
ent()); |
227 setNeedsCompositingUpdate(); | 227 setNeedsCompositingUpdate(); |
228 } | 228 } |
229 result.setCanvasRenderingContext2D(static_cast<CanvasRenderingContext2D*
>(m_context.get())); | 229 result.setCanvasRenderingContext2D(static_cast<CanvasRenderingContext2D*
>(m_context.get())); |
230 return; | 230 return; |
231 } | 231 } |
232 | 232 |
233 // Accept the the provisional "experimental-webgl" or official "webgl" conte
xt ID. | 233 // Accept the the provisional "experimental-webgl" or official "webgl" conte
xt ID. |
234 ContextType contextType = Context2d; | 234 ContextType contextType = Context2d; |
235 bool is3dContext = true; | 235 bool is3dContext = true; |
236 if (type == "experimental-webgl") | 236 if (type == "experimental-webgl") |
237 contextType = ContextExperimentalWebgl; | 237 contextType = ContextExperimentalWebgl; |
238 else if (type == "webgl") | 238 else if (type == "webgl") |
239 contextType = ContextWebgl; | 239 contextType = ContextWebgl; |
240 else if (type == "webgl2") | 240 else if (type == "webgl2") |
241 contextType = ContextWebgl2; | 241 contextType = ContextWebgl2; |
242 else | 242 else |
243 is3dContext = false; | 243 is3dContext = false; |
244 | 244 |
245 if (is3dContext) { | 245 if (is3dContext) { |
246 if (!m_context) { | 246 if (!m_context) { |
247 blink::Platform::current()->histogramEnumeration("Canvas.ContextType
", contextType, ContextTypeCount); | 247 Platform::current()->histogramEnumeration("Canvas.ContextType", cont
extType, ContextTypeCount); |
248 if (contextType == ContextWebgl2) { | 248 if (contextType == ContextWebgl2) { |
249 m_context = WebGL2RenderingContext::create(this, attributes); | 249 m_context = WebGL2RenderingContext::create(this, attributes); |
250 } else { | 250 } else { |
251 m_context = WebGLRenderingContext::create(this, attributes); | 251 m_context = WebGLRenderingContext::create(this, attributes); |
252 } | 252 } |
253 const ComputedStyle* style = ensureComputedStyle(); | 253 const ComputedStyle* style = ensureComputedStyle(); |
254 if (style && m_context) | 254 if (style && m_context) |
255 toWebGLRenderingContextBase(m_context.get())->setFilterQuality(s
tyle->imageRendering() == ImageRenderingPixelated ? kNone_SkFilterQuality : kLow
_SkFilterQuality); | 255 toWebGLRenderingContextBase(m_context.get())->setFilterQuality(s
tyle->imageRendering() == ImageRenderingPixelated ? kNone_SkFilterQuality : kLow
_SkFilterQuality); |
256 setNeedsCompositingUpdate(); | 256 setNeedsCompositingUpdate(); |
257 updateExternallyAllocatedMemory(); | 257 updateExternallyAllocatedMemory(); |
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
546 return false; | 546 return false; |
547 | 547 |
548 Settings* settings = document().settings(); | 548 Settings* settings = document().settings(); |
549 if (!settings || !settings->accelerated2dCanvasEnabled()) | 549 if (!settings || !settings->accelerated2dCanvasEnabled()) |
550 return false; | 550 return false; |
551 | 551 |
552 // Do not use acceleration for small canvas. | 552 // Do not use acceleration for small canvas. |
553 if (size.width() * size.height() < settings->minimumAccelerated2dCanvasSize(
)) | 553 if (size.width() * size.height() < settings->minimumAccelerated2dCanvasSize(
)) |
554 return false; | 554 return false; |
555 | 555 |
556 if (!blink::Platform::current()->canAccelerate2dCanvas()) | 556 if (!Platform::current()->canAccelerate2dCanvas()) |
557 return false; | 557 return false; |
558 | 558 |
559 return true; | 559 return true; |
560 } | 560 } |
561 | 561 |
562 class UnacceleratedSurfaceFactory : public RecordingImageBufferFallbackSurfaceFa
ctory { | 562 class UnacceleratedSurfaceFactory : public RecordingImageBufferFallbackSurfaceFa
ctory { |
563 public: | 563 public: |
564 virtual PassOwnPtr<ImageBufferSurface> createSurface(const IntSize& size, Op
acityMode opacityMode) | 564 virtual PassOwnPtr<ImageBufferSurface> createSurface(const IntSize& size, Op
acityMode opacityMode) |
565 { | 565 { |
566 return adoptPtr(new UnacceleratedImageBufferSurface(size, opacityMode)); | 566 return adoptPtr(new UnacceleratedImageBufferSurface(size, opacityMode)); |
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
877 { | 877 { |
878 return FloatSize(width(), height()); | 878 return FloatSize(width(), height()); |
879 } | 879 } |
880 | 880 |
881 bool HTMLCanvasElement::isOpaque() const | 881 bool HTMLCanvasElement::isOpaque() const |
882 { | 882 { |
883 return m_context && !m_context->hasAlpha(); | 883 return m_context && !m_context->hasAlpha(); |
884 } | 884 } |
885 | 885 |
886 } // blink | 886 } // blink |
OLD | NEW |