// // CAMediaTimingFunctions+Extended.swift // Geiger // // Created by Ryan McLeod on 1/22/19. // Copyright © 2019 Grow Pixel. All rights reserved. // import UIKit extension CAMediaTimingFunction { static func linear() -> CAMediaTimingFunction { return CAMediaTimingFunction(name: .linear) } static func easeIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(name: .easeIn) } static func easeOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(name: .easeOut) } static func easeInEaseOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(name: .easeInEaseOut) } static func swiftOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints: 0.4, 0.2, 0, 1) } static func sineIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.45, 0, 1, 1) } static func sineOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0, 0, 0.55, 1) } static func sineInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.45, 0, 0.55, 1) } static func quadIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.43, 0, 0.82, 0.60) } static func quadOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.18, 0.4, 0.57, 1) } static func quadInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.43, 0, 0.57, 1) } static func cubicIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.67, 0, 0.84, 0.54) } static func cubicOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.16, 0.46, 0.33, 1) } static func cubicInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.65, 0, 0.35, 1) } static func quartIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.81, 0, 0.77, 0.34) } static func quartOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.23, 0.66, 0.19, 1) } static func quartInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.81, 0, 0.19, 1) } static func quintIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.89, 0, 0.81, 0.27) } static func quintOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.19, 0.73, 0.11, 1) } static func quintInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.9, 0, 0.1, 1) } static func expoIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:1.04, 0, 0.88, 0.49) } static func expoOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.12, 0.51, -0.4, 1) } static func expoInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.95, 0, 0.05, 1) } static func circIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.6, 0, 1, 0.45) } static func circOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:1, 0.55, 0.4, 1) } static func circInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.82, 0, 0.18, 1) } static func backIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.77, -0.63, 1, 1) } static func backOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0, 0, 0.23, 1.37) } static func backInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.77, -0.63, 0.23, 1.37) } }