From bb26b1fa74fac20efa8f0a6c1f870be9091bc097 Mon Sep 17 00:00:00 2001 From: Muukii Date: Sat, 3 Apr 2021 02:36:15 +0900 Subject: [PATCH] Patch --- .../ClassicImageEditOptions.swift | 11 ++- .../ClassicImageEditViewController.swift | 39 +++++--- ...ClassicImageEditColorCubeControlView.swift | 4 +- .../ClassicImageEditRootControlView.swift | 93 +++++++++++++++---- 4 files changed, 111 insertions(+), 36 deletions(-) diff --git a/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/ClassicImageEditOptions.swift b/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/ClassicImageEditOptions.swift index 9c8e61aa..7a0077a9 100644 --- a/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/ClassicImageEditOptions.swift +++ b/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/ClassicImageEditOptions.swift @@ -43,10 +43,15 @@ extension ClassicImageEditOptions { public struct Classes { public struct Control { - - public var colorCubeControl: ClassicImageEditColorCubeControlBase.Type = ColorCubeControl.self - public var editMenuControl: ClassicImageEditEditMenuControlBase.Type = ClassicImageEditEditMenu.EditMenuControl.self + + /** + You might use `ClassicImageEditNoPresetRootControl` if you do not need using Filter(Preset) panel. + */ public var rootControl: ClassicImageEditRootControlBase.Type = ClassicImageEditRootControl.self + + public var colorCubeControl: ClassicImageEditPresetListControlBase.Type = PresetListControl.self + public var editMenuControl: ClassicImageEditEditMenuControlBase.Type = ClassicImageEditEditMenu.EditMenuControl.self + public var exposureControl: ClassicImageEditExposureControlBase.Type = ClassicImageEditExposureControl.self public var gaussianBlurControl: ClassicImageEditGaussianBlurControlBase.Type = ClassicImageEditGaussianBlurControl.self public var saturationControl: ClassicImageEditSaturationControlBase.Type = ClassicImageEditSaturationControl.self diff --git a/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/ClassicImageEditViewController.swift b/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/ClassicImageEditViewController.swift index 567829a0..8c2bf265 100644 --- a/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/ClassicImageEditViewController.swift +++ b/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/ClassicImageEditViewController.swift @@ -24,21 +24,21 @@ import UIKit import Verge #if !COCOAPODS -import BrightroomEngine + import BrightroomEngine #endif @available(*, deprecated, renamed: "ClassicImageEditViewController") public typealias PixelEditViewController = ClassicImageEditViewController public final class ClassicImageEditViewController: UIViewController { - + /** - TODO: property names are not comprehensibility. */ public struct LocalizedStrings { - + // Deprecates - + @available(*, deprecated, renamed: "control_colorcube_normal_name") public var normal: String { get { @@ -50,9 +50,9 @@ public final class ClassicImageEditViewController: UIViewController { } public var done = "Done" - + public var control_colorcube_normal_name = "Normal" - + public var cancel = "Cancel" public var filter = "Filter" public var edit = "Edit" @@ -174,9 +174,11 @@ public final class ClassicImageEditViewController: UIViewController { super.viewDidLoad() - cropView.setCropOutsideOverlay(.init()&>.do { - $0.backgroundColor = .white - }) + cropView.setCropOutsideOverlay( + .init()&>.do { + $0.backgroundColor = .white + } + ) cropView.setCropInsideOverlay(nil) cropView.isGuideInteractionEnabled = false cropView.isAutoApplyEditingStackEnabled = false @@ -237,7 +239,9 @@ public final class ClassicImageEditViewController: UIViewController { controlContainerView.leftAnchor.constraint(equalTo: view.leftAnchor), { if #available(iOS 11.0, *) { - return controlContainerView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor) + return controlContainerView.bottomAnchor.constraint( + equalTo: view.safeAreaLayoutGuide.bottomAnchor + ) } else { return controlContainerView.bottomAnchor.constraint(equalTo: view.bottomAnchor) } @@ -277,6 +281,9 @@ public final class ClassicImageEditViewController: UIViewController { stackView.push( viewModel.options.classes.control.rootControl.init( viewModel: viewModel, + editMenuControl: viewModel.options.classes.control.editMenuControl.init( + viewModel: viewModel + ), colorCubeControl: viewModel.options.classes.control.colorCubeControl.init( viewModel: viewModel ) @@ -344,10 +351,10 @@ public final class ClassicImageEditViewController: UIViewController { cropView.isHidden = false previewView.isHidden = true - + maskingView.isHidden = true maskingView.isblurryImageViewHidden = true - + maskingView.isUserInteractionEnabled = false case .masking: @@ -411,8 +418,12 @@ public final class ClassicImageEditViewController: UIViewController { loadingView.trailingAnchor.constraint(equalTo: previewView.trailingAnchor), loadingView.topAnchor.constraint(equalTo: previewView.topAnchor), loadingView.bottomAnchor.constraint(equalTo: previewView.bottomAnchor), - touchGuardOverlayView.leadingAnchor.constraint(equalTo: controlContainerView.leadingAnchor), - touchGuardOverlayView.trailingAnchor.constraint(equalTo: controlContainerView.trailingAnchor), + touchGuardOverlayView.leadingAnchor.constraint( + equalTo: controlContainerView.leadingAnchor + ), + touchGuardOverlayView.trailingAnchor.constraint( + equalTo: controlContainerView.trailingAnchor + ), touchGuardOverlayView.topAnchor.constraint(equalTo: controlContainerView.topAnchor), touchGuardOverlayView.bottomAnchor.constraint(equalTo: controlContainerView.bottomAnchor), ]) diff --git a/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/Components/ClassicImageEditColorCubeControlView.swift b/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/Components/ClassicImageEditColorCubeControlView.swift index 3cad50c3..279fa209 100644 --- a/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/Components/ClassicImageEditColorCubeControlView.swift +++ b/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/Components/ClassicImageEditColorCubeControlView.swift @@ -26,7 +26,7 @@ import BrightroomEngine import Verge -open class ClassicImageEditColorCubeControlBase : ClassicImageEditControlBase { +open class ClassicImageEditPresetListControlBase : ClassicImageEditControlBase { public required override init( viewModel: ClassicImageEditViewModel @@ -35,7 +35,7 @@ open class ClassicImageEditColorCubeControlBase : ClassicImageEditControlBase { } } -open class ColorCubeControl: ClassicImageEditColorCubeControlBase, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource { +open class PresetListControl: ClassicImageEditPresetListControlBase, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource { private enum Section : Int, CaseIterable { diff --git a/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/Components/ClassicImageEditRootControlView.swift b/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/Components/ClassicImageEditRootControlView.swift index 3d831de4..9d9622f8 100644 --- a/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/Components/ClassicImageEditRootControlView.swift +++ b/Sources/BrightroomUI/Built-in UI/ClassicImageEdit/Components/ClassicImageEditRootControlView.swift @@ -20,14 +20,18 @@ // THE SOFTWARE. import UIKit -open class ClassicImageEditRootControlBase : ClassicImageEditControlBase { +open class ClassicImageEditRootControlBase: ClassicImageEditControlBase { - public required init(viewModel: ClassicImageEditViewModel, colorCubeControl: ClassicImageEditColorCubeControlBase) { + public required init( + viewModel: ClassicImageEditViewModel, + editMenuControl: ClassicImageEditEditMenuControlBase, + colorCubeControl: ClassicImageEditPresetListControlBase + ) { super.init(viewModel: viewModel) } } -final class ClassicImageEditRootControl : ClassicImageEditRootControlBase { +open class ClassicImageEditRootControl: ClassicImageEditRootControlBase { public enum DisplayType { case filter @@ -47,17 +51,26 @@ final class ClassicImageEditRootControl : ClassicImageEditRootControlBase { private let containerView = UIView() - public let colorCubeControl: ClassicImageEditColorCubeControlBase + public let colorCubeControl: ClassicImageEditPresetListControlBase - public lazy var editView = viewModel.options.classes.control.editMenuControl.init(viewModel: viewModel) + public let editMenuControl: ClassicImageEditEditMenuControlBase // MARK: - Initializers - public required init(viewModel: ClassicImageEditViewModel, colorCubeControl: ClassicImageEditColorCubeControlBase) { + public required init( + viewModel: ClassicImageEditViewModel, + editMenuControl: ClassicImageEditEditMenuControlBase, + colorCubeControl: ClassicImageEditPresetListControlBase + ) { self.colorCubeControl = colorCubeControl + self.editMenuControl = editMenuControl - super.init(viewModel: viewModel, colorCubeControl: colorCubeControl) + super.init( + viewModel: viewModel, + editMenuControl: editMenuControl, + colorCubeControl: colorCubeControl + ) backgroundColor = ClassicImageEditStyle.default.control.backgroundColor @@ -84,7 +97,7 @@ final class ClassicImageEditRootControl : ClassicImageEditRootControlBase { stackView.rightAnchor.constraint(equalTo: stackView.superview!.rightAnchor), stackView.bottomAnchor.constraint(equalTo: stackView.superview!.bottomAnchor), stackView.heightAnchor.constraint(equalToConstant: 50), - ]) + ]) } @@ -113,7 +126,7 @@ final class ClassicImageEditRootControl : ClassicImageEditRootControlBase { // MARK: - Functions - override func didMoveToSuperview() { + open override func didMoveToSuperview() { super.didMoveToSuperview() if superview != nil { @@ -142,22 +155,68 @@ final class ClassicImageEditRootControl : ClassicImageEditRootControlBase { switch displayType { case .filter: - + colorCubeControl.frame = containerView.bounds colorCubeControl.autoresizingMask = [.flexibleWidth, .flexibleHeight] containerView.addSubview(colorCubeControl) - + filtersButton.isSelected = true case .edit: - - editView.frame = containerView.bounds - editView.autoresizingMask = [.flexibleWidth, .flexibleHeight] - - containerView.addSubview(editView) - + + editMenuControl.frame = containerView.bounds + editMenuControl.autoresizingMask = [.flexibleWidth, .flexibleHeight] + + containerView.addSubview(editMenuControl) + editButton.isSelected = true } } } + +open class ClassicImageEditNoPresetRootControl: ClassicImageEditRootControlBase { + + private let containerView = UIView() + + public let editMenuControl: ClassicImageEditEditMenuControlBase + + // MARK: - Initializers + + public required init( + viewModel: ClassicImageEditViewModel, + editMenuControl: ClassicImageEditEditMenuControlBase, + colorCubeControl: ClassicImageEditPresetListControlBase + ) { + + self.editMenuControl = editMenuControl + + super.init( + viewModel: viewModel, + editMenuControl: editMenuControl, + colorCubeControl: colorCubeControl + ) + + backgroundColor = ClassicImageEditStyle.default.control.backgroundColor + + layout: do { + + addSubview(containerView) + + containerView.translatesAutoresizingMaskIntoConstraints = false + + NSLayoutConstraint.activate([ + containerView.topAnchor.constraint(equalTo: containerView.superview!.topAnchor), + containerView.leftAnchor.constraint(equalTo: containerView.superview!.leftAnchor), + containerView.rightAnchor.constraint(equalTo: containerView.superview!.rightAnchor), + containerView.bottomAnchor.constraint(equalTo: containerView.superview!.bottomAnchor), + ]) + + editMenuControl.frame = containerView.bounds + editMenuControl.autoresizingMask = [.flexibleWidth, .flexibleHeight] + containerView.addSubview(editMenuControl) + } + + } + +}