| // RUN: %target-typecheck-verify-swift |
| // REQUIRES: objc_interop |
| |
| import CoreGraphics |
| |
| //===----------------------------------------------------------------------===// |
| // CGColorSpace |
| //===----------------------------------------------------------------------===// |
| |
| // CGColorSpace.colorTable |
| // TODO: has memory issues as a runtime test, so make it verify-only for now |
| let table: [UInt8] = [0,0,0, 255,0,0, 0,0,255, 0,255,0, |
| 255,255,0, 255,0,255, 0,255,255, 255,255,255] |
| let space = CGColorSpace(indexedBaseSpace: CGColorSpaceCreateDeviceRGB(), |
| last: table.count - 1, colorTable: table)! |
| // expectEqual(table, space.colorTable) |
| |
| //===----------------------------------------------------------------------===// |
| // CGContext |
| //===----------------------------------------------------------------------===// |
| |
| func testCGContext(context: CGContext, image: CGImage, glyph: CGGlyph) { |
| |
| context.setLineDash(phase: 0.5, lengths: [0.1, 0.2]) |
| |
| context.move(to: CGPoint.zero) |
| |
| context.addLine(to: CGPoint(x: 0.5, y: 0.5)) |
| |
| context.addCurve(to: CGPoint(x: 1, y: 1), control1: CGPoint(x: 1, y: 0), control2: CGPoint(x: 0, y: 1)) |
| |
| context.addQuadCurve(to: CGPoint(x: 0.5, y: 0.5), control: CGPoint(x: 0.5, y: 0)) |
| |
| context.addRects([CGRect(x: 0, y: 0, width: 100, height: 100)]) |
| |
| context.addLines(between: [CGPoint(x: 0.5, y: 0.5)]) |
| |
| context.addArc(center: CGPoint(x: 0.5, y: 0.5), radius: 1, startAngle: 0, endAngle: .pi, clockwise: false) |
| |
| context.addArc(tangent1End: CGPoint(x: 1, y: 1), tangent2End: CGPoint(x: 0.5, y: 0.5), radius: 0.5) |
| |
| context.fill([CGRect(x: 0, y: 0, width: 100, height: 100)]) |
| |
| context.fillPath() |
| context.fillPath(using: .evenOdd) |
| |
| context.strokeLineSegments(between: [CGPoint(x: 0.5, y: 0.5), CGPoint(x: 0, y: 0.5)]) |
| |
| context.clip(to: [CGRect(x: 0, y: 0, width: 100, height: 100)]) |
| |
| context.clip() |
| context.clip(using: .evenOdd) |
| |
| context.draw(image, in: CGRect(x: 0, y: 0, width: 100, height: 100), byTiling: true) |
| |
| print(context.textPosition) |
| |
| context.showGlyphs([glyph], at: [CGPoint(x: 0.5, y: 0.5)]) |
| |
| } |
| |
| //===----------------------------------------------------------------------===// |
| // CGDirectDisplay |
| //===----------------------------------------------------------------------===// |
| |
| #if os(macOS) |
| let (dx, dy) = CGGetLastMouseDelta() |
| #endif |
| |
| //===----------------------------------------------------------------------===// |
| // CGImage |
| //===----------------------------------------------------------------------===// |
| |
| func testCGImage(image: CGImage) -> CGImage? { |
| return image.copy(maskingColorComponents: [1, 0, 0]) |
| } |
| |
| //===----------------------------------------------------------------------===// |
| // CGLayer |
| //===----------------------------------------------------------------------===// |
| |
| func testDrawLayer(in context: CGContext) { |
| let layer = CGLayer(context, size: CGSize(width: 512, height: 384), |
| auxiliaryInfo: nil)! |
| context.draw(layer, in: CGRect(origin: .zero, size: layer.size)) |
| context.draw(layer, at: CGPoint(x: 20, y: 20)) |
| } |
| |
| func testCGPath(path: CGPath) { |
| |
| let dashed = path.copy(dashingWithPhase: 1, lengths: [0.2, 0.3, 0.5]) |
| |
| let stroked = path.copy(strokingWithWidth: 1, lineCap: .butt, |
| lineJoin: .miter, miterLimit: 0.1) |
| |
| let mutable = stroked.mutableCopy()! |
| |
| // test inferred transform parameter for all below |
| print(path.contains(CGPoint(x: 0.5, y: 0.5))) |
| print(path.contains(CGPoint(x: 0.5, y: 0.5), using: .evenOdd)) |
| |
| mutable.move(to: .zero) |
| |
| mutable.addLine(to: CGPoint(x: 0.5, y: 0.5)) |
| |
| mutable.addCurve(to: CGPoint(x: 1, y: 1), control1: CGPoint(x: 1, y: 0), control2: CGPoint(x: 0, y: 1)) |
| |
| mutable.addQuadCurve(to: CGPoint(x: 0.5, y: 0.5), control: CGPoint(x: 0.5, y: 0)) |
| |
| mutable.addRect(CGRect(x: 0, y: 0, width: 10, height: 10)) |
| mutable.addRects([CGRect(x: 0, y: 0, width: 100, height: 100)]) |
| |
| mutable.addLines(between: [CGPoint(x: 0.5, y: 0.5)]) |
| |
| mutable.addEllipse(in: CGRect(x: 0, y: 0, width: 50, height: 70)) |
| |
| mutable.addArc(center: CGPoint(x: 0.5, y: 0.5), radius: 1, startAngle: 0, endAngle: .pi, clockwise: false) |
| |
| mutable.addArc(tangent1End: CGPoint(x: 1, y: 1), tangent2End: CGPoint(x: 0.5, y: 0.5), radius: 0.5) |
| |
| mutable.addRelativeArc(center: CGPoint(x: 1, y: 1), radius: 0.5, |
| startAngle: .pi, delta: .pi/2) |
| |
| mutable.addPath(dashed) |
| |
| } |