OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * @fileoverview | 6 * @fileoverview |
7 * 'settings-camera' is the Polymer control used to take a picture from the | 7 * 'settings-camera' is the Polymer control used to take a picture from the |
8 * user webcam to use as a ChromeOS profile picture. | 8 * user webcam to use as a ChromeOS profile picture. |
9 * | 9 * |
10 * @group Chrome Settings Elements | 10 * @group Chrome Settings Elements |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
59 }, | 59 }, |
60 | 60 |
61 /** @override */ | 61 /** @override */ |
62 attached: function() { | 62 attached: function() { |
63 this.$.cameraVideo.addEventListener('canplay', function() { | 63 this.$.cameraVideo.addEventListener('canplay', function() { |
64 this.cameraOnline_ = true; | 64 this.cameraOnline_ = true; |
65 }.bind(this)); | 65 }.bind(this)); |
66 }, | 66 }, |
67 | 67 |
68 /** | 68 /** |
69 * Performs photo capture from the live camera stream. 'phototaken' event | |
70 * will be fired as soon as captured photo is available, with 'dataURL' | |
71 * property containing the photo encoded as a data URL. | |
72 * @private | |
73 */ | |
74 takePhoto: function() { | |
tommycli
2016/02/19 23:59:01
Code is same, just made public and moved to public
| |
75 if (!this.cameraOnline_) | |
76 return; | |
77 var canvas = /** @type {HTMLCanvasElement} */( | |
78 document.createElement('canvas')); | |
79 canvas.width = CAPTURE_SIZE.width; | |
80 canvas.height = CAPTURE_SIZE.height; | |
81 this.captureFrame_( | |
82 this.$.cameraVideo, | |
83 /** @type {!CanvasRenderingContext2D} */(canvas.getContext('2d'))); | |
84 | |
85 var photoDataUrl = this.isFlipped_ ? this.flipFrame_(canvas) : | |
86 canvas.toDataURL('image/png'); | |
87 this.fire('phototaken', {photoDataUrl: photoDataUrl}); | |
88 | |
89 announceAccessibleMessage( | |
90 loadTimeData.getString('photoCaptureAccessibleText')); | |
91 }, | |
92 | |
93 /** | |
69 * Observer for the cameraActive property. | 94 * Observer for the cameraActive property. |
70 * @private | 95 * @private |
71 */ | 96 */ |
72 cameraActiveChanged_: function() { | 97 cameraActiveChanged_: function() { |
73 if (this.cameraActive) | 98 if (this.cameraActive) |
74 this.startCamera_(); | 99 this.startCamera_(); |
75 else | 100 else |
76 this.stopCamera_(); | 101 this.stopCamera_(); |
77 }, | 102 }, |
78 | 103 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
133 onTapFlipPhoto_: function() { | 158 onTapFlipPhoto_: function() { |
134 this.isFlipped_ = !this.isFlipped_; | 159 this.isFlipped_ = !this.isFlipped_; |
135 this.$.userImageStreamCrop.classList.toggle('flip-x', this.isFlipped_); | 160 this.$.userImageStreamCrop.classList.toggle('flip-x', this.isFlipped_); |
136 | 161 |
137 var flipMessageId = this.isFlipped_ ? | 162 var flipMessageId = this.isFlipped_ ? |
138 'photoFlippedAccessibleText' : 'photoFlippedBackAccessibleText'; | 163 'photoFlippedAccessibleText' : 'photoFlippedBackAccessibleText'; |
139 announceAccessibleMessage(loadTimeData.getString(flipMessageId)); | 164 announceAccessibleMessage(loadTimeData.getString(flipMessageId)); |
140 }, | 165 }, |
141 | 166 |
142 /** | 167 /** |
143 * Performs photo capture from the live camera stream. 'phototaken' event | |
144 * will be fired as soon as captured photo is available, with 'dataURL' | |
145 * property containing the photo encoded as a data URL. | |
146 * @private | |
147 */ | |
148 onTapTakePhoto_: function() { | |
149 if (!this.cameraOnline_) | |
150 return; | |
151 var canvas = /** @type {HTMLCanvasElement} */( | |
152 document.createElement('canvas')); | |
153 canvas.width = CAPTURE_SIZE.width; | |
154 canvas.height = CAPTURE_SIZE.height; | |
155 this.captureFrame_( | |
156 this.$.cameraVideo, | |
157 /** @type {!CanvasRenderingContext2D} */(canvas.getContext('2d'))); | |
158 | |
159 var photoDataUrl = this.isFlipped_ ? this.flipFrame_(canvas) : | |
160 canvas.toDataURL('image/png'); | |
161 this.fire('phototaken', {photoDataUrl: photoDataUrl}); | |
162 | |
163 announceAccessibleMessage( | |
164 loadTimeData.getString('photoCaptureAccessibleText')); | |
165 }, | |
166 | |
167 /** | |
168 * Captures a single still frame from a <video> element, placing it at the | 168 * Captures a single still frame from a <video> element, placing it at the |
169 * current drawing origin of a canvas context. | 169 * current drawing origin of a canvas context. |
170 * @param {!HTMLVideoElement} video Video element to capture from. | 170 * @param {!HTMLVideoElement} video Video element to capture from. |
171 * @param {!CanvasRenderingContext2D} ctx Canvas context to draw onto. | 171 * @param {!CanvasRenderingContext2D} ctx Canvas context to draw onto. |
172 * @private | 172 * @private |
173 */ | 173 */ |
174 captureFrame_: function(video, ctx) { | 174 captureFrame_: function(video, ctx) { |
175 var width = video.videoWidth; | 175 var width = video.videoWidth; |
176 var height = video.videoHeight; | 176 var height = video.videoHeight; |
177 if (width < CAPTURE_SIZE.width || height < CAPTURE_SIZE.height) { | 177 if (width < CAPTURE_SIZE.width || height < CAPTURE_SIZE.height) { |
(...skipping 28 matching lines...) Expand all Loading... | |
206 canvas.height = CAPTURE_SIZE.height; | 206 canvas.height = CAPTURE_SIZE.height; |
207 var ctx = canvas.getContext('2d'); | 207 var ctx = canvas.getContext('2d'); |
208 ctx.translate(CAPTURE_SIZE.width, 0); | 208 ctx.translate(CAPTURE_SIZE.width, 0); |
209 ctx.scale(-1.0, 1.0); | 209 ctx.scale(-1.0, 1.0); |
210 ctx.drawImage(source, 0, 0); | 210 ctx.drawImage(source, 0, 0); |
211 return canvas.toDataURL('image/png'); | 211 return canvas.toDataURL('image/png'); |
212 }, | 212 }, |
213 }); | 213 }); |
214 | 214 |
215 })(); | 215 })(); |
OLD | NEW |