mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
51 lines
1.5 KiB
Swift
51 lines
1.5 KiB
Swift
//
|
|
// Geometry.swift
|
|
// RSCore
|
|
//
|
|
// Created by Nate Weaver on 2020-01-01.
|
|
// Copyright © 2020 Ranchero Software, LLC. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
#if os(macOS)
|
|
import CoreGraphics
|
|
|
|
public extension CGRect {
|
|
|
|
/// Centers a rectangle vertically in another rectangle.
|
|
///
|
|
/// - Parameter containerRect: The rectangle in which to be centered.
|
|
/// - Returns: A new rectangle, cenetered vertically in `containerRect`,
|
|
/// with the same size as the source rectangle.
|
|
func centeredVertically(in containerRect: CGRect) -> CGRect {
|
|
var r = self;
|
|
r.origin.y = containerRect.midY - (r.height / 2.0);
|
|
r = r.integral;
|
|
r.size = self.size;
|
|
return r;
|
|
}
|
|
|
|
/// Centers a rectangle horizontally in another rectangle.
|
|
///
|
|
/// - Parameter containerRect: The rectangle in which to be centered.
|
|
/// - Returns: A new rectangle, cenetered horizontally in `containerRect`,
|
|
/// with the same size as the source rectangle.
|
|
func centeredHorizontally(in containerRect: CGRect) -> CGRect {
|
|
var r = self;
|
|
r.origin.x = containerRect.midX - (r.width / 2.0);
|
|
r = r.integral;
|
|
r.size = self.size;
|
|
return r;
|
|
}
|
|
|
|
/// Centers a rectangle in another rectangle.
|
|
///
|
|
/// - Parameter containerRect: The rectangle in which to be centered.
|
|
/// - Returns: A new rectangle, cenetered both horizontally and vertically
|
|
/// in `containerRect`, with the same size as the source rectangle.
|
|
func centered(in containerRect: CGRect) -> CGRect {
|
|
return self.centeredHorizontally(in: self.centeredVertically(in: containerRect))
|
|
}
|
|
}
|
|
#endif
|