編輯 | 究查 | 歷程 | 原始
flowchart TD
    Start([開始]) --> GetInfo[獲取 CallBackData 並轉為 ScanInfo 指針]
    GetInfo --> AssignDIB[將 DIB 句柄轉為影像對象並設定 DPI]
    AssignDIB --> FormatCheck{檢查影像格式}
    
    FormatCheck -- 黑白 (ifBlackWhite) --> BWProc[條碼辨識, 旋轉, 反向, 去偏斜, 清黑邊]
    FormatCheck -- 全彩 (ifTrueColor) --> ColorProc[設定 JPEG 壓縮品質與條碼辨識旋轉]
    FormatCheck -- 灰階 (ifGray256) --> GrayProc[設定 JPEG 壓縮品質與條碼辨識旋轉]
    
    BWProc --> CropCheck{檢查是否需 A3 切割為 A4?}
    ColorProc --> CropCheck
    GrayProc --> CropCheck
    
    CropCheck -- 是 --> PerformCrop[執行影像切割為第一與第二部分]
    CropCheck -- 否 --> SingleImg[直接處理原始影像]
    
    PerformCrop --> LoopPages[對每一部分進行迴圈處理]
    SingleImg --> LoopPages
    
    LoopPages --> BlankCheck{是否刪除空白頁?}
    BlankCheck -- 否/非空白 --> SaveProc[呼叫 PageEnd 決定路徑檔名並儲存檔案]
    BlankCheck -- 是空白 --> NextPage[處理下一部分]
    
    SaveProc --> CallPageDone[呼叫 PageDone 更新 UI]
    CallPageDone --> NextPage
    
    NextPage --> LoopEnd{所有部分處理完畢?}
    LoopEnd -- 否 --> LoopPages
    LoopEnd -- 是 --> FreeRes[釋放資源] --> End([結束])