From 1d01eaaf98e566d14e084d297296f2ed09b1af41 Mon Sep 17 00:00:00 2001
From: Mustafa Merza <mustafa.merza95@gmail.com>
Date: Sun, 11 Aug 2024 13:09:17 +0300
Subject: [PATCH] - Added displaying image compress view to compare between
 compression methods.

---
 MiniScanner/Extensions/UIImage+Images.swift       |  2 ++
 .../DocumentPreviewViewController.swift           | 15 +++++++++++++++
 .../ScannedItemPagerViewCell.swift                | 15 +++++++++++++++
 3 files changed, 32 insertions(+)

diff --git a/MiniScanner/Extensions/UIImage+Images.swift b/MiniScanner/Extensions/UIImage+Images.swift
index e33bbe0..d05180e 100644
--- a/MiniScanner/Extensions/UIImage+Images.swift
+++ b/MiniScanner/Extensions/UIImage+Images.swift
@@ -42,6 +42,8 @@ extension UIImage {
     
     static let squareAndPencil = UIImage(systemName: "square.and.pencil")
     
+    static let photoStack = UIImage(systemName: "photo.stack")
+    
     static let share = UIImage(systemName: "square.and.arrow.up")?.tint(with: .mainBlue)
     
     static let eye = UIImage(systemName: "eye")
diff --git a/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift b/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift
index 3bcca14..1797c22 100644
--- a/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift
+++ b/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift
@@ -1,4 +1,5 @@
 import UIKit
+import SwiftUI
 import PDFKit
 import PhotosUI
 import VisionKit
@@ -256,6 +257,20 @@ extension DocumentPreviewViewController: ScannedItemPagerViewCellDelegate {
     func delete(at index: Int) {
         displayDeletePageDialog(at: index)
     }
+    
+    func compress(at index: Int) {
+        displayCompressImage(at: index)
+    }
+    
+    private func displayCompressImage(at index: Int) {
+        
+        if let image = session.scannedItems[index].newRenderedImage?.retrieveImage() {
+            
+            let imageCompressController = UIHostingController(rootView: ImageCompressView(image: image))
+            
+            present(imageCompressController, animated: true)
+        }
+    }
 }
 
 // MARK: - UIPrintInteractionControllerDelegate
diff --git a/MiniScanner/Modules/DocumentPreview/ScannedItemPagerViewCell.swift b/MiniScanner/Modules/DocumentPreview/ScannedItemPagerViewCell.swift
index 8fe0932..f4659b3 100644
--- a/MiniScanner/Modules/DocumentPreview/ScannedItemPagerViewCell.swift
+++ b/MiniScanner/Modules/DocumentPreview/ScannedItemPagerViewCell.swift
@@ -12,6 +12,7 @@ protocol ScannedItemPagerViewCellDelegate: AnyObject {
     func delete(at: Int)
     func preview(at: Int)
     func select(at: Int)
+    func compress(at: Int)
 }
 
 class ScannedItemPagerViewCell: FSPagerViewCell {
@@ -53,6 +54,8 @@ class ScannedItemPagerViewCell: FSPagerViewCell {
         view.addArrangedSubview(preview)
         view.addArrangedSubview(trash)
         
+        view.addArrangedSubview(compress)
+        
         view.translatesAutoresizingMaskIntoConstraints = false
         
         return view
@@ -76,6 +79,12 @@ class ScannedItemPagerViewCell: FSPagerViewCell {
         return button
     }()
     
+    lazy var compress: UIButton = {
+        var button = getButton(image: .photoStack!)
+        button.addTarget(self, action: #selector(compressTapped), for: .touchUpInside)
+        return button
+    }()
+    
     func configure(with scannedItem: ScannedItem,
                    at index: Int,
                    delegate: ScannedItemPagerViewCellDelegate) {
@@ -126,6 +135,12 @@ extension ScannedItemPagerViewCell {
         }
     }
     
+    @objc private func compressTapped() {
+        if let index {
+            cellDelegate?.compress(at: index)
+        }
+    }
+    
     private func getButton(image: UIImage) -> UIButton {
         let button = UIButton(frame: CGRect(x: 0, y: 0, width: 24, height: 24))
         
-- 
GitLab