Compare commits
5 Commits
master
...
signal-mas
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
890ffdab14 | ||
|
|
7236101f93 | ||
|
|
c0538ea830 | ||
|
|
0a27c3f90f | ||
|
|
e2b1540fc2 |
@ -125,6 +125,24 @@ extension String {
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
var averageLinearRgb: (Float, Float, Float)? {
|
||||
guard count >= 6 else { return nil }
|
||||
|
||||
let sizeFlag = String(self[0]).decode83()
|
||||
let numY = (sizeFlag / 9) + 1
|
||||
let numX = (sizeFlag % 9) + 1
|
||||
|
||||
guard count == 4 + 2 * numX * numY else { return nil }
|
||||
|
||||
return decodeDC(String(self[2 ..< 6]).decode83())
|
||||
}
|
||||
|
||||
// https://github.com/signalapp/blurhash/blob/addPodspec/Swift/BlurHashKit/ColourProbes.swift#L59
|
||||
public var isDarkBlurHash: Bool? {
|
||||
guard let rgb = averageLinearRgb else { return nil }
|
||||
return rgb.0 * 0.299 + rgb.1 * 0.587 + rgb.2 * 0.114 < 0.5
|
||||
}
|
||||
}
|
||||
|
||||
private extension String {
|
||||
|
||||
@ -21,7 +21,9 @@ extension UIImage {
|
||||
for x in 0 ..< components.0 {
|
||||
let normalisation: Float = (x == 0 && y == 0) ? 1 : 2
|
||||
let factor = multiplyBasisFunction(pixels: pixels, width: width, height: height, bytesPerRow: bytesPerRow, bytesPerPixel: cgImage.bitsPerPixel / 8, pixelOffset: 0) {
|
||||
normalisation * cos(Float.pi * Float(x) * $0 / Float(width)) * cos(Float.pi * Float(y) * $1 / Float(height))
|
||||
let horizontal = cos(Float.pi * Float(x) * $0 / Float(width))
|
||||
let vertical = cos(Float.pi * Float(y) * $1 / Float(height))
|
||||
return normalisation * horizontal * vertical
|
||||
}
|
||||
factors.append(factor)
|
||||
}
|
||||
|
||||
132
blurhash.podspec
Normal file
132
blurhash.podspec
Normal file
@ -0,0 +1,132 @@
|
||||
#
|
||||
# Be sure to run `pod spec lint blurhash.podspec' to ensure this is a
|
||||
# valid spec and to remove all comments including this before submitting the spec.
|
||||
#
|
||||
# To learn more about Podspec attributes see https://guides.cocoapods.org/syntax/podspec.html
|
||||
# To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/
|
||||
#
|
||||
|
||||
Pod::Spec.new do |spec|
|
||||
|
||||
# ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# These will help people to find your library, and whilst it
|
||||
# can feel like a chore to fill in it's definitely to your advantage. The
|
||||
# summary should be tweet-length, and the description more in depth.
|
||||
#
|
||||
|
||||
spec.name = "blurhash"
|
||||
spec.version = "0.0.1"
|
||||
spec.summary = "A very compact representation of a placeholder for an image."
|
||||
|
||||
spec.description = <<-DESC
|
||||
A pure-Swift library for generating and decoding very compact image placeholders.
|
||||
DESC
|
||||
|
||||
spec.homepage = "https://github.com/signalapp/blurhash"
|
||||
|
||||
|
||||
# ――― Spec License ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# Licensing your code is important. See https://choosealicense.com for more info.
|
||||
# CocoaPods will detect a license file if there is a named LICENSE*
|
||||
# Popular ones are 'MIT', 'BSD' and 'Apache License, Version 2.0'.
|
||||
#
|
||||
|
||||
# spec.license = "MIT (example)"
|
||||
spec.license = { :type => "MIT", :file => "Swift/License.txt" }
|
||||
|
||||
|
||||
# ――― Author Metadata ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# Specify the authors of the library, with email addresses. Email addresses
|
||||
# of the authors are extracted from the SCM log. E.g. $ git log. CocoaPods also
|
||||
# accepts just a name if you'd rather not provide an email address.
|
||||
#
|
||||
# Specify a social_media_url where others can refer to, for example a twitter
|
||||
# profile URL.
|
||||
#
|
||||
|
||||
spec.author = { "Dag Ågren" => "paracelsus@gmail.com" }
|
||||
spec.social_media_url = "https://github.com/woltapp"
|
||||
|
||||
# ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# If this Pod runs only on iOS or OS X, then specify the platform and
|
||||
# the deployment target. You can optionally include the target after the platform.
|
||||
#
|
||||
|
||||
# spec.platform = :ios
|
||||
spec.platform = :ios, "8.0"
|
||||
|
||||
# When using multiple platforms
|
||||
# spec.ios.deployment_target = "5.0"
|
||||
# spec.osx.deployment_target = "10.7"
|
||||
# spec.watchos.deployment_target = "2.0"
|
||||
# spec.tvos.deployment_target = "9.0"
|
||||
|
||||
spec.swift_versions = ['4.0', '4.2']
|
||||
|
||||
# ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# Specify the location from where the source should be retrieved.
|
||||
# Supports git, hg, bzr, svn and HTTP.
|
||||
#
|
||||
|
||||
# The upstream repo has no tags. A podspec requires a tag.
|
||||
spec.source = { :git => "https://github.com/signalapp/blurhash.git", :tag => "0.0.1" }
|
||||
|
||||
|
||||
# ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# CocoaPods is smart about how it includes source code. For source files
|
||||
# giving a folder will include any swift, h, m, mm, c & cpp files.
|
||||
# For header files it will include any header in the folder.
|
||||
# Not including the public_header_files will make all headers public.
|
||||
#
|
||||
|
||||
spec.source_files = "Classes", "Swift/*.{swift}"
|
||||
# spec.exclude_files = "Classes/Exclude"
|
||||
|
||||
# spec.public_header_files = "Classes/**/*.h"
|
||||
|
||||
|
||||
# ――― Resources ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# A list of resources included with the Pod. These are copied into the
|
||||
# target bundle with a build phase script. Anything else will be cleaned.
|
||||
# You can preserve files from being cleaned, please don't preserve
|
||||
# non-essential files like tests, examples and documentation.
|
||||
#
|
||||
|
||||
# spec.resource = "icon.png"
|
||||
# spec.resources = "Resources/*.png"
|
||||
|
||||
# spec.preserve_paths = "FilesToSave", "MoreFilesToSave"
|
||||
|
||||
|
||||
# ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# Link your library with frameworks, or libraries. Libraries do not include
|
||||
# the lib prefix of their name.
|
||||
#
|
||||
|
||||
# spec.framework = "SomeFramework"
|
||||
# spec.frameworks = "SomeFramework", "AnotherFramework"
|
||||
|
||||
# spec.library = "iconv"
|
||||
# spec.libraries = "iconv", "xml2"
|
||||
|
||||
|
||||
# ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# If your library depends on compiler flags you can set them in the xcconfig hash
|
||||
# where they will only apply to your library. If you depend on other Podspecs
|
||||
# you can include multiple dependencies to ensure it works.
|
||||
|
||||
# spec.requires_arc = true
|
||||
|
||||
# spec.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
|
||||
# spec.dependency "JSONKit", "~> 1.4"
|
||||
|
||||
end
|
||||
Loading…
Reference in New Issue
Block a user