Index: ui/file_manager/image_loader/image_loader.js |
diff --git a/ui/file_manager/image_loader/image_loader.js b/ui/file_manager/image_loader/image_loader.js |
index a723ad61353a65e9282d6db535933cab9c740928..2a995b9baab5e78097b85300c2260e4f6a548666 100644 |
--- a/ui/file_manager/image_loader/image_loader.js |
+++ b/ui/file_manager/image_loader/image_loader.js |
@@ -21,6 +21,12 @@ function ImageLoader() { |
*/ |
this.scheduler_ = new Scheduler(); |
+ /** |
+ * Piex loader for RAW images. |
+ * @private {!PiexLoader} |
+ */ |
+ this.piexLoader_ = new PiexLoader(); |
+ |
// Grant permissions to all volumes, initialize the cache and then start the |
// scheduler. |
chrome.fileManagerPrivate.getVolumeMetadataList(function(volumeMetadataList) { |
@@ -99,7 +105,8 @@ ImageLoader.prototype.onMessage_ = function(senderId, request, callback) { |
return false; // No callback calls. |
} else { |
// Create a request task and add it to the scheduler (queue). |
- var requestTask = new Request(requestId, this.cache_, request, callback); |
+ var requestTask = new Request( |
+ requestId, this.cache_, this.piexLoader_, request, callback); |
this.scheduler_.add(requestTask); |
return true; // Request will call the callback. |
} |
@@ -203,32 +210,20 @@ ImageLoader.resize = function(source, target, options) { |
var targetDimensions = ImageLoader.resizeDimensions( |
source.width, source.height, options); |
- target.width = targetDimensions.width; |
- target.height = targetDimensions.height; |
- |
// Default orientation is 0deg. |
- var orientation = options.orientation || 0; |
- |
- // For odd orientation values: 1 (90deg) and 3 (270deg) flip dimensions. |
- var drawImageWidth; |
- var drawImageHeight; |
- if (orientation % 2) { |
- drawImageWidth = target.height; |
- drawImageHeight = target.width; |
- } else { |
- drawImageWidth = target.width; |
- drawImageHeight = target.height; |
- } |
+ var orientation = options.orientation || new ImageOrientation(1, 0, 0, 1); |
+ var size = orientation.getSizeAfterCancelling( |
+ targetDimensions.width, targetDimensions.height); |
+ target.width = size.width; |
+ target.height = size.height; |
var targetContext = target.getContext('2d'); |
targetContext.save(); |
- targetContext.translate(target.width / 2, target.height / 2); |
- targetContext.rotate(orientation * Math.PI / 2); |
+ orientation.cancelImageOrientation( |
+ targetContext, targetDimensions.width, targetDimensions.height); |
targetContext.drawImage( |
source, |
- 0, 0, |
- source.width, source.height, |
- -drawImageWidth / 2, -drawImageHeight / 2, |
- drawImageWidth, drawImageHeight); |
+ 0, 0, source.width, source.height, |
+ 0, 0, targetDimensions.width, targetDimensions.height); |
targetContext.restore(); |
}; |