2017-05-22 13:13:40 -07:00

62 lines
1.6 KiB
Objective-C
Executable File

//
// RSScaling.m
// RSCore
//
// Created by Brent Simmons on 3/25/15.
// Copyright (c) 2015 Ranchero Software, LLC. All rights reserved.
//
#import "RSScaling.h"
static CGFloat RSScaleFactorToFillSize(CGSize imageSize, CGSize constrainingSize) {
if (CGSizeEqualToSize(imageSize, constrainingSize))
return 1.0f;
CGFloat scaleFactorHeight = imageSize.height / constrainingSize.height;
CGFloat scaleFactorWidth = imageSize.width / constrainingSize.width;
CGFloat scaleFactor = MIN(scaleFactorHeight, scaleFactorWidth);
return scaleFactor;
}
static CGFloat RSScaleFactorToFitSize(CGSize imageSize, CGSize constrainingSize) {
if (CGSizeEqualToSize(imageSize, constrainingSize))
return 1.0f;
CGFloat scaleFactorHeight = imageSize.height / constrainingSize.height;
CGFloat scaleFactorWidth = imageSize.width / constrainingSize.width;
CGFloat scaleFactor = MAX(scaleFactorHeight, scaleFactorWidth);
return scaleFactor;
}
CGFloat RSZoomScaleToFillSize(CGSize imageSize, CGSize constrainingSize) {
CGFloat scaleFactor = RSScaleFactorToFillSize(imageSize, constrainingSize);
return 1.0f / scaleFactor;
}
CGFloat RSZoomScaleToFitSize(CGSize imageSize, CGSize constrainingSize) {
CGFloat scaleFactor = RSScaleFactorToFitSize(imageSize, constrainingSize);
return 1.0f / scaleFactor;
}
CGSize RSScaledSizeForImageFittingSize(CGSize imageSize, CGSize constrainingSize) {
CGFloat scaleFactor = RSScaleFactorToFitSize(imageSize, constrainingSize);
CGSize scaledSize = CGSizeZero;
scaledSize.height = ceil(imageSize.height / scaleFactor);
scaledSize.width = ceil(imageSize.width / scaleFactor);
return scaledSize;
}