func createElement()

in Cyborg/VectorDrawableParser.swift [808:860]


    func createElement(in viewportSize: CGSize) -> VectorDrawable.Gradient? {
        switch type {
        case .linear:
            if let startX = startX,
                let startY = startY,
                let endX = endX,
                let endY = endY {
                let startXUnit = startX / viewportSize.width
                let startYUnit = startY / viewportSize.height
                let endXUnit = endX / viewportSize.width
                let endYUnit = endY / viewportSize.height
                return VectorDrawable.LinearGradient(startColor: startColor,
                                                     centerColor: centerColor,
                                                     endColor: endColor,
                                                     tileMode: tileMode,
                                                     startX: startXUnit,
                                                     startY: startYUnit,
                                                     endX: endXUnit,
                                                     endY: endYUnit,
                                                     offsets: offsets)
            } else {
                return nil
            }
        case .radial:
            if let centerX = centerX,
                let centerY = centerY,
                let radius = radius {
                return VectorDrawable.RadialGradient(startColor: startColor,
                                                     centerColor: centerColor,
                                                     endColor: endColor,
                                                     tileMode: tileMode,
                                                     centerX: centerX,
                                                     centerY: centerY,
                                                     radius: radius,
                                                     offsets: offsets)
            } else {
                return nil
            }
        case .sweep:
            if let centerX = centerX,
                let centerY = centerY {
                return VectorDrawable.SweepGradient(startColor: startColor,
                                                    centerColor: centerColor,
                                                    endColor: endColor,
                                                    tileMode: tileMode,
                                                    centerX: centerX,
                                                    centerY: centerY,
                                                    offsets: offsets)
            } else {
                return nil
            }
        }
    }