Giter Site home page Giter Site logo

pureswift / cacao Goto Github PK

View Code? Open in Web Editor NEW
1.1K 39.0 45.0 3.26 MB

Pure Swift Cross-platform UIKit (Cocoa Touch) implementation (Supports Linux)

License: MIT License

Swift 100.00%
swift linux cocoa-touch uikit cross-platform-gui vector-graphics

cacao's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cacao's Issues

Is Cacao still being developed?

It appears the last commit was from about 2 years ago now, has development stopped on it? Has development shifted else where?

Failing to build on Ubuntu 18.04, swift version 4.2.1

Good evening,

Firstly, I'm thrilled to have come across a community of developers building frameworks for developing swift-based software across platforms.

Unfortunately I'm having trouble getting this to build. I've gotten apt to install the prerequisite packages as per command:

sudo apt-get install libcairo-dev libsdl2-dev liblcms2-dev

My setup:
Dev machine: Ubuntu 18.04

Swift version:

$ swift --version
Swift version 4.2.1 (swift-4.2.1-RELEASE)
Target: x86_64-unknown-linux-gnu

Anything I might be missing? Below is the raw build output:

Build Output:

/home/me/workspace/Cacao$ swift build
Fetching https://github.com/PureSwift/Cairo.git
Fetching https://github.com/PureSwift/CFreeType.git
Fetching https://github.com/PureSwift/CCairo.git
Fetching https://github.com/PureSwift/CFontConfig.git
Fetching https://github.com/PureSwift/SDL.git
Fetching https://github.com/PureSwift/Silica.git
Fetching https://github.com/PureSwift/CSDL2.git
Completed resolution in 16.69s
Cloning https://github.com/PureSwift/Silica.git
Resolving https://github.com/PureSwift/Silica.git at master
Cloning https://github.com/PureSwift/SDL.git
Resolving https://github.com/PureSwift/SDL.git at master
Cloning https://github.com/PureSwift/CSDL2.git
Resolving https://github.com/PureSwift/CSDL2.git at master
Cloning https://github.com/PureSwift/CFreeType.git
Resolving https://github.com/PureSwift/CFreeType.git at 1.0.4
Cloning https://github.com/PureSwift/Cairo.git
Resolving https://github.com/PureSwift/Cairo.git at master
Cloning https://github.com/PureSwift/CFontConfig.git
Resolving https://github.com/PureSwift/CFontConfig.git at 1.0.1
Cloning https://github.com/PureSwift/CCairo.git
Resolving https://github.com/PureSwift/CCairo.git at 1.1.1
warning: PackageDescription API v3 is deprecated and will be removed in the future; used by package(s): CSDL2, Silica, Cairo, CFreeType, CFontConfig, CCairo
Compile Swift Module 'SDL' (14 sources)
Compile Swift Module 'Cairo' (14 sources)
swift: /home/buildnode/jenkins/workspace/oss-swift-4.2-package-linux-ubuntu-18_04/llvm/tools/clang/lib/Serialization/ASTWriter.cpp:5508: clang::serialization::DeclID clang::ASTWriter::getDeclID(const clang::Decl *): Assertion `DeclIDs.find(D) != DeclIDs.end() && "Declaration not emitted!"' failed.
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3defe74]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3dedc8c]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3df0032]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x12890)[0x7f60b23ce890]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0xc7)[0x7f60b0831e97]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x141)[0x7f60b0833801]
/lib/x86_64-linux-gnu/libc.so.6(+0x3039a)[0x7f60b082339a]
/lib/x86_64-linux-gnu/libc.so.6(+0x30412)[0x7f60b0823412]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32b370a]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32aeb9c]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32bfff9]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32bce9b]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x33024de]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2f7c06c]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x30dcbb6]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2f54580]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2efff11]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2f0ac20]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3d8bdeb]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3d8bf34]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3df11aa]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x76db)[0x7f60b23c36db]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x3f)[0x7f60b091488f]
Stack dump:
0.	<eof> parser at end of file
<unknown>:0: error: unable to execute command: Aborted
<unknown>:0: error: compile command failed due to signal 6 (use -v to see invocation)
swift: /home/buildnode/jenkins/workspace/oss-swift-4.2-package-linux-ubuntu-18_04/llvm/tools/clang/lib/Serialization/ASTWriter.cpp:5508: clang::serialization::DeclID clang::ASTWriter::getDeclID(const clang::Decl *): Assertion `DeclIDs.find(D) != DeclIDs.end() && "Declaration not emitted!"' failed.
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3defe74]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3dedc8c]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3df0032]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x12890)[0x7f26a9ad9890]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0xc7)[0x7f26a7f3ce97]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x141)[0x7f26a7f3e801]
/lib/x86_64-linux-gnu/libc.so.6(+0x3039a)[0x7f26a7f2e39a]
/lib/x86_64-linux-gnu/libc.so.6(+0x30412)[0x7f26a7f2e412]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32b370a]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32aeb9c]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32bfff9]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32bce9b]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x33024de]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2f7c06c]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x30dcbb6]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2f54580]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2efff11]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2f0ac20]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3d8bdeb]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3d8bf34]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3df11aa]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x76db)[0x7f26a9ace6db]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x3f)[0x7f26a801f88f]
Stack dump:
0.	<eof> parser at end of file
<unknown>:0: error: unable to execute command: Aborted
<unknown>:0: error: compile command failed due to signal 6 (use -v to see invocation)
swift: /home/buildnode/jenkins/workspace/oss-swift-4.2-package-linux-ubuntu-18_04/llvm/tools/clang/lib/Serialization/ASTWriter.cpp:5508: clang::serialization::DeclID clang::ASTWriter::getDeclID(const clang::Decl *): Assertion `DeclIDs.find(D) != DeclIDs.end() && "Declaration not emitted!"' failed.
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3defe74]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3dedc8c]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3df0032]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x12890)[0x7f26985d9890]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0xc7)[0x7f2696a3ce97]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x141)[0x7f2696a3e801]
/lib/x86_64-linux-gnu/libc.so.6(+0x3039a)[0x7f2696a2e39a]
/lib/x86_64-linux-gnu/libc.so.6(+0x30412)[0x7f2696a2e412]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32b370a]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32aeb9c]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32bfff9]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32bce9b]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x33024de]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2f7c06c]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x30dcbb6]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2f54580]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2efff11]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2f0ac20]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3d8bdeb]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3d8bf34]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3df11aa]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x76db)[0x7f26985ce6db]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x3f)[0x7f2696b1f88f]
Stack dump:
0.	<eof> parser at end of file
<unknown>:0: error: unable to execute command: Aborted
<unknown>:0: error: compile command failed due to signal 6 (use -v to see invocation)
swift: /home/buildnode/jenkins/workspace/oss-swift-4.2-package-linux-ubuntu-18_04/llvm/tools/clang/lib/Serialization/ASTWriter.cpp:5508: clang::serialization::DeclID clang::ASTWriter::getDeclID(const clang::Decl *): Assertion `DeclIDs.find(D) != DeclIDs.end() && "Declaration not emitted!"' failed.
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3defe74]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3dedc8c]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3df0032]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x12890)[0x7fe71f5e3890]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0xc7)[0x7fe71da46e97]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x141)[0x7fe71da48801]
/lib/x86_64-linux-gnu/libc.so.6(+0x3039a)[0x7fe71da3839a]
/lib/x86_64-linux-gnu/libc.so.6(+0x30412)[0x7fe71da38412]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32b370a]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32aeb9c]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32bfff9]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x32bce9b]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x33024de]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2f7c06c]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x30dcbb6]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2f54580]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2efff11]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x2f0ac20]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3d8bdeb]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3d8bf34]
/my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift[0x3df11aa]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x76db)[0x7fe71f5d86db]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x3f)[0x7fe71db2988f]
Stack dump:
0.	<eof> parser at end of file
<unknown>:0: error: unable to execute command: Aborted
<unknown>:0: error: compile command failed due to signal 6 (use -v to see invocation)
error: terminated(1): /my/path/bin/swift/swift-4.2.1-RELEASE-ubuntu18.04/usr/bin/swift-build-tool -f /media/truecrypt1/development/swift/Cacao/.build/debug.yaml main output:


