diff --git a/Signal/Images.xcassets/image_editor_palette.imageset/Contents.json b/Signal/Images.xcassets/image_editor_palette.imageset/Contents.json deleted file mode 100644 index bf932ac9b..000000000 --- a/Signal/Images.xcassets/image_editor_palette.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "Screen Shot 2019-02-26 at 1.57.23 PM.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Signal/Images.xcassets/image_editor_palette.imageset/Screen Shot 2019-02-26 at 1.57.23 PM.png b/Signal/Images.xcassets/image_editor_palette.imageset/Screen Shot 2019-02-26 at 1.57.23 PM.png deleted file mode 100644 index 4b8e2e2bc..000000000 Binary files a/Signal/Images.xcassets/image_editor_palette.imageset/Screen Shot 2019-02-26 at 1.57.23 PM.png and /dev/null differ diff --git a/SignalMessaging/Views/ImageEditor/ImageEditorPaletteView.swift b/SignalMessaging/Views/ImageEditor/ImageEditorPaletteView.swift index 73d3d442e..1d4889198 100644 --- a/SignalMessaging/Views/ImageEditor/ImageEditorPaletteView.swift +++ b/SignalMessaging/Views/ImageEditor/ImageEditorPaletteView.swift @@ -39,8 +39,10 @@ public class ImageEditorPaletteView: UIView { self.backgroundColor = .clear self.isOpaque = false - if let image = UIImage(named: "image_editor_palette") { + if let image = ImageEditorPaletteView.buildPaletteGradientImage() { imageView.image = image + imageView.layer.cornerRadius = image.size.width * 0.5 + imageView.clipsToBounds = true } else { owsFailDebug("Missing image.") } @@ -48,8 +50,6 @@ public class ImageEditorPaletteView: UIView { // We use an invisible margin to expand the hot area of // this control. let margin: CGFloat = 8 - // TODO: Review sizing when there's an asset. - imageView.autoSetDimensions(to: CGSize(width: 8, height: 200)) imageView.autoPinEdgesToSuperviewEdges(with: UIEdgeInsets(top: margin, left: margin, bottom: margin, right: margin)) selectionWrapper.layoutCallback = { [weak self] (view) in @@ -58,8 +58,8 @@ public class ImageEditorPaletteView: UIView { } strongSelf.updateState() } - imageView.addSubview(selectionWrapper) - selectionWrapper.autoPinEdgesToSuperviewEdges() + self.addSubview(selectionWrapper) + selectionWrapper.autoPin(toEdgesOf: imageView) selectionView.addBorder(with: .white) selectionView.layer.cornerRadius = selectionSize / 2 @@ -95,9 +95,8 @@ public class ImageEditorPaletteView: UIView { private func updateState() { var selectedColor = UIColor.white - if let image = imageView.image, - let cgImage = image.cgImage { - if let imageColor = image.color(atLocation: CGPoint(x: CGFloat(cgImage.width) * 0.5, y: CGFloat(cgImage.height) * selectionAlpha)) { + if let image = imageView.image { + if let imageColor = image.color(atLocation: CGPoint(x: CGFloat(image.size.width) * 0.5, y: CGFloat(image.size.height) * selectionAlpha)) { selectedColor = imageColor } else { owsFailDebug("Couldn't determine image color.") @@ -132,6 +131,31 @@ public class ImageEditorPaletteView: UIView { let location = gesture.location(in: imageView) selectColor(atLocationY: location.y) } + + private static func buildPaletteGradientImage() -> UIImage? { + let gradientSize = CGSize(width: 8, height: 200) + let gradientBounds = CGRect(origin: .zero, size: gradientSize) + let gradientView = UIView() + gradientView.frame = gradientBounds + let gradientLayer = CAGradientLayer() + gradientView.layer.addSublayer(gradientLayer) + gradientLayer.frame = gradientBounds + gradientLayer.colors = [ + UIColor(rgbHex: 0xffffff).cgColor, + UIColor(rgbHex: 0xff0000).cgColor, + UIColor(rgbHex: 0xff00ff).cgColor, + UIColor(rgbHex: 0x0000ff).cgColor, + UIColor(rgbHex: 0x00ffff).cgColor, + UIColor(rgbHex: 0x00ff00).cgColor, + UIColor(rgbHex: 0xffff00).cgColor, + UIColor(rgbHex: 0xff5500).cgColor, + UIColor(rgbHex: 0x000000).cgColor + ] + gradientLayer.startPoint = CGPoint.zero + gradientLayer.endPoint = CGPoint(x: 0, y: gradientSize.height) + gradientLayer.endPoint = CGPoint(x: 0, y: 1.0) + return gradientView.renderAsImage(opaque: true, scale: UIScreen.main.scale) + } } // MARK: - @@ -162,6 +186,9 @@ extension UIImage { owsFailDebug("Invalid image size.") return nil } + + Logger.verbose("scale: \(self.scale)") + // Convert the location from points to pixels and clamp to the image bounds. let xPixels: Int = Int(round(locationPoints.x * self.scale)).clamp(0, imageWidth - 1) let yPixels: Int = Int(round(locationPoints.y * self.scale)).clamp(0, imageHeight - 1)