• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2010, Google Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *     * Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  *     * Redistributions in binary form must reproduce the above
10  * copyright notice, this list of conditions and the following disclaimer
11  * in the documentation and/or other materials provided with the
12  * distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  */
26 
27 #include "config.h"
28 
29 #include "core/html/canvas/WebGLContextAttributes.h"
30 
31 #include "core/frame/Settings.h"
32 
33 namespace blink {
34 
35 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(WebGLContextAttributes);
36 
create()37 PassRefPtrWillBeRawPtr<WebGLContextAttributes> WebGLContextAttributes::create()
38 {
39     return adoptRefWillBeNoop(new WebGLContextAttributes());
40 }
41 
WebGLContextAttributes()42 WebGLContextAttributes::WebGLContextAttributes()
43     : CanvasContextAttributes()
44     , m_alpha(true)
45     , m_depth(true)
46     , m_stencil(false)
47     , m_antialias(true)
48     , m_premultipliedAlpha(true)
49     , m_preserveDrawingBuffer(false)
50     , m_failIfMajorPerformanceCaveat(false)
51 {
52 }
53 
WebGLContextAttributes(const WebGLContextAttributes & attrs)54 WebGLContextAttributes::WebGLContextAttributes(const WebGLContextAttributes& attrs)
55     : CanvasContextAttributes()
56     , m_alpha(attrs.m_alpha)
57     , m_depth(attrs.m_depth)
58     , m_stencil(attrs.m_stencil)
59     , m_antialias(attrs.m_antialias)
60     , m_premultipliedAlpha(attrs.m_premultipliedAlpha)
61     , m_preserveDrawingBuffer(attrs.m_preserveDrawingBuffer)
62     , m_failIfMajorPerformanceCaveat(attrs.m_failIfMajorPerformanceCaveat)
63 {
64 }
65 
clone() const66 PassRefPtrWillBeRawPtr<WebGLContextAttributes> WebGLContextAttributes::clone() const
67 {
68     return adoptRefWillBeNoop(new WebGLContextAttributes(*this));
69 }
70 
alpha() const71 bool WebGLContextAttributes::alpha() const
72 {
73     return m_alpha;
74 }
75 
setAlpha(bool alpha)76 void WebGLContextAttributes::setAlpha(bool alpha)
77 {
78     m_alpha = alpha;
79 }
80 
depth() const81 bool WebGLContextAttributes::depth() const
82 {
83     return m_depth;
84 }
85 
setDepth(bool depth)86 void WebGLContextAttributes::setDepth(bool depth)
87 {
88     m_depth = depth;
89 }
90 
stencil() const91 bool WebGLContextAttributes::stencil() const
92 {
93     return m_stencil;
94 }
95 
setStencil(bool stencil)96 void WebGLContextAttributes::setStencil(bool stencil)
97 {
98     m_stencil = stencil;
99 }
100 
antialias() const101 bool WebGLContextAttributes::antialias() const
102 {
103     return m_antialias;
104 }
105 
setAntialias(bool antialias)106 void WebGLContextAttributes::setAntialias(bool antialias)
107 {
108     m_antialias = antialias;
109 }
110 
premultipliedAlpha() const111 bool WebGLContextAttributes::premultipliedAlpha() const
112 {
113     return m_premultipliedAlpha;
114 }
115 
setPremultipliedAlpha(bool premultipliedAlpha)116 void WebGLContextAttributes::setPremultipliedAlpha(bool premultipliedAlpha)
117 {
118     m_premultipliedAlpha = premultipliedAlpha;
119 }
120 
preserveDrawingBuffer() const121 bool WebGLContextAttributes::preserveDrawingBuffer() const
122 {
123     return m_preserveDrawingBuffer;
124 }
125 
setPreserveDrawingBuffer(bool preserveDrawingBuffer)126 void WebGLContextAttributes::setPreserveDrawingBuffer(bool preserveDrawingBuffer)
127 {
128     m_preserveDrawingBuffer = preserveDrawingBuffer;
129 }
130 
failIfMajorPerformanceCaveat() const131 bool WebGLContextAttributes::failIfMajorPerformanceCaveat() const
132 {
133     return m_failIfMajorPerformanceCaveat;
134 }
135 
setFailIfMajorPerformanceCaveat(bool failIfMajorPerformanceCaveat)136 void WebGLContextAttributes::setFailIfMajorPerformanceCaveat(bool failIfMajorPerformanceCaveat)
137 {
138     m_failIfMajorPerformanceCaveat = failIfMajorPerformanceCaveat;
139 }
140 
attributes(const blink::WebString & topDocumentURL,Settings * settings,unsigned webGLVersion) const141 blink::WebGraphicsContext3D::Attributes WebGLContextAttributes::attributes(
142     const blink::WebString& topDocumentURL, Settings* settings, unsigned webGLVersion) const
143 {
144     blink::WebGraphicsContext3D::Attributes attrs;
145 
146     attrs.alpha = m_alpha;
147     attrs.depth = m_depth;
148     attrs.stencil = m_stencil;
149     attrs.antialias = m_antialias;
150     if (m_antialias) {
151         if (settings && !settings->openGLMultisamplingEnabled())
152             attrs.antialias = false;
153     }
154     attrs.premultipliedAlpha = m_premultipliedAlpha;
155     attrs.failIfMajorPerformanceCaveat = m_failIfMajorPerformanceCaveat;
156 
157     attrs.noExtensions = true;
158     attrs.shareResources = false;
159     attrs.preferDiscreteGPU = true;
160 
161     attrs.topDocumentURL = topDocumentURL;
162 
163     attrs.webGL = true;
164     attrs.webGLVersion = webGLVersion;
165 
166     return attrs;
167 }
168 
169 } // namespace blink
170