Build fails on ubuntu 16.04 using swift 4.0.3

Output of swift build:

Fetching https://github.com/PureSwift/Silica.git
Fetching https://github.com/PureSwift/Cairo.git
Fetching https://github.com/PureSwift/SDL.git
Fetching https://github.com/PureSwift/CSDL2.git
Fetching https://github.com/PureSwift/LittleCMS.git
Fetching https://github.com/PureSwift/CLCMS.git
Fetching https://github.com/PureSwift/CFreeType.git
Fetching https://github.com/PureSwift/CFontConfig.git
Fetching https://github.com/PureSwift/CCairo.git
Cloning https://github.com/PureSwift/CLCMS.git
Resolving https://github.com/PureSwift/CLCMS.git at 1.0.0
Cloning https://github.com/PureSwift/CFontConfig.git
Resolving https://github.com/PureSwift/CFontConfig.git at 1.0.1
Cloning https://github.com/PureSwift/CSDL2.git
Resolving https://github.com/PureSwift/CSDL2.git at 1.0.1
Cloning https://github.com/PureSwift/Silica.git
Resolving https://github.com/PureSwift/Silica.git at 1.3.2
Cloning https://github.com/PureSwift/CFreeType.git
Resolving https://github.com/PureSwift/CFreeType.git at 1.0.4
Cloning https://github.com/PureSwift/SDL.git
Resolving https://github.com/PureSwift/SDL.git at 1.0.1
Cloning https://github.com/PureSwift/Cairo.git
Resolving https://github.com/PureSwift/Cairo.git at 1.2.3
Cloning https://github.com/PureSwift/LittleCMS.git
Resolving https://github.com/PureSwift/LittleCMS.git at 1.0.2
Cloning https://github.com/PureSwift/CCairo.git
Resolving https://github.com/PureSwift/CCairo.git at 1.1.1
warning: error while trying to use pkgConfig flags for CSDL2: nonWhitelistedFlags("Non whitelisted flags found: [\"-D_REENTRANT\"] in pc file sdl2")
Compile Swift Module 'SDL' (10 sources)
Compile Swift Module 'LittleCMS' (14 sources)
Compile Swift Module 'Cairo' (14 sources)
Compile Swift Module 'Silica' (17 sources)
/home/sky/.software/Cacao/.build/checkouts/SDL.git-6140504252031209735/Sources/SDL/BitMaskOption.swift:18:20: warning: redeclaration of associated type 'RawValue' from protocol 'RawRepresentable' is better expressed as a 'where' clause on the protocol
    associatedtype RawValue: Integer
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
    
