Lots of updates

- Add unlock
- Update Sorting menu
- Prepare to load multiple tile images
- New logging
- Calculate thumbnails and colors before schowing grid
This commit is contained in:
christophhagen
2020-06-18 22:55:51 +02:00
parent 7287607a60
commit 8892d04f62
22 changed files with 1484 additions and 930 deletions

View File

@ -10,13 +10,13 @@ import UIKit
extension UIColor {
var rgb: (red: Int, green: Int, blue: Int) {
var rgb: (red: Double, green: Double, blue: Double) {
var fRed: CGFloat = 0
var fGreen: CGFloat = 0
var fBlue: CGFloat = 0
var fAlpha: CGFloat = 0
getRed(&fRed, green: &fGreen, blue: &fBlue, alpha: &fAlpha)
return (Int(fRed * 255.0), Int(fGreen * 255.0), Int(fBlue * 255.0))
return (Double(fRed), Double(fGreen), Double(fBlue))
}
}

View File

@ -89,6 +89,35 @@ extension UIImage {
extension CIImage {
func averageColor(context: CIContext) -> UIColor? {
let extentVector = CIVector(
x: extent.origin.x,
y: extent.origin.y,
z: extent.size.width,
w: extent.size.height)
guard let filter = CIFilter(name: "CIAreaAverage", parameters: [kCIInputImageKey: self, kCIInputExtentKey: extentVector]) else {
log("Failed to create filter")
return nil
}
guard let outputImage = filter.outputImage else {
log("Failed get filter output")
return nil
}
var bitmap = [UInt8](repeating: 0, count: 4)
context.render(outputImage, toBitmap: &bitmap, rowBytes: 4,
bounds: CGRect(x: 0, y: 0, width: 1, height: 1),
format: .RGBA8, colorSpace: nil)
return UIColor(
red: saturate(bitmap[0]),
green: saturate(bitmap[1]),
blue: saturate(bitmap[2]),
alpha: CGFloat(bitmap[3]) / 255)
}
var averageColor: UIColor? {
let extentVector = CIVector(
x: extent.origin.x,
@ -106,8 +135,13 @@ extension CIImage {
}
var bitmap = [UInt8](repeating: 0, count: 4)
let context = CIContext(options: [.workingColorSpace: kCFNull!])
context.render(outputImage, toBitmap: &bitmap, rowBytes: 4, bounds: CGRect(x: 0, y: 0, width: 1, height: 1), format: .RGBA8, colorSpace: nil)
guard let null = kCFNull else {
return nil
}
let context = CIContext(options: [.workingColorSpace: null])
context.render(outputImage, toBitmap: &bitmap, rowBytes: 4,
bounds: CGRect(x: 0, y: 0, width: 1, height: 1),
format: .RGBA8, colorSpace: nil)
let color = UIColor(
red: saturate(bitmap[0]),