Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Unified Diff: chrome/browser/resources/file_manager/js/image_editor/image_editor.js

Issue 7453045: Moved ChromeOS Image Editor into an iframe. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/file_manager/js/image_editor/image_editor.js
diff --git a/chrome/browser/resources/file_manager/js/image_editor/image_editor.js b/chrome/browser/resources/file_manager/js/image_editor/image_editor.js
index d06b27bcadcaeaed02fd664d38e18fab9f253a5e..95619de9f48460bc2f8a44f6bb83a9c303622917 100644
--- a/chrome/browser/resources/file_manager/js/image_editor/image_editor.js
+++ b/chrome/browser/resources/file_manager/js/image_editor/image_editor.js
@@ -5,39 +5,80 @@
/**
* ImageEditor is the top level object that holds together and connects
* everything needed for image editing.
- * @param {HTMLElement} parent
+ * @param {HTMLElement} container
* @param {Function} saveCallback
* @param {Function} closeCallback
*/
-function ImageEditor(parent, saveCallback, closeCallback) {
- this.parent_ = parent;
+function ImageEditor(container, saveCallback, closeCallback) {
+ this.container_ = container;
this.saveCallback_ = saveCallback;
this.closeCallback_ = closeCallback;
- var document = this.parent_.ownerDocument;
+ this.container_.innerHTML = '';
- var wrapper = document.createElement('div');
- wrapper.className = 'canvas-wrapper';
- parent.appendChild(wrapper);
+ var document = this.container_.ownerDocument;
+
+ this.canvasWrapper_ = document.createElement('div');
+ this.canvasWrapper_.className = 'canvas-wrapper';
+ container.appendChild(this.canvasWrapper_);
var canvas = document.createElement('canvas');
- wrapper.appendChild(canvas);
- canvas.width = wrapper.clientWidth;
- canvas.height = wrapper.clientHeight;
+ this.canvasWrapper_.appendChild(canvas);
+ canvas.width = this.canvasWrapper_.clientWidth;
+ canvas.height = this.canvasWrapper_.clientHeight;
this.buffer_ = new ImageBuffer(canvas);
this.buffer_.addOverlay(new ImageBuffer.Overview());
- this.scaleControl_ = new ImageEditor.ScaleControl(wrapper, this.buffer_);
+ this.scaleControl_ =
+ new ImageEditor.ScaleControl(this.canvasWrapper_, this.buffer_);
this.panControl_ = new ImageEditor.MouseControl(canvas, this.buffer_);
this.toolbar_ =
- new ImageEditor.Toolbar(parent, this.onOptionsChange.bind(this));
+ new ImageEditor.Toolbar(container, this.onOptionsChange.bind(this));
this.initToolbar();
}
/**
+ * Create an ImageEditor instance bound to a current web page, load the content.
+ *
+ * Use this method when image_editor.html is loaded into an iframe.
+ *
+ * @param {Function} saveCallback
+ * @param {Function} closeCallback
+ * @param {HTMLCanvasElement|HTMLImageElement|String} source
+ * @param {Object} opt_metadata
+ * @return {ImageEditor}
+ */
+ImageEditor.open = function(saveCallback, closeCallback, source, opt_metadata) {
+ var container = document.getElementsByClassName('image-editor')[0];
+ var editor = new ImageEditor(container, saveCallback, closeCallback);
+ window.addEventListener('resize', editor.resizeFrame.bind(editor), false);
+ editor.load(source, opt_metadata);
+ return editor;
+}
+
+/**
+ * Loads a new image and its metadata.
+ * @param {HTMLCanvasElement|HTMLImageElement|String} source
+ * @param {Object} opt_metadata
+ */
+ImageEditor.prototype.load = function(source, opt_metadata) {
+ this.onModeCancel();
+ this.getBuffer().load(source);
+ this.metadata_ = opt_metadata;
+};
+
+/**
+ * Window resize handler.
+ */
+ImageEditor.prototype.resizeFrame = function() {
+ this.getBuffer().resizeScreen(
+ this.canvasWrapper_.clientWidth, this.canvasWrapper_.clientHeight, true);
+};
+
+/**
* @return {ImageBuffer}
*/
ImageEditor.prototype.getBuffer = function () {
@@ -48,15 +89,16 @@ ImageEditor.prototype.getBuffer = function () {
* Destroys the UI and calls the close callback.
*/
ImageEditor.prototype.close = function() {
- this.parent_.innerHTML = '';
+ this.container_.innerHTML = '';
this.closeCallback_();
};
/**
- * Passes the image canvas to the save callback.
+ * Encode the current image into a blob and pass it to the save callback.
*/
ImageEditor.prototype.save = function() {
- this.saveCallback_(this.getBuffer().getImageCanvas());
+ this.saveCallback_(ImageEncoder.getBlob(
+ this.getBuffer().getImageCanvas(), 'image/jpeg', this.metadata_));
};
ImageEditor.prototype.onOptionsChange = function(options) {

Powered by Google App Engine
This is Rietveld 408576698