Swift.RawRepresentable:94:20: note: 'RawValue' declared here
    associatedtype RawValue
                   ^
/home/sky/.software/Cacao/.build/checkouts/SDL.git-6140504252031209735/Sources/SDL/BitMaskOption.swift:18:20: warning: redeclaration of associated type 'RawValue' from protocol 'RawRepresentable' is better expressed as a 'where' clause on the protocol
    associatedtype RawValue: Integer
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
    
Swift.RawRepresentable:94:20: note: 'RawValue' declared here
    associatedtype RawValue
                   ^
/home/sky/.software/Cacao/.build/checkouts/SDL.git-6140504252031209735/Sources/SDL/BitMaskOption.swift:18:20: warning: redeclaration of associated type 'RawValue' from protocol 'RawRepresentable' is better expressed as a 'where' clause on the protocol
    associatedtype RawValue: Integer
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
    
Swift.RawRepresentable:94:20: note: 'RawValue' declared here
    associatedtype RawValue
                   ^
/home/sky/.software/Cacao/.build/checkouts/SDL.git-6140504252031209735/Sources/SDL/BitMaskOption.swift:18:20: warning: redeclaration of associated type 'RawValue' from protocol 'RawRepresentable' is better expressed as a 'where' clause on the protocol
    associatedtype RawValue: Integer
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
    
Swift.RawRepresentable:94:20: note: 'RawValue' declared here
    associatedtype RawValue
                   ^
/home/sky/.software/Cacao/.build/checkouts/SDL.git-6140504252031209735/Sources/SDL/BitMaskOption.swift:18:20: warning: redeclaration of associated type 'RawValue' from protocol 'RawRepresentable' is better expressed as a 'where' clause on the protocol
    associatedtype RawValue: Integer
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
    
Swift.RawRepresentable:94:20: note: 'RawValue' declared here
    associatedtype RawValue
                   ^
/home/sky/.software/Cacao/.build/checkouts/SDL.git-6140504252031209735/Sources/SDL/BitMaskOption.swift:18:20: warning: redeclaration of associated type 'RawValue' from protocol 'RawRepresentable' is better expressed as a 'where' clause on the protocol
    associatedtype RawValue: Integer
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
    
Swift.RawRepresentable:94:20: note: 'RawValue' declared here
    associatedtype RawValue
                   ^
/home/sky/.software/Cacao/.build/checkouts/SDL.git-6140504252031209735/Sources/SDL/BitMaskOption.swift:18:20: warning: redeclaration of associated type 'RawValue' from protocol 'RawRepresentable' is better expressed as a 'where' clause on the protocol
    associatedtype RawValue: Integer
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
    
Swift.RawRepresentable:94:20: note: 'RawValue' declared here
    associatedtype RawValue
                   ^
/home/sky/.software/Cacao/.build/checkouts/SDL.git-6140504252031209735/Sources/SDL/BitMaskOption.swift:18:20: warning: redeclaration of associated type 'RawValue' from protocol 'RawRepresentable' is better expressed as a 'where' clause on the protocol
    associatedtype RawValue: Integer
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
    
