class Shape {
var name : String?
var origin : CGPoint?
var lineColor : UIColor? = UIColor.red
var fillColor : UIColor? = UIColor.green
var lineWidth : CGFloat? = 5
init(name : String, origin : CGPoint) {
self.name = name
self.origin = origin
}
convenience init(origin : CGPoint) {
self.init(name: "Shape Bassclass", origin: origin)
}
func drawBezierPath() {
print("Draw \(name!)")
}
}
class Line : Shape {
var start :CGPoint?
var end : CGPoint?
init(name: String, origin: CGPoint, start : CGPoint, end : CGPoint) {
super.init(name : name, origin : origin)
self.start = start
self.end = end
}
convenience init(start : CGPoint, end : CGPoint) {
self.init(name: "Line", origin: start, start: start, end: end)
}
override func drawBezierPath() {
print("Draw \(name!)")
let path = UIBezierPath()
path.move(to: start!)
path.addLine(to: end!)
path.lineWidth = lineWidth!
path.lineCapStyle = .round
lineColor?.setStroke()
path.stroke()
}
}
class Rectangle :Shape {
var size: CGSize?
init(name: Stringr, origin: CGPoint, size: CGSize) {
super.init(name: name,origin:origin)
self.size = size
}
convenience init(origin: CGPoint , size: CGSize) {
self.init(name: "Rectangle", origin: origin, size: size)
}
override func drawBezierPath() {
print("Draw \(name!)")
let path = UIBezierPath(rect:CGRect(origin: origin!, size: size!))
path.lineWidth = lineWidth!
lineColor?.setStroke()
path.stroke()
}
}
class Rectangle :Shape {
var size : CGSize?
var corner : CGFloat?
init(name: String, origin: CGPoint , size : CGSize , corner : CGFloat) {
super.init(name: name, origin: origin)
self.size = size
self.corner = corner
}
convenience init(origin: CGPoint, size : CGSize, corner : CGFloat = 0) {
self.init(name: "Rectangle", origin: origin, size: size, corner : corner)
}
override func drawbezierPath() {
print("Draw\(name!)")
let path = UIBezierPath(roundedRect: CGRect(origin: origin!, size: size!), cornerRadius: corner!)
path.lineWidth = linewidth!
lineColor?.setStroke()
path.stroke()
}
}
let myRect = Rectangle(origin: start, size: CGSize(width: 150, height: 100),corner:8.0)
let myRect = Rectangle(origin: start, size: CGSize(width: 150, height: 100))
class Circle : Shape {
var center : CGPoint?
var raduis : CGFloat?
var size : CGSize?
init(name: String,origin: CGPoint, center : CGPoint, raduis : CGFLoAT, size :CGSize) {
super.init(name: name, origin: origin)
self.center = center
self.raduis = raduis
self.size = size
}
convenience init(center : CGPoint, raduis : CGFloat) {
let x = center.x - raduis
let y = center.y - raduis
self.init(name: "Circle", origin: CGPoint(x:x,y:y), center: center, raduis: raduis, size : CGSize(width: raduis, height: raduis))
}
convenience init(center : CGPoint, size : CGSize) {
let x = center.x - size.width/2
let y = center.y - size.height/2
self.init(name:"Oval/Ellipse",origin: CGPoint(x: x, y: y), center: center, raduis: 0, size: size)
}
override func drawBezierPath() {
print("Draw\(name!)")
let path = UIBezierPath(ovalIn: CGRect(origin: origin!, size: size!))
path.lineWidth = lineWidth!
lineColor?.setStroke()
path.stroke()
}
}
class Polygons : Shape{
var points : Array<CGPoint>?
init(name: String, origin : CGPoint, points : Array<CGPoint> ) {
super.init(name: name, origin: origin)
self.points = points
}
convenience init(points :Array<CGPoint> ) {
if points.count == 3 {
self.init(name: "Triangel", origin: points.first!, points: points)
}
else if points.count >= 3 {
self.init(name: "Polygons", origin: points.first!, points: points)
}
else {
let origin = CGPoint(x: 0, y: 0)
self.init(name: "Error", origin: origin, points: points)
}
}
override func drawBezierPath() {
print("Draw \(name!)")
if(name == "Error") {
return
}
let path = UIBezierPath()
path.move(to: origin!)
for each in points! {
path.addline(to: each)
}
path.close()
path.linewidth = lineWidth!
lineColor?.setStroke()
path.stroke()
path.fill()
}
}