import Foundation
import UIKit

public extension CGSize {
    func centered(in rect: CGRect) -> CGRect {
        return CGRect(origin: CGPoint(x: rect.minX + floor((rect.width - self.width) / 2.0), y: rect.minY + floor((rect.height - self.height) / 2.0)), size: self)
    }

    func centered(around position: CGPoint) -> CGRect {
        return CGRect(origin: CGPoint(x: position.x - self.width / 2.0, y: position.y - self.height / 2.0), size: self)
    }

    func leftCentered(in rect: CGRect) -> CGRect {
        return CGRect(origin: CGPoint(x: rect.minX, y: rect.minY + floor((rect.height - self.height) / 2.0)), size: self)
    }

    func rightCentered(in rect: CGRect) -> CGRect {
        return CGRect(origin: CGPoint(x: rect.maxX - self.width, y: rect.minY + floor((rect.height - self.height) / 2.0)), size: self)
    }

    func topCentered(in rect: CGRect) -> CGRect {
        return CGRect(origin: CGPoint(x: rect.minX + floor((rect.width - self.width) / 2.0), y: 0.0), size: self)
    }

    func bottomCentered(in rect: CGRect) -> CGRect {
        return CGRect(origin: CGPoint(x: rect.minX + floor((rect.width - self.width) / 2.0), y: rect.maxY - self.height), size: self)
    }
}