Swift.RawRepresentable:94:20: note: 'RawValue' declared here
    associatedtype RawValue
                   ^
/home/sky/.software/Cacao/.build/checkouts/SDL.git-6140504252031209735/Sources/SDL/BitMaskOption.swift:18:20: warning: redeclaration of associated type 'RawValue' from protocol 'RawRepresentable' is better expressed as a 'where' clause on the protocol
    associatedtype RawValue: Integer
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
    
Swift.RawRepresentable:94:20: note: 'RawValue' declared here
    associatedtype RawValue
                   ^
/home/sky/.software/Cacao/.build/checkouts/SDL.git-6140504252031209735/Sources/SDL/BitMaskOption.swift:18:20: warning: redeclaration of associated type 'RawValue' from protocol 'RawRepresentable' is better expressed as a 'where' clause on the protocol
    associatedtype RawValue: Integer
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
    
Swift.RawRepresentable:94:20: note: 'RawValue' declared here
    associatedtype RawValue
                   ^
Compile Swift Module 'SDLDemo' (1 sources)
/home/sky/.software/Cacao/.build/checkouts/Silica.git-3700298429439828320/Sources/Silica/CGFont.swift:236:25: warning: 'init' is deprecated: Failable initializer was removed in Swift 4. When upgrading to Swift 4, please use non-failable String.init(_:UTF8View)
        let substring = String(utf8[indexRange])
                        ^
Linking ./.build/x86_64-unknown-linux/debug/SDLDemo
Compile Swift Module 'Cacao' (78 sources)
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/SDL.swift:82:17: warning: result of call to 'run(mode:before:)' is unused
        runloop.run(mode: .defaultRunLoopMode, before: Date() + (1.0 / TimeInterval(framesPerSecond)))
                ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
/home/sky/.software/Cacao/Sources/Cacao/UIResponder.swift:238:27: error: use of undeclared type 'UndoManager'
    open var undoManager: UndoManager? { return nil }
                          ^~~~~~~~~~~
