     public var bottom: CGFloat
     public var right: CGFloat
     
+    public var vertical: CGFloat {
+        get {
+            return self.top + self.bottom
+        }
+    }
+    public var horizontal: CGFloat {
+        get {
+            return self.left + self.right
+        }
+    }
+    
     public static var zero: EdgeInsets {
         get {
             return EdgeInsets(top: 0, left: 0, bottom: 0, right: 0)

        if !self.isAlphaBlend {
            drawContext.clip(to: spaceRect, mask: drawContext.makeImage()!)
        }
        self.afterLayer.forEach { $0(LayerType(drawContext, spaceRect, width, height, memoryPool)) }
        drawContext.restoreGState()
        
        /// Last Layer
        self.lastLayer.forEach { $0(LayerType(drawContext, spaceRect, width, height, memoryPool)) }
        
        #if !os(OSX)
            UIGraphicsEndImageContext()

        #else
            let scale = CGFloat(1.0)
        #endif
        
        let tempW = self.spaceSize.width + self.margin.horizontal + self.padding.horizontal
        let tempH = self.spaceSize.height + self.margin.vertical + self.padding.vertical
        let width = Int(tempW * scale)
        let height = Int(tempH * scale)
        
        let spaceRect = CGRect(
            x: 0,
            y: 0,
            width: width,
            height: height
        )
        
        /// Alloc Memory
        let memorySize = width * height * 4
