 	
 }
 
+extension CGRect.PlaneBasePoint {
+	
+	func originOffset(from sizeDiff: CGSize) -> CGPoint {
+		
+		let x = 0 - (sizeDiff.width * self.value.x)
+		let y = 0 - (sizeDiff.height * self.value.y)
+		return CGPoint(x: x, y: y)
+		
+	}
+	
+}
+
 extension CGRect {
 	
 	enum Float {

		self.origin.y = yGoal - self.height
	}
	
	mutating func moveHorizontally(by xOffset: CGFloat) {
		self.origin.x += xOffset
	}
	
	mutating func moveVertically(by yOffset: CGFloat) {
		self.origin.y += yOffset
	}
	
	mutating func pinchLeft(to xGoal: CGFloat) {

		
	}
	
	mutating func expandSize(to sizeGoal: CGSize, from basepoint: CGRect.PlaneBasePoint) {
		
		let sizeDiff = sizeGoal - self.size
		self.size = sizeGoal
		self.origin = basepoint.originOffset(from: sizeDiff)
		
	}
	
	mutating func expandSize(by sizeDiff: CGSize, from basepoint: CGRect.PlaneBasePoint) {
		
		self.size += sizeDiff
		self.origin += basepoint.originOffset(from: sizeDiff)
		
	}
	
}