error: terminated(1): /home/sky/.software/swift-lang/usr/bin/swift-build-tool -f /home/sky/.software/Cacao/.build/debug.yaml main`

Raspberry pi Raspbian GNU/Linux 9 (stretch) Build fail

pi@raspberrypi:~/Cacao $ swift build
Fetching https://github.com/PureSwift/Silica.git
Fetching https://github.com/PureSwift/Cairo.git
Fetching https://github.com/PureSwift/SDL.git
Fetching https://github.com/PureSwift/CSDL2.git
Fetching https://github.com/PureSwift/LittleCMS.git
Fetching https://github.com/PureSwift/CCairo.git
Fetching https://github.com/PureSwift/CLCMS.git
Fetching https://github.com/PureSwift/CFreeType.git
Fetching https://github.com/PureSwift/CFontConfig.git
Cloning https://github.com/PureSwift/Silica.git
Resolving https://github.com/PureSwift/Silica.git at 1.3.1
Cloning https://github.com/PureSwift/CFontConfig.git
Resolving https://github.com/PureSwift/CFontConfig.git at 1.0.1
Cloning https://github.com/PureSwift/CSDL2.git
Resolving https://github.com/PureSwift/CSDL2.git at 1.0.1
Cloning https://github.com/PureSwift/Cairo.git
Resolving https://github.com/PureSwift/Cairo.git at 1.2.3
Cloning https://github.com/PureSwift/LittleCMS.git
Resolving https://github.com/PureSwift/LittleCMS.git at 1.0.2
Cloning https://github.com/PureSwift/CLCMS.git
Resolving https://github.com/PureSwift/CLCMS.git at 1.0.0
Cloning https://github.com/PureSwift/CCairo.git
Resolving https://github.com/PureSwift/CCairo.git at 1.1.1
Cloning https://github.com/PureSwift/SDL.git
Resolving https://github.com/PureSwift/SDL.git at 1.0.1
Cloning https://github.com/PureSwift/CFreeType.git
Resolving https://github.com/PureSwift/CFreeType.git at 1.0.4
error: nonWhitelistedFlags("Non whitelisted flags found: [\"-D_REENTRANT\"] in pc file sdl2")

===================

PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

How to fix that?

Build fails on Ubuntu 16.04 using Swift 4.1

Related to #35, but has some additional build errors.

I'm compiling this on Ubuntu 16.04 LTS and there are several other errors when compiling the Cacao module, aside from the UndoManager. I'm using Swift 4.1.

In several locations, properties are defined in both Foundation and Silica.

Output from swift build.

Cacao/Sources/Cacao/TextRendering.swift:50:44: error: ambiguous use of 'width'
        case .center: textRect.origin.x = (bounds.width - textRect.width) / 2
                                           ^
Foundation.CGRect:4:16: note: found this candidate
    public var width: Foundation.CGFloat { get }
               ^
Silica.CGRect:4:16: note: found this candidate
    public var width: Foundation.CGFloat { get set }
               ^
Cacao/Sources/Cacao/TextRendering.swift:52:42: error: ambiguous use of 'width'
        case .right: textRect.origin.x = bounds.width - textRect.width
                                         ^
Foundation.CGRect:4:16: note: found this candidate
    public var width: Foundation.CGFloat { get }
               ^
Silica.CGRect:4:16: note: found this candidate
    public var width: Foundation.CGFloat { get set }
               ^
Cacao/Sources/Cacao/StyleKit/UISwitchStyleKit.swift:38:61: error: ambiguous use of 'minX'
        let thumbPath = UIBezierPath(roundedRect: CGRect(x: frame.minX + 0.5, y: frame.minY + 0.5, width: frame.width - 1, height: frame.height - 1), cornerRadius: 14)
                                                            ^
Foundation.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Silica.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Cacao/Sources/Cacao/StyleKit/UISwitchStyleKit.swift:44:73: error: ambiguous use of 'minX'
        let thumbShadowStrokePath = UIBezierPath(roundedRect: CGRect(x: frame.minX + 0.5, y: frame.minY + 0.5, width: frame.width - 1, height: frame.height - 1), cornerRadius: 14)
                                                                        ^
Foundation.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Silica.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Cacao/Sources/Cacao/StyleKit/UISwitchStyleKit.swift:57:32: error: ambiguous use of 'minX'
        context.translateBy(x: resizedFrame.minX, y: resizedFrame.minY)
                               ^
Foundation.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Silica.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Cacao/Sources/Cacao/StyleKit/UISwitchStyleKit.swift:58:28: error: ambiguous use of 'width'
        context.scaleBy(x: resizedFrame.width / 51, y: resizedFrame.height / 31)
                           ^
Foundation.CGRect:4:16: note: found this candidate
    public var width: Foundation.CGFloat { get }
               ^
Silica.CGRect:4:16: note: found this candidate
    public var width: Foundation.CGFloat { get set }
               ^
Cacao/Sources/Cacao/StyleKit/UISwitchStyleKit.swift:70:32: error: ambiguous use of 'minX'
        context.translateBy(x: backgroundViewRect.minX, y: backgroundViewRect.minY)
                               ^
Foundation.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Silica.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Cacao/Sources/Cacao/StyleKit/UISwitchStyleKit.swift:80:32: error: ambiguous use of 'minX'
        context.translateBy(x: thumbRect.minX, y: thumbRect.minY)
                               ^
Foundation.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Silica.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Cacao/Sources/Cacao/StyleKit/UISwitchStyleKit.swift:82:75: error: ambiguous use of 'width'
        UISwitchStyleKit.drawSwitchThumb(frame: CGRect(x: 0, y: 0, width: thumbRect.width, height: thumbRect.height), thumbColor: thumbColor)
                                                                          ^
Foundation.CGRect:4:16: note: found this candidate
    public var width: Foundation.CGFloat { get }
               ^
Silica.CGRect:4:16: note: found this candidate
    public var width: Foundation.CGFloat { get set }
               ^
Cacao/Sources/Cacao/StyleKit/UISwitchStyleKit.swift:96:32: error: ambiguous use of 'minX'
        context.translateBy(x: resizedFrame.minX, y: resizedFrame.minY)
                               ^
Foundation.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Silica.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Cacao/Sources/Cacao/StyleKit/UISwitchStyleKit.swift:97:28: error: ambiguous use of 'width'
        context.scaleBy(x: resizedFrame.width / 51, y: resizedFrame.height / 31)
                           ^
Foundation.CGRect:4:16: note: found this candidate
    public var width: Foundation.CGFloat { get }
               ^
Silica.CGRect:4:16: note: found this candidate
    public var width: Foundation.CGFloat { get set }
               ^
Cacao/Sources/Cacao/StyleKit/UISwitchStyleKit.swift:133:32: error: ambiguous use of 'width'
            scales.width = abs(target.width / rect.width)
                               ^
Foundation.CGRect:4:16: note: found this candidate
    public var width: Foundation.CGFloat { get }
               ^
Silica.CGRect:4:16: note: found this candidate
    public var width: Foundation.CGFloat { get set }
               ^
Cacao/Sources/Cacao/StyleKit/UISwitchStyleKit.swift:134:33: error: ambiguous use of 'height'
            scales.height = abs(target.height / rect.height)
                                ^
Foundation.CGRect:5:16: note: found this candidate
    public var height: Foundation.CGFloat { get }
               ^
Silica.CGRect:5:16: note: found this candidate
    public var height: Foundation.CGFloat { get set }
               ^
Cacao/Sources/Cacao/StyleKit/UISwitchStyleKit.swift:150:26: error: ambiguous use of 'standardized'
            var result = rect.standardized
                         ^
Foundation.CGRect:17:16: note: found this candidate
    public var standardized: Foundation.CGRect { get }
               ^
Silica.CGRect:12:16: note: found this candidate
    public var standardized: Foundation.CGRect { get }
               ^
Cacao/Sources/Cacao/SDL.swift:82:17: warning: result of call to 'run(mode:before:)' is unused
        runloop.run(mode: .defaultRunLoopMode, before: Date() + (1.0 / TimeInterval(framesPerSecond)))
                ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Cacao/Sources/Cacao/UIBezierPath.swift:85:35: error: ambiguous use of 'maxX'
        let topRight = CGPoint(x: rect.maxX, y: rect.minY)
                                  ^
Foundation.CGRect:8:16: note: found this candidate
    public var maxX: Foundation.CGFloat { get }
               ^
Silica.CGRect:8:16: note: found this candidate
    public var maxX: Foundation.CGFloat { get }
               ^
Cacao/Sources/Cacao/UIBezierPath.swift:86:38: error: ambiguous use of 'maxX'
        let bottomRight = CGPoint(x: rect.maxX, y: rect.maxY)
                                     ^
Foundation.CGRect:8:16: note: found this candidate
    public var maxX: Foundation.CGFloat { get }
               ^
Silica.CGRect:8:16: note: found this candidate
    public var maxX: Foundation.CGFloat { get }
               ^
Cacao/Sources/Cacao/UIBezierPath.swift:87:37: error: ambiguous use of 'minX'
        let bottomLeft = CGPoint(x: rect.minX, y: rect.maxY)
                                    ^
Foundation.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Silica.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Cacao/Sources/Cacao/UIScrollView.swift:141:24: error: ambiguous use of 'intersection'
        var goalRect = rect.intersection(contentRect)
                       ^
Foundation.CGRect:21:17: note: found this candidate
    public func intersection(_ r2: Foundation.CGRect) -> Foundation.CGRect
                ^
Silica.CGRect:20:17: note: found this candidate
    public func intersection(_ other: Foundation.CGRect) -> Foundation.CGRect
                ^
Cacao/Sources/Cacao/UITableView.swift:337:28: error: ambiguous use of 'intersects'
            .filter { self.bounds.intersects(self.rectForRow(at: $0)) } // get visible cells
                           ^
Foundation.CGRect:22:17: note: found this candidate
    public func intersects(_ r2: Foundation.CGRect) -> Bool
                ^
Silica.CGRect:19:17: note: found this candidate
    public func intersects(_ r2: Foundation.CGRect) -> Bool
                ^
Cacao/Sources/Cacao/UITableView.swift:299:24: error: ambiguous use of 'intersects'
                    if rect.intersects(simpleRowRect) {
                       ^
Foundation.CGRect:22:17: note: found this candidate
    public func intersects(_ r2: Foundation.CGRect) -> Bool
                ^
Silica.CGRect:19:17: note: found this candidate
    public func intersects(_ r2: Foundation.CGRect) -> Bool
                ^
Cacao/Sources/Cacao/UITableView.swift:873:32: error: ambiguous use of 'height'
            tableViewHeight += sectionRect.height
                               ^
Foundation.CGRect:5:16: note: found this candidate
    public var height: Foundation.CGFloat { get }
               ^
Silica.CGRect:5:16: note: found this candidate
    public var height: Foundation.CGFloat { get set }
               ^
Cacao/Sources/Cacao/UITableView.swift:876:19: error: ambiguous use of 'intersects'
            guard sectionRect.intersects(visibleBounds)
                  ^
Foundation.CGRect:22:17: note: found this candidate
    public func intersects(_ r2: Foundation.CGRect) -> Bool
                ^
Silica.CGRect:19:17: note: found this candidate
    public func intersects(_ r2: Foundation.CGRect) -> Bool
                ^
Cacao/Sources/Cacao/UITableView.swift:893:23: error: ambiguous use of 'intersects'
                guard rowRect.intersects(visibleBounds),
                      ^
Foundation.CGRect:22:17: note: found this candidate
    public func intersects(_ r2: Foundation.CGRect) -> Bool
                ^
Silica.CGRect:19:17: note: found this candidate
    public func intersects(_ r2: Foundation.CGRect) -> Bool
                ^
Cacao/Sources/Cacao/UITableView.swift:954:12: error: ambiguous use of 'isNull'
        if rect.isNull == false, rect.size.height > 0 {
           ^
Foundation.CGRect:14:16: note: found this candidate
    public var isNull: Bool { get }
               ^
Silica.CGRect:15:16: note: found this candidate
    public var isNull: Bool { get }
               ^
Cacao/Sources/Cacao/UIView.swift:907:28: error: ambiguous use of 'minX'
        return (point.x >= rect.minX && point.x <= rect.maxX)
                           ^
Foundation.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Silica.CGRect:6:16: note: found this candidate
    public var minX: Foundation.CGFloat { get }
               ^
Cacao/Sources/Cacao/UIViewContentMode.swift:53:30: error: ambiguous use of 'width'
            let widthRatio = bounds.width / size.width
                             ^
Foundation.CGRect:4:16: note: found this candidate
    public var width: Foundation.CGFloat { get }
               ^
Silica.CGRect:4:16: note: found this candidate
    public var width: Foundation.CGFloat { get set }
               ^
Cacao/Sources/Cacao/UIViewContentMode.swift:54:31: error: ambiguous use of 'height'
            let heightRatio = bounds.height / size.height
                              ^
Foundation.CGRect:5:16: note: found this candidate
    public var height: Foundation.CGFloat { get }
               ^
Silica.CGRect:5:16: note: found this candidate
    public var height: Foundation.CGFloat { get set }

Build error with CacaoDemo on macOS Mojave

Hi.
Maybe it's a configuration error from myself but :
I launched the CacaoDemo .xcodeproj in Xcode and tried to run it. Building is OK but while running, I can see this error (even for iOS or tvOS version) :

Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

Also, here is the return for updating package :

Hackintosh:Cacao-develop anard$ swift package update
Updating https://github.com/PureSwift/SDL.git
Updating https://github.com/PureSwift/Cairo.git
Updating https://github.com/PureSwift/Silica.git
https://github.com/PureSwift/Silica.git @ master: error: manifest parse error(s):
/var/folders/t_/hcs46zld3wz4qn55xkhldg4h0000gn/T/TemporaryFile.a3iNIj.swift:11:5: error: argument 'dependencies' must precede argument 'targets'
    dependencies: [
~~~~^~~~~~~~~~~~~~~
Hackintosh:Cacao-develop anard$

Thanks for your work

Implement Text Rendering

  • The goal of this feature is to implement NSString.drawWithRect(). Fonts have been added to Silica, and the main rendering code should be done there, NSString.drawWithRect() is for UIKit compatibility.
  • Work on this feature is being done on the Text branch in Cacao and the master branch in Silica.
  • A PaintCode StyleKit test canvas and unit test case has been added to test this functionality. This feature will be considered done when that unit test renders the same output as PaintCode / UIKit.

Build error

I'm trying to run your demo application but the build failed because of the error below.

Compile Swift Module 'Silica' (19 sources)
/home/bmdelacruz/Documents/Projects/swift/Cacao/.build/checkouts/Silica.git-4667709516086632535/Sources/Silica/CGRect.swift:32:56: error: ambiguous use of 'nan'
    public static var null: CGRect { return CGRect(x: .nan, y: .nan, width: .nan, height: .nan) }
                                                       ^
Foundation.CGFloat:14:23: note: found this candidate
    public static var nan: Foundation.CGFloat { get }
                      ^
Swift.Double:137:23: note: found this candidate
    public static var nan: Double { get }

OS: Ubuntu 16.04
Swift version: Swift version 4.0-dev (LLVM 2dedb62a0b, Clang b9d76a314c, Swift 61ad3c07ef)

UIView invalid layout on Linux

For some reason the layout is invalid on Linux, but fine on macOS. The previous Cairo-backed version did not have this issue, so the issue probably lies in our use of SDL.

UIView SDL texture not always rendering to screen in Linux

The temporary workaround for this is to convert the Cairo surface to PNG data, and then discard that data. Its hard to debug this because in the rendering unit tests, the SDL texture raw data is as expected, and the code works fine on macOS, so the source of the problem is currently unknown.

Display Carthage support in Readme

Hi,
If your component is compatible with Carthage It would be nice if you added on your README.md Carthage compatible on top and a section for the installation with Carthage.

Build failed

I cant build this project because dependencies


>swift build
Cloning https://github.com/PureSwift/Silica.git
git clone --recursive --depth 10 https://github.com/PureSwift/Silica.git /home/admin1/Downloads/Cacao-master/Packages/Silica.git

fatal error: unexpectedly found nil while unwrapping an Optional value
Current stack trace:
0    libswiftCore.so                    0x00007f22f5201fc0 swift_reportError + 117
1    libswiftCore.so                    0x00007f22f5214df0 _swift_stdlib_reportFatalError + 63
2    libswiftCore.so                    0x00007f22f50226a3 <unavailable> + 0
3    libswiftCore.so                    0x00007f22f517fdfd <unavailable> + 0
4    libswiftCore.so                    0x00007f22f50226a3 <unavailable> + 0
5    libswiftCore.so                    0x00007f22f51416b0 specialized _fatalErrorMessage(StaticString, StaticString, StaticString, UInt, flags : UInt32) -> Never + 96
6    swift-build                        0x00000000005a9ad5 <unavailable> + 0
7    swift-build                        0x0000000000652707 <unavailable> + 0
8    swift-build                        0x000000000065e08d <unavailable> + 0
9    swift-build                        0x000000000065fd92 <unavailable> + 0
10   swift-build                        0x0000000000654f41 <unavailable> + 0
11   swift-build                        0x0000000000656ebe <unavailable> + 0
12   swift-build                        0x00000000006565dd <unavailable> + 0
13   swift-build                        0x0000000000656f8c <unavailable> + 0
14   libswiftCore.so                    0x00007f22f50c3ea0 Sequence.flatMap<A where ...> ((A.Iterator.Element) throws -> A1) throws -> [A1.Iterator.Element] + 576
15   swift-build                        0x00000000006531dc <unavailable> + 0
16   swift-build                        0x0000000000652bb4 <unavailable> + 0
17   swift-build                        0x000000000065b232 <unavailable> + 0
18   swift-build                        0x0000000000703f0b <unavailable> + 0
19   swift-build                        0x00000000006f9615 <unavailable> + 0
20   swift-build                        0x00000000004156b8 <unavailable> + 0
21   libc.so.6                          0x00007f22f31d9740 __libc_start_main + 240
22   swift-build                        0x0000000000415579 <unavailable> + 0
Illegal instruction (core dumped)

The performance might not be as well as UIKit in iOS devices theoretically.

I found that Cacao is using Cairo for 2D rendering.It's said that Cairo's performance is worse than Skia (which is based on OpenGL and Vulkan). And Metal2.0 is even much faster than Vulkan.

Take Flutter For example, it performs not so well in iOS. The render engine should be taken into consideration.

Fail to build on Linux Arm 32bit

Using Swift3.11 on a RPI3 with Raspbian stretch and cheating on the sdl2.pc file (issue #32 ).
The build of the master branch, fails:

Compile Swift Module 'Cacao' (66 sources) /home/pi/Swift-trying/Cacao/Sources/Cacao/UIControl.swift:217:66: error: integer literal '4026531840' overflows when stored into 'Int' public static let systemReserved = UIControlEvents(rawValue: 0xF0000000) ^ /home/pi/Swift-trying/Cacao/Sources/Cacao/UIControl.swift:218:61: error: integer literal '4294967295' overflows when stored into 'Int' public static let allEvents = UIControlEvents(rawValue: 0xFFFFFFFF) ^ /home/pi/Swift-trying/Cacao/Sources/Cacao/UIScrollView.swift:425:34: warning: will never be executed isDecelerating = true ^ /home/pi/Swift-trying/Cacao/Sources/Cacao/UIScrollView.swift:420:51: note: condition always evaluates to false if /* decelerationAnimation != nil */ false { ^ /home/pi/Swift-trying/Cacao/Sources/Cacao/SDL.swift:61:9: warning: initialization of immutable value 'runloop' was never used; consider replacing with assignment to '_' or removing it let runloop = RunLoop.current ~~~~^~~~~~~ _ <unknown>:0: error: build had 1 command failures

building the develop-branch fails, because of error: use of undeclared type 'UndoManager'
building V0.51 fails too, but I only got error: unsatisfiable

Fails to build on macOS

When I try to build 9cda4a1 using swift build -Xlinker -L/usr/local/lib I get:

Cacao/Sources/Cacao/UIView.swift:734:47: error: type 'SDLPixelFormat.Format' has no member 'argb8888'
                                     format: .argb8888, // SDL_PIXELFORMAT_ARGB8888
                                              ^~~~~~~~

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.