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

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

Issue 39123003: [Files.app] Split the JavaScript files into subdirectories: common, background, and foreground (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed test failure. Created 7 years, 2 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_transform.js
diff --git a/chrome/browser/resources/file_manager/js/image_editor/image_transform.js b/chrome/browser/resources/file_manager/js/image_editor/image_transform.js
deleted file mode 100644
index 6b194baf0fc5846b5ce7c8c8b3fc6a89c22632ae..0000000000000000000000000000000000000000
--- a/chrome/browser/resources/file_manager/js/image_editor/image_transform.js
+++ /dev/null
@@ -1,493 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-'use strict';
-
-/**
- * Crop mode.
- * @constructor
- */
-ImageEditor.Mode.Crop = function() {
- ImageEditor.Mode.call(this, 'crop', 'GALLERY_CROP');
-};
-
-ImageEditor.Mode.Crop.prototype = {__proto__: ImageEditor.Mode.prototype};
-
-/**
- * TODO(JSDOC).
- */
-ImageEditor.Mode.Crop.prototype.setUp = function() {
- ImageEditor.Mode.prototype.setUp.apply(this, arguments);
-
- var container = this.getImageView().container_;
- var doc = container.ownerDocument;
-
- this.domOverlay_ = doc.createElement('div');
- this.domOverlay_.className = 'crop-overlay';
- container.appendChild(this.domOverlay_);
-
- this.shadowTop_ = doc.createElement('div');
- this.shadowTop_.className = 'shadow';
- this.domOverlay_.appendChild(this.shadowTop_);
-
- this.middleBox_ = doc.createElement('div');
- this.middleBox_.className = 'middle-box';
- this.domOverlay_.appendChild(this.middleBox_);
-
- this.shadowLeft_ = doc.createElement('div');
- this.shadowLeft_.className = 'shadow';
- this.middleBox_.appendChild(this.shadowLeft_);
-
- this.cropFrame_ = doc.createElement('div');
- this.cropFrame_.className = 'crop-frame';
- this.middleBox_.appendChild(this.cropFrame_);
-
- this.shadowRight_ = doc.createElement('div');
- this.shadowRight_.className = 'shadow';
- this.middleBox_.appendChild(this.shadowRight_);
-
- this.shadowBottom_ = doc.createElement('div');
- this.shadowBottom_.className = 'shadow';
- this.domOverlay_.appendChild(this.shadowBottom_);
-
- var cropFrame = this.cropFrame_;
- function addCropFrame(className) {
- var div = doc.createElement('div');
- div.className = className;
- cropFrame.appendChild(div);
- }
-
- addCropFrame('left top corner');
- addCropFrame('top horizontal');
- addCropFrame('right top corner');
- addCropFrame('left vertical');
- addCropFrame('right vertical');
- addCropFrame('left bottom corner');
- addCropFrame('bottom horizontal');
- addCropFrame('right bottom corner');
-
- this.onResizedBound_ = this.onResized_.bind(this);
- window.addEventListener('resize', this.onResizedBound_);
-
- this.createDefaultCrop();
-};
-
-/**
- * Handles resizing of the window and updates the crop rectangle.
- * @private
- */
-ImageEditor.Mode.Crop.prototype.onResized_ = function() {
- this.positionDOM();
-};
-
-/**
- * TODO(JSDOC).
- */
-ImageEditor.Mode.Crop.prototype.reset = function() {
- ImageEditor.Mode.prototype.reset.call(this);
- this.createDefaultCrop();
-};
-
-/**
- * TODO(JSDOC).
- */
-ImageEditor.Mode.Crop.prototype.positionDOM = function() {
- var screenClipped = this.viewport_.getScreenClipped();
-
- var screenCrop = this.viewport_.imageToScreenRect(this.cropRect_.getRect());
- var delta = ImageEditor.Mode.Crop.MOUSE_GRAB_RADIUS;
- this.editor_.hideOverlappingTools(
- screenCrop.inflate(delta, delta),
- screenCrop.inflate(-delta, -delta));
-
- this.domOverlay_.style.left = screenClipped.left + 'px';
- this.domOverlay_.style.top = screenClipped.top + 'px';
- this.domOverlay_.style.width = screenClipped.width + 'px';
- this.domOverlay_.style.height = screenClipped.height + 'px';
-
- this.shadowLeft_.style.width = screenCrop.left - screenClipped.left + 'px';
-
- this.shadowTop_.style.height = screenCrop.top - screenClipped.top + 'px';
-
- this.shadowRight_.style.width = screenClipped.left + screenClipped.width -
- (screenCrop.left + screenCrop.width) + 'px';
-
- this.shadowBottom_.style.height = screenClipped.top + screenClipped.height -
- (screenCrop.top + screenCrop.height) + 'px';
-};
-
-/**
- * TODO(JSDOC).
- */
-ImageEditor.Mode.Crop.prototype.cleanUpUI = function() {
- ImageEditor.Mode.prototype.cleanUpUI.apply(this, arguments);
- this.domOverlay_.parentNode.removeChild(this.domOverlay_);
- this.domOverlay_ = null;
- this.editor_.hideOverlappingTools();
- window.removeEventListener(this.onResizedBound_);
- this.onResizedBound_ = null;
-};
-
-/**
- * @const
- * @type {number}
- */
-ImageEditor.Mode.Crop.MOUSE_GRAB_RADIUS = 6;
-/**
- * @const
- * @type {number}
- */
-ImageEditor.Mode.Crop.TOUCH_GRAB_RADIUS = 20;
-
-/**
- * TODO(JSDOC).
- * @return {Command.Crop} // TODO(JSDOC).
- */
-ImageEditor.Mode.Crop.prototype.getCommand = function() {
- var cropImageRect = this.cropRect_.getRect();
- return new Command.Crop(cropImageRect);
-};
-
-/**
- * TODO(JSDOC).
- */
-ImageEditor.Mode.Crop.prototype.createDefaultCrop = function() {
- var rect = new Rect(this.getViewport().getImageClipped());
- rect = rect.inflate(
- -Math.round(rect.width / 6), -Math.round(rect.height / 6));
- this.cropRect_ = new DraggableRect(rect, this.getViewport());
- this.positionDOM();
-};
-
-/**
- * TODO(JSDOC).
- * @param {number} x X coordinate for cursor.
- * @param {number} y Y coordinate for cursor.
- * @param {boolean} mouseDown If mouse button is down.
- * @return {string} A value for style.cursor CSS property.
- */
-ImageEditor.Mode.Crop.prototype.getCursorStyle = function(x, y, mouseDown) {
- return this.cropRect_.getCursorStyle(x, y, mouseDown);
-};
-
-/**
- * TODO(JSDOC).
- * @param {number} x Event X coordinate.
- * @param {number} y Event Y coordinate.
- * @param {boolean} touch True if it's a touch event, false if mouse.
- * @return {function(number,number)} A function to be called on mouse drag.
- */
-ImageEditor.Mode.Crop.prototype.getDragHandler = function(x, y, touch) {
- var cropDragHandler = this.cropRect_.getDragHandler(x, y, touch);
- if (!cropDragHandler) return null;
-
- var self = this;
- return function(x, y) {
- cropDragHandler(x, y);
- self.markUpdated();
- self.positionDOM();
- };
-};
-
-/**
- * TODO(JSDOC).
- * @param {number} x X coordinate of the event.
- * @param {number} y Y coordinate of the event.
- * @return {ImageBuffer.DoubleTapAction} Action to perform as result.
- */
-ImageEditor.Mode.Crop.prototype.getDoubleTapAction = function(x, y) {
- return this.cropRect_.getDoubleTapAction(x, y);
-};
-
-/*
- * A draggable rectangle over the image.
- * @param {Rect} rect // TODO(JSDOC).
- * @param {Viewport} viewport // TODO(JSDOC).
- * @constructor
- */
-function DraggableRect(rect, viewport) {
- // The bounds are not held in a regular rectangle (with width/height).
- // left/top/right/bottom held instead for convenience.
- this.bounds_ = {};
- this.bounds_[DraggableRect.LEFT] = rect.left;
- this.bounds_[DraggableRect.RIGHT] = rect.left + rect.width;
- this.bounds_[DraggableRect.TOP] = rect.top;
- this.bounds_[DraggableRect.BOTTOM] = rect.top + rect.height;
-
- this.viewport_ = viewport;
-
- this.oppositeSide_ = {};
- this.oppositeSide_[DraggableRect.LEFT] = DraggableRect.RIGHT;
- this.oppositeSide_[DraggableRect.RIGHT] = DraggableRect.LEFT;
- this.oppositeSide_[DraggableRect.TOP] = DraggableRect.BOTTOM;
- this.oppositeSide_[DraggableRect.BOTTOM] = DraggableRect.TOP;
-
- // Translation table to form CSS-compatible cursor style.
- this.cssSide_ = {};
- this.cssSide_[DraggableRect.LEFT] = 'w';
- this.cssSide_[DraggableRect.TOP] = 'n';
- this.cssSide_[DraggableRect.RIGHT] = 'e';
- this.cssSide_[DraggableRect.BOTTOM] = 's';
- this.cssSide_[DraggableRect.NONE] = '';
-}
-
-// Static members to simplify reflective access to the bounds.
-/**
- * @const
- * @type {string}
- */
-DraggableRect.LEFT = 'left';
-/**
- * @const
- * @type {string}
- */
-DraggableRect.RIGHT = 'right';
-/**
- * @const
- * @type {string}
- */
-DraggableRect.TOP = 'top';
-/**
- * @const
- * @type {string}
- */
-DraggableRect.BOTTOM = 'bottom';
-/**
- * @const
- * @type {string}
- */
-DraggableRect.NONE = 'none';
-
-/**
- * TODO(JSDOC)
- * @return {number} // TODO(JSDOC).
- */
-DraggableRect.prototype.getLeft = function() {
- return this.bounds_[DraggableRect.LEFT];
-};
-
-/**
- * TODO(JSDOC)
- * @return {number} // TODO(JSDOC).
- */
-DraggableRect.prototype.getRight = function() {
- return this.bounds_[DraggableRect.RIGHT];
-};
-
-/**
- * TODO(JSDOC)
- * @return {number} // TODO(JSDOC).
- */
-DraggableRect.prototype.getTop = function() {
- return this.bounds_[DraggableRect.TOP];
-};
-
-/**
- * TODO(JSDOC)
- * @return {number} // TODO(JSDOC).
- */
-DraggableRect.prototype.getBottom = function() {
- return this.bounds_[DraggableRect.BOTTOM];
-};
-
-/**
- * TODO(JSDOC)
- * @return {Rect} // TODO(JSDOC).
- */
-DraggableRect.prototype.getRect = function() {
- return new Rect(this.bounds_);
-};
-
-/**
- * TODO(JSDOC)
- * @param {number} x X coordinate for cursor.
- * @param {number} y Y coordinate for cursor.
- * @param {boolean} touch // TODO(JSDOC).
- * @return {Object} // TODO(JSDOC).
- */
-DraggableRect.prototype.getDragMode = function(x, y, touch) {
- var result = {
- xSide: DraggableRect.NONE,
- ySide: DraggableRect.NONE
- };
-
- var bounds = this.bounds_;
- var R = this.viewport_.screenToImageSize(
- touch ? ImageEditor.Mode.Crop.TOUCH_GRAB_RADIUS :
- ImageEditor.Mode.Crop.MOUSE_GRAB_RADIUS);
-
- var circle = new Circle(x, y, R);
-
- var xBetween = ImageUtil.between(bounds.left, x, bounds.right);
- var yBetween = ImageUtil.between(bounds.top, y, bounds.bottom);
-
- if (circle.inside(bounds.left, bounds.top)) {
- result.xSide = DraggableRect.LEFT;
- result.ySide = DraggableRect.TOP;
- } else if (circle.inside(bounds.left, bounds.bottom)) {
- result.xSide = DraggableRect.LEFT;
- result.ySide = DraggableRect.BOTTOM;
- } else if (circle.inside(bounds.right, bounds.top)) {
- result.xSide = DraggableRect.RIGHT;
- result.ySide = DraggableRect.TOP;
- } else if (circle.inside(bounds.right, bounds.bottom)) {
- result.xSide = DraggableRect.RIGHT;
- result.ySide = DraggableRect.BOTTOM;
- } else if (yBetween && Math.abs(x - bounds.left) <= R) {
- result.xSide = DraggableRect.LEFT;
- } else if (yBetween && Math.abs(x - bounds.right) <= R) {
- result.xSide = DraggableRect.RIGHT;
- } else if (xBetween && Math.abs(y - bounds.top) <= R) {
- result.ySide = DraggableRect.TOP;
- } else if (xBetween && Math.abs(y - bounds.bottom) <= R) {
- result.ySide = DraggableRect.BOTTOM;
- } else if (xBetween && yBetween) {
- result.whole = true;
- } else {
- result.newcrop = true;
- result.xSide = DraggableRect.RIGHT;
- result.ySide = DraggableRect.BOTTOM;
- }
-
- return result;
-};
-
-/**
- * TODO(JSDOC)
- * @param {number} x X coordinate for cursor.
- * @param {number} y Y coordinate for cursor.
- * @param {boolean} mouseDown If mouse button is down.
- * @return {string} // TODO(JSDOC).
- */
-DraggableRect.prototype.getCursorStyle = function(x, y, mouseDown) {
- var mode;
- if (mouseDown) {
- mode = this.dragMode_;
- } else {
- mode = this.getDragMode(
- this.viewport_.screenToImageX(x), this.viewport_.screenToImageY(y));
- }
- if (mode.whole) return 'move';
- if (mode.newcrop) return 'crop';
- return this.cssSide_[mode.ySide] + this.cssSide_[mode.xSide] + '-resize';
-};
-
-/**
- * TODO(JSDOC)
- * @param {number} x X coordinate for cursor.
- * @param {number} y Y coordinate for cursor.
- * @param {boolean} touch // TODO(JSDOC).
- * @return {function(number,number)} // TODO(JSDOC).
- */
-DraggableRect.prototype.getDragHandler = function(x, y, touch) {
- x = this.viewport_.screenToImageX(x);
- y = this.viewport_.screenToImageY(y);
-
- var clipRect = this.viewport_.getImageClipped();
- if (!clipRect.inside(x, y)) return null;
-
- this.dragMode_ = this.getDragMode(x, y, touch);
-
- var self = this;
-
- var mouseBiasX;
- var mouseBiasY;
-
- var fixedWidth = 0;
- var fixedHeight = 0;
-
- var resizeFuncX;
- var resizeFuncY;
-
- if (this.dragMode_.whole) {
- mouseBiasX = this.bounds_.left - x;
- fixedWidth = this.bounds_.right - this.bounds_.left;
- resizeFuncX = function(x) {
- self.bounds_.left = x;
- self.bounds_.right = self.bounds_.left + fixedWidth;
- };
- mouseBiasY = this.bounds_.top - y;
- fixedHeight = this.bounds_.bottom - this.bounds_.top;
- resizeFuncY = function(y) {
- self.bounds_.top = y;
- self.bounds_.bottom = self.bounds_.top + fixedHeight;
- };
- } else {
- var checkNewCrop = function() {
- if (self.dragMode_.newcrop) {
- self.dragMode_.newcrop = false;
- self.bounds_.left = self.bounds_.right = x;
- self.bounds_.top = self.bounds_.bottom = y;
- mouseBiasX = 0;
- mouseBiasY = 0;
- }
- };
-
- var flipSide = function(side) {
- var opposite = self.oppositeSide_[side];
- var temp = self.bounds_[side];
- self.bounds_[side] = self.bounds_[opposite];
- self.bounds_[opposite] = temp;
- return opposite;
- };
-
- if (this.dragMode_.xSide != DraggableRect.NONE) {
- mouseBiasX = self.bounds_[this.dragMode_.xSide] - x;
- resizeFuncX = function(x) {
- checkNewCrop();
- self.bounds_[self.dragMode_.xSide] = x;
- if (self.bounds_.left > self.bounds_.right) {
- self.dragMode_.xSide = flipSide(self.dragMode_.xSide);
- }
- };
- }
- if (this.dragMode_.ySide != DraggableRect.NONE) {
- mouseBiasY = self.bounds_[this.dragMode_.ySide] - y;
- resizeFuncY = function(y) {
- checkNewCrop();
- self.bounds_[self.dragMode_.ySide] = y;
- if (self.bounds_.top > self.bounds_.bottom) {
- self.dragMode_.ySide = flipSide(self.dragMode_.ySide);
- }
- };
- }
- }
-
- function convertX(x) {
- return ImageUtil.clamp(
- clipRect.left,
- self.viewport_.screenToImageX(x) + mouseBiasX,
- clipRect.left + clipRect.width - fixedWidth);
- }
-
- function convertY(y) {
- return ImageUtil.clamp(
- clipRect.top,
- self.viewport_.screenToImageY(y) + mouseBiasY,
- clipRect.top + clipRect.height - fixedHeight);
- }
-
- return function(x, y) {
- if (resizeFuncX) resizeFuncX(convertX(x));
- if (resizeFuncY) resizeFuncY(convertY(y));
- };
-};
-
-/**
- * TODO(JSDOC)
- * @param {number} x X coordinate for cursor.
- * @param {number} y Y coordinate for cursor.
- * @param {boolean} touch // TODO(JSDOC).
- * @return {ImageBuffer.DoubleTapAction} // TODO(JSDOC).
- */
-DraggableRect.prototype.getDoubleTapAction = function(x, y, touch) {
- x = this.viewport_.screenToImageX(x);
- y = this.viewport_.screenToImageY(y);
-
- var clipRect = this.viewport_.getImageClipped();
- if (clipRect.inside(x, y))
- return ImageBuffer.DoubleTapAction.COMMIT;
- else
- return ImageBuffer.DoubleTapAction.NOTHING;
-};

Powered by Google App Engine
This is Rietveld 408576698