Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
32 changes: 19 additions & 13 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,30 @@
import PackageDescription

let package = Package(
name: "SVGView",
platforms: [
.macOS(.v11),
name: "SVGView",
platforms: [
.macOS(.v11),
.iOS(.v14),
.watchOS(.v7)
.watchOS(.v7),
],
products: [
.library(
name: "SVGView",
targets: ["SVGView"]
)
.library(
name: "SVGView",
targets: ["SVGView"]
)
],
targets: [
.target(
name: "SVGView",
path: "Source",
exclude: ["Info.plist"]
)
.target(
name: "SVGView",
path: "Source"
),
.testTarget(
name: "SVGViewTests",
dependencies: ["SVGView"],
resources: [
.copy("w3c")
]
),
],
swiftLanguageVersions: [.v5]
)
25 changes: 0 additions & 25 deletions SVGView.podspec

This file was deleted.

22 changes: 0 additions & 22 deletions SVGViewTests/Info.plist

This file was deleted.

22 changes: 0 additions & 22 deletions Source/Info.plist

This file was deleted.

40 changes: 3 additions & 37 deletions Source/Model/Images/SVGDataImage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@
// Created by Alisa Mylnikova on 10/06/2021.
//

import SwiftUI
import Combine

public class SVGDataImage: SVGImage, ObservableObject {
import Foundation
public class SVGDataImage: SVGImage {

@Published public var data: Data
public var data: Data

public init(x: CGFloat = 0, y: CGFloat = 0, width: CGFloat = 0, height: CGFloat = 0, data: Data) {
self.data = data
Expand All @@ -21,37 +20,4 @@ public class SVGDataImage: SVGImage, ObservableObject {
serializer.add("data", "\(data.base64EncodedString())")
super.serialize(serializer)
}

public func contentView() -> some View {
SVGDataImageView(model: self)
}
}

struct SVGDataImageView: View {

#if os(OSX)
@ViewBuilder
private var image: Image? {
if let nsImage = NSImage(data: model.data) {
Image(nsImage: nsImage)
}
}
#else
@ViewBuilder
private var image: Image? {
if let uiImage = UIImage(data: model.data) {
Image(uiImage: uiImage)
}
}
#endif

@ObservedObject var model: SVGDataImage

public var body: some View {
image
.frame(width: model.width, height: model.height)
.position(x: model.x, y: model.y)
.offset(x: model.width/2, y: model.height/2)
.applyNodeAttributes(model: model)
}
}
38 changes: 2 additions & 36 deletions Source/Model/Images/SVGURLImage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
// Created by Alisa Mylnikova on 22/09/2021.
//

import SwiftUI
import Foundation

public class SVGURLImage: SVGImage, ObservableObject {
public class SVGURLImage: SVGImage {

public let src: String
public let data: Data?
Expand All @@ -22,38 +22,4 @@ public class SVGURLImage: SVGImage, ObservableObject {
serializer.add("src", src)
super.serialize(serializer)
}

public func contentView() -> some View {
SVGUrlImageView(model: self)
}
}

struct SVGUrlImageView: View {

@ObservedObject var model: SVGURLImage

#if os(OSX)
@ViewBuilder
private var image: Image? {
if let data = model.data, let nsImage = NSImage(data: data) {
Image(nsImage: nsImage)
}
}
#else
@ViewBuilder
private var image: Image? {
if let data = model.data, let uiImage = UIImage(data: data) {
Image(uiImage: uiImage)
}
}
#endif

public var body: some View {
image
.frame(width: model.width, height: model.height)
.position(x: model.x, y: model.y)
.offset(x: model.width/2, y: model.height/2)
.applyNodeAttributes(model: model)
}
}

53 changes: 22 additions & 31 deletions Source/Model/Nodes/SVGGroup.swift
Original file line number Diff line number Diff line change
@@ -1,12 +1,25 @@
import SwiftUI
import Combine

public class SVGGroup: SVGNode, ObservableObject {

@Published public var contents: [SVGNode] = []

public init(contents: [SVGNode], transform: CGAffineTransform = .identity, opaque: Bool = true, opacity: Double = 1, clip: SVGUserSpaceNode? = nil, mask: SVGNode? = nil) {
super.init(transform: transform, opaque: opaque, opacity: opacity, clip: clip, mask: mask)
import Foundation


public class SVGGroup: SVGNode {

public var contents: [SVGNode] = []

public init(
contents: [SVGNode],
transform: CGAffineTransform? = nil,
opaque: Bool = true,
opacity: Double = 1,
clip: SVGUserSpaceNode? = nil,
mask: SVGNode? = nil
) {
super.init(
transform: transform ?? .identity,
opaque: opaque,
opacity: opacity,
clip: clip,
mask: mask
)
self.contents = contents
}

Expand All @@ -30,26 +43,4 @@ public class SVGGroup: SVGNode, ObservableObject {
super.serialize(serializer)
serializer.add("contents", contents)
}

public func contentView() -> some View {
SVGGroupView(model: self)
}
}

struct SVGGroupView: View {

@ObservedObject var model: SVGGroup

public var body: some View {
ZStack {
ForEach(0..<model.contents.count, id: \.self) { i in
if i <= model.contents.count - 1 {
model.contents[i].toSwiftUI()
}
}
}
.compositingGroup() // so that all the following attributes are applied to the group as a whole
.applyNodeAttributes(model: model)
}
}

11 changes: 5 additions & 6 deletions Source/Model/Nodes/SVGImage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,14 @@
// Created by Alisa Mylnikova on 03/06/2021.
//

import SwiftUI
import Combine

import Foundation
public class SVGImage: SVGNode {

@Published public var x: CGFloat
@Published public var y: CGFloat
@Published public var width: CGFloat
@Published public var height: CGFloat
public var x: CGFloat
public var y: CGFloat
public var width: CGFloat
public var height: CGFloat

public init(x: CGFloat = 0, y: CGFloat = 0, width: CGFloat = 0, height: CGFloat = 0) {
self.x = x
Expand Down
Loading