 public protocol ResizableCollectionViewDataSource : UICollectionViewDataSource {
     
     func minNumberOfCellsInLine(collectionView: ResizableCollectionView) -> Int
-
+    
     func maxNumberOfCellsInLine(collectionView: ResizableCollectionView) -> Int
-
+    
+    func marginOfCells(collectionView: ResizableCollectionView) -> CGFloat
+    
+    func threasholdOfZoom(collectionView: ResizableCollectionView) -> CGFloat
 }
 
 public class ResizableCollectionView: UICollectionView {

    override weak public var delegate: UICollectionViewDelegate? {
        didSet {
            assert(delegate == nil || delegate is ResizableCollectionViewDelegate, "The delegate must be of type 'ResizableCollectionDelegate'")
        }
    }
    
    /// ResizableCollectionViewDataSource
    override weak public var dataSource: UICollectionViewDataSource? {
        didSet {
            assert(delegate == nil || delegate is ResizableCollectionViewDataSource, "The dataSource must be of type 'ResizableCollectionViewDataSource'")
        }
    }
    
    private var pinchGesture: UIPinchGestureRecognizer! = nil
    
    override public init(frame: CGRect, collectionViewLayout layout: UICollectionViewLayout) {
        super.init(frame: frame, collectionViewLayout: layout)
    }

    required public init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
}

    
    func willPinchIn(collectionView: ResizableCollectionView)
    func willPinchOut(collectionView: ResizableCollectionView)
    
    func didPinchIn(collectionView: ResizableCollectionView)
    func didPinchOut(collectionView: ResizableCollectionView)
    
