mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Swift
		
	
// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved.
 | 
						|
 | 
						|
import UIKit
 | 
						|
import SessionUIKit
 | 
						|
import SessionUtilitiesKit
 | 
						|
 | 
						|
extension SessionCarouselView {
 | 
						|
    public struct Info {
 | 
						|
        let slices: [UIView]
 | 
						|
        let copyOfFirstSlice: UIView?
 | 
						|
        let copyOfLastSlice: UIView?
 | 
						|
        let sliceSize: CGSize
 | 
						|
        let sliceCount: Int
 | 
						|
        let shouldShowPageControl: Bool
 | 
						|
        let pageControlStyle: PageControlStyle
 | 
						|
        let shouldShowArrows: Bool
 | 
						|
        let arrowsSize: CGSize
 | 
						|
        let cornerRadius: CGFloat
 | 
						|
        
 | 
						|
        // MARK: - Initialization
 | 
						|
        
 | 
						|
        init(
 | 
						|
            slices: [UIView] = [],
 | 
						|
            copyOfFirstSlice: UIView? = nil,
 | 
						|
            copyOfLastSlice: UIView? = nil,
 | 
						|
            sliceSize: CGSize = .zero,
 | 
						|
            shouldShowPageControl: Bool = true,
 | 
						|
            pageControlStyle: PageControlStyle,
 | 
						|
            shouldShowArrows: Bool = true,
 | 
						|
            arrowsSize: CGSize = .zero,
 | 
						|
            cornerRadius: CGFloat = 0
 | 
						|
        ) {
 | 
						|
            self.slices = slices
 | 
						|
            self.copyOfFirstSlice = copyOfFirstSlice
 | 
						|
            self.copyOfLastSlice = copyOfLastSlice
 | 
						|
            self.sliceSize = sliceSize
 | 
						|
            self.sliceCount = slices.count
 | 
						|
            self.shouldShowPageControl = shouldShowPageControl && (self.sliceCount > 1)
 | 
						|
            self.pageControlStyle = pageControlStyle
 | 
						|
            self.shouldShowArrows = shouldShowArrows && (self.sliceCount > 1)
 | 
						|
            self.arrowsSize = arrowsSize
 | 
						|
            self.cornerRadius = cornerRadius
 | 
						|
        }
 | 
						|
    }
 | 
						|
    
 | 
						|
    public struct PageControlStyle {
 | 
						|
        enum DotSize: CGFloat {
 | 
						|
            case mini = 0.5
 | 
						|
            case medium = 0.8
 | 
						|
            case original = 1
 | 
						|
        }
 | 
						|
        
 | 
						|
        let height: CGFloat?
 | 
						|
        let size: DotSize
 | 
						|
        let backgroundColor: UIColor
 | 
						|
        let bottomInset: CGFloat
 | 
						|
        
 | 
						|
        // MARK: - Initialization
 | 
						|
        
 | 
						|
        init(
 | 
						|
            height: CGFloat? = nil,
 | 
						|
            size: DotSize = .original,
 | 
						|
            backgroundColor: UIColor = .clear,
 | 
						|
            bottomInset: CGFloat = 0
 | 
						|
        ) {
 | 
						|
            self.height = height
 | 
						|
            self.size = size
 | 
						|
            self.backgroundColor = backgroundColor
 | 
						|
            self.bottomInset = bottomInset
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |