在上一篇文章中,我們介紹了開發Photoshop濾鏡外掛程式最基本的一些概念和基礎。 Ps為了滿足插件的應用需求,同時也為插件提供了大量的回呼函數(或服務)。例如,濾鏡可以在一次呼叫後,儲存最近一次使用者設定的參數,並套用到下次呼叫或顯示UI。這就是透過Ps的回調函數完成的。這篇文章我們將講解最重要的一些Ps回調函數。了解本文之後,我們將能夠使用回調函數,完成例如儲存我們的濾鏡參數等必要的工作。本篇文章將比第一篇複雜且深入的多,但同時從這篇文章我們也可以一窺PS內部的秘密:縝密的系統設計,完善的介面以及複雜的工作機制。
(一)回呼函數的分類:
Ps的回呼函數依照取得他們的位置可以分為兩種:
是FilterRecord的直接成員,可以從FilterRecord參數直接取得。例如AdvanceStateProc(更新資料),TestAbortProc(測試使用者取消)等,屬於此類。
(2)Callback Suite:(回調函數集)
把函調函數依功能分類而提供的回呼函數集,是一組回呼函數組成的集合,它是一個指標 將函調函數依功能分類而提供的回呼函數集,是一組回呼函數組成的集合,它是一個指標 指向一個功能的子體(struct),我們可以從FilterRecord取得某個回呼函數集,然後呼叫其中的函數。
目前提供的主要回呼函數集有:
Buffer Suite:快取記憶體管理(申請和釋放快取空間)。
UI Hook Suite:一組和UI操作有關的函數。
Channel Ports Suite:通道連接埠讀寫,用於讀寫PS內部的真正選區資料!而不是副本拷貝。
Descriptor Suite:描述子操作集,用於腳本記錄系統,它本身又包含「讀取」兩個sub-suite(子函數集)。 Color Space Suite:色彩空間服務(色彩轉換等)。
Handle Suite:句柄管理(PS封裝的句柄與記憶體管理,和Buffer suite類似)。
Error Suite:接收並顯示使用者錯誤訊息給使用者(接收不同類型的錯誤訊息字串)。
GetFileList Suite:取得檔案清單(取得文件,呼叫瀏覽器瀏覽網頁等)。
GetPath Suite: 取得路徑。
ZString Suite:封裝字串處理。
例如UI Hook Suite,提供了一組和UI相關的回呼函數。它的第一個版本被定義為:
UI Hooks Suite Version1
兩個子函數集中讀出和寫入資料的函數:
大多數具有比較規範的特性(有少數函數具有例外形式,我們後面單獨介紹),即讀用Get開頭,寫用Put開頭,第一個參數是對應描述符,第二個參數是用於接收查詢結果(或用於存放寫入資料)的對應類型資料指標。假設我們需要查詢的資料型態是TypeName,則如下:
OSErr (*GetTypeNameProc) (PIReadDescriptor descriptor,); OSErr (* PutTypeName
Proc) (PIWriteDescriptor descriptor, DescriptorKeyID, TypeName *dest); h中定義):Read Descriptor sub-suite
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.php.i.函數集成員