curtis
21小時前 0477cdc73e835cea8f827e04f548ef0a6e23860b
reassemble/scan/mermaid/StatrTwainScan.md
@@ -1,35 +1,13 @@
```mermaid
graph TD
    Start([Start StatrTwainScan]) --> CheckConfig{Scanner.IsConfigured?}
    CheckConfig -- No --> MsgNoDriver[顯示 TWAIN 驅動尚未安裝訊息] --> ExitStatrTwainScan([Exit])
    CheckConfig -- Yes --> InitScanInfo[初始化 ScanInfo 結構<br/>建立 TTiffGraphic]
    InitScanInfo --> TryBlock1[try: 開始掃瞄設定]
    subgraph Try_Main
        TryBlock1 --> SetParams[設定 DPI, ScanColor, ShowUI]
        SetParams --> TryOpen[try: 開啟掃瞄來源]
        subgraph Try_OpenSource
            TryOpen --> OpenSource[Scanner.OpenSource]
            OpenSource --> SetDuplex[設定雙面/亮度/對比]
        end
        SetDuplex --> CatchOpen{發生錯誤?}
        CatchOpen -- Yes --> ShowErr[顯示掃瞄器錯誤]
        ShowErr --> CloseSrc1[Scanner.CloseSource] --> ExitStatrTwainScan
        CatchOpen -- No --> TryAcquire[try: 執行獲取影像]
        subgraph Try_Acquire
            TryAcquire --> Acquire[Scanner.AcquireWithSourceOpen<br/>傳入 OnAcquire 回呼]
            Acquire --> CatchAcq{發生 Exception?}
            CatchAcq -- Yes --> CloseSrc2[Scanner.CloseSource]
        end
        TryAcquire -. finally .-> CloseSrc3[Scanner.CloseSource]
    end
    Try_Main -. finally .-> FinalCleanup[Scanner.CloseSource<br/>ScanInfo.Graphic.Free]
    FinalCleanup --> EndStatrTwainScan([End])
flowchart TD
    Start([開始]) --> CheckConfig{掃描器驅動是否已安裝?}
    CheckConfig -- 否 --> ShowErr[顯示錯誤訊息] --> End([結束])
    CheckConfig -- 是 --> InitScanInfo[初始化 ScanInfo 並設定為多頁模式]
    InitScanInfo --> SetScannerParams[設定掃描參數: DPI, 格式, UI 顯示模式]
    SetScannerParams --> OpenSource[開啟掃描來源]
    OpenSource --> TryAcquire[執行 AcquireWithSourceOpen 掃描作業]
    TryAcquire --> CatchErr{掃描過程中發生錯誤?}
    CatchErr -- 是 --> ShowScanErr[顯示掃描錯誤訊息] --> CloseSource1[關閉掃描來源] --> FreeRes[釋放 Graphic 資源] --> End
    CatchErr -- 否 --> CloseSource2[掃描結束, 關閉掃描來源]
    CloseSource2 --> FreeRes --> End
```