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

Side by Side Diff: ui/file_manager/gallery/js/image_editor/image_transform.js

Issue 363873002: Gallery.app: Add buttons to the cropping mode to specifying the aspect ratio. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/file_manager/gallery/js/image_editor/image_editor.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 'use strict'; 5 'use strict';
6 6
7 /** 7 /**
8 * Crop mode. 8 * Crop mode.
9 * 9 *
10 * @extends {ImageEditor.Mode} 10 * @extends {ImageEditor.Mode}
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 addCropFrame('bottom horizontal'); 70 addCropFrame('bottom horizontal');
71 addCropFrame('right bottom corner'); 71 addCropFrame('right bottom corner');
72 72
73 this.onResizedBound_ = this.onResized_.bind(this); 73 this.onResizedBound_ = this.onResized_.bind(this);
74 window.addEventListener('resize', this.onResizedBound_); 74 window.addEventListener('resize', this.onResizedBound_);
75 75
76 this.createDefaultCrop(); 76 this.createDefaultCrop();
77 }; 77 };
78 78
79 /** 79 /**
80 * @override
81 */
82 ImageEditor.Mode.Crop.prototype.createTools = function(toolbar) {
83 var aspects = {
84 GALLERY_ASPECT_RATIO_1_1: 1 / 1,
85 GALLERY_ASPECT_RATIO_6_4: 6 / 4,
86 GALLERY_ASPECT_RATIO_7_5: 7 / 5,
87 GALLERY_ASPECT_RATIO_16_9: 16 / 9
88 };
89 for (name in aspects) {
90 toolbar.addButton(
91 name,
92 name,
93 function(aspect, event) {
94 var button = event.target;
95 if (button.classList.contains('selected')) {
96 button.classList.remove('selected');
97 this.cropRect_.fixedAspectRatio = null;
98 } else {
99 var selectedButtons =
100 toolbar.element.querySelectorAll('button.selected');
101 for (var i = 0; i < selectedButtons.length; i++) {
102 selectedButtons[i].classList.remove('selected');
103 }
104 button.classList.add('selected');
105 this.cropRect_.fixedAspectRatio = aspect;
106 }
107 }.bind(this, aspects[name]));
108 }
109 };
110
111 /**
80 * Handles resizing of the window and updates the crop rectangle. 112 * Handles resizing of the window and updates the crop rectangle.
81 * @private 113 * @private
82 */ 114 */
83 ImageEditor.Mode.Crop.prototype.onResized_ = function() { 115 ImageEditor.Mode.Crop.prototype.onResized_ = function() {
84 this.positionDOM(); 116 this.positionDOM();
85 }; 117 };
86 118
87 /** 119 /**
88 * Resets the mode. 120 * Resets the mode.
89 */ 121 */
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 this.viewport_ = viewport; 272 this.viewport_ = viewport;
241 273
242 /** 274 /**
243 * Drag mode. 275 * Drag mode.
244 * 276 *
245 * @type {Object} 277 * @type {Object}
246 * @private 278 * @private
247 */ 279 */
248 this.dragMode_ = null; 280 this.dragMode_ = null;
249 281
282 /**
283 * Fixed aspect ratio.
284 * It does not fixed aspect ratio when it is null.
mtomasz 2014/07/02 07:56:53 nit #284 -> The aspect ratio is not fixed when nul
hirono 2014/07/02 08:11:17 Done.
285 * @type {?number}
286 */
287 this.fixedAspectRatio = null;
288
250 Object.seal(this); 289 Object.seal(this);
251 } 290 }
252 291
253 // Static members to simplify reflective access to the bounds. 292 // Static members to simplify reflective access to the bounds.
254 /** 293 /**
255 * @const 294 * @const
256 * @type {string} 295 * @type {string}
257 */ 296 */
258 DraggableRect.LEFT = 'left'; 297 DraggableRect.LEFT = 'left';
259 298
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 var top = this.bounds_.top; 533 var top = this.bounds_.top;
495 var bottom = this.bounds_.bottom; 534 var bottom = this.bounds_.bottom;
496 this.bounds_.top = bottom - 1; 535 this.bounds_.top = bottom - 1;
497 this.bounds_.bottom = top + 1; 536 this.bounds_.bottom = top + 1;
498 this.dragMode_.ySide = 537 this.dragMode_.ySide =
499 this.dragMode_.ySide === 'top' ? 'bottom' : 'top'; 538 this.dragMode_.ySide === 'top' ? 'bottom' : 'top';
500 } 539 }
501 } 540 }
502 541
503 // Update aspect ratio. 542 // Update aspect ratio.
504 if (shiftKey) 543 if (this.fixedAspectRatio)
544 this.forceAspectRatio(this.fixedAspectRatio, clipRect);
545 else if (shiftKey)
505 this.forceAspectRatio(initialWidth / initialHeight, clipRect); 546 this.forceAspectRatio(initialWidth / initialHeight, clipRect);
506 }.bind(this); 547 }.bind(this);
507 } 548 }
508 }; 549 };
509 550
510 /** 551 /**
511 * Obtains double tap action depending on the coordinate. 552 * Obtains double tap action depending on the coordinate.
512 * 553 *
513 * @param {number} x X coordinate for cursor. 554 * @param {number} x X coordinate for cursor.
514 * @param {number} y Y coordinate for cursor. 555 * @param {number} y Y coordinate for cursor.
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 break; 644 break;
604 case 'bottom': 645 case 'bottom':
605 this.bounds_.bottom = this.bounds_.top + newHeight; 646 this.bounds_.bottom = this.bounds_.top + newHeight;
606 break; 647 break;
607 case 'none': 648 case 'none':
608 this.bounds_.top = middle - newHeight / 2; 649 this.bounds_.top = middle - newHeight / 2;
609 this.bounds_.bottom = middle + newHeight / 2; 650 this.bounds_.bottom = middle + newHeight / 2;
610 break; 651 break;
611 } 652 }
612 }; 653 };
OLDNEW
« no previous file with comments | « ui/file_manager/gallery/js/image_editor/image_editor.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698