         return CGSize(width :offset.height*CGFloat(sin(angle)) + offset.width*CGFloat(cos(angle)),
                       height:offset.height*CGFloat(cos(angle)) - offset.width*CGFloat(sin(angle)))
     }
+    
+    /* The color of the shadow. Defaults to opaque black. Colors created
+     * from patterns are currently NOT supported. Animatable. */
+    
+    /** Shadow properties. **/
+    open var shadowColor: CGColor = kDefaultElementShadowColor
+    
+    /* The opacity of the shadow. Defaults to 0. Specifying a value outside the
+     * [0,1] range will give undefined results. Animatable. */
+    
+    open var shadowOpacity: Float = kDefaultElementShadowOpacity
+    
+    /* The shadow offset. Defaults to (0, -3). Animatable. */
+    
+    open var shadowOffset: CGSize = kDefaultElementShadowOffset
+
+    /* The blur radius used to create the shadow. Defaults to 3. Animatable. */
+    
+    open var shadowRadius: CGFloat = kDefaultElementShadowRadius
+    
+    open var shadowPath: CGPath?
+    
     /// Enable element shadow
     var shadow:Bool = false {
         didSet {
             if (shadow) {
-                layer.shadowOpacity = 1.0
-                layer.shadowRadius  = kDefaultElementShadowRadius
-                layer.shadowColor   = kDefaultElementShadowColor
-                layer.shadowOffset  = kDefaultElementShadowOffset
+                layer.shadowRadius   = self.shadowRadius
+                layer.shadowColor    = self.shadowColor
+                layer.shadowOffset   = self.shadowOffset
+                layer.shadowOpacity  = self.shadowOpacity
                 if orientationToAngle {
                     let angle = layer.getTransformRotationZ()
                     layer.shadowOffset = correctedShadowOffsetForTransformRotationZ(angle, offset: layer.shadowOffset)

//   See the License for the specific language governing permissions and
//   limitations under the License.
//

#if os(iOS)
    import UIKit

                    #endif
                }
            } else {
                // Trasparent
                layer.shadowOpacity = 0
            }
        }
