unit UMacroRun; {Contributed by Edward J. Huff } {Copyright is hereby waived: UMacroRun.p is in the public domain.} {See UMacroDef.p for more information. Changes should be made} {after the --(n)-- comment and before the matching ==(n)== comment.} {A total of seven changes must be made. When adding a command to} {an existing package, make changes only at (5) and (7), in addition to} {adding an xxxUC symbol in UMacroDef.p and adding a call to AddUMSym} {in UMYourPack.p.} interface uses QuickDraw, Palettes, PrintTraps, Globals, Utilities, UMacroDef, {--(1)-- Add UMYourPack to the list.} UMTimer, UMUtilities, UMSample, UMPixel16u, UMPixel32r, UMGetPutPx, {} UMQuantile, UMCrest, UMMarkup, UMscion1200, UMTextBuf; {==(1)==} procedure InitUserMacros; procedure FinalUserMacros; procedure AddUserMacros; procedure LookupUserMacro (var uma: UserMacroArgs); procedure DoUserMacro (var uma: UserMacroArgs); implementation procedure InitUserMacros; begin {--(2)--Add UMYourPackInit;} UMTimerInit; {timer package must come before any calls to alloctimer} UMUtilitiesInit; {utilities package} UMSampleInit; {sample package} UMPixel16uInit; {Pixel16u package} UMPixel32rInit; {Pixel32r package} UMGetPutPxInit; {GetPutPixel package} UMQuantileInit; {Quantile filtering package} UMCrestInit; {Crest Path package} UMMarkupInit; {Markup package} UMscion1200Init; {scion 1200 package} UMTextBufInit;{TextBuf package} {==(2)==} end; procedure FinalUserMacros; begin {--(3)--Add UMYourPackFinal;} UMTimerFinal; {timer package} UMUtilitiesFinal; {utilities package} UMSampleFinal; {sample package} UMPixel16uFinal; {Pixel16u package} UMPixel32rFinal; {Pixel32r package} UMGetPutPxFinal; {GetPutPixel package} UMQuantileFinal;{Quantile filtering package} UMCrestFinal;{Crest Path package} UMMarkupFinal; {Markup package} UMscion1200Final; {scion 1200 package} UMTextBufFinal;{TextBuf package} {==(3)==} end; procedure AddUserMacros; begin UMInitOK := true; AddUMSym('requiresUser', UserCommandT, requiresUserUC); {--(4)--Add UMYourPackAdd;} UMTimerAdd; {timer package} UMUtilitiesAdd; {utilities package} UMSampleAdd; {sample package} UMPixel16uAdd; {Pixel16u package} UMPixel32rAdd; {Pixel32r package} UMGetPutPxAdd; {GetPutPixel package} UMQuantileAdd; {Quantile filtering package} UMCrestAdd;{Crest Path package} UMMarkupAdd; {Markup package} UMscion1200Add; {scion 1200 package} UMTextBufAdd;{TextBuf package} {==(4)==} if not UMInitOK then PutMessage('UMacroRun.p initialization failed, no Macro Language extensions are available.'); end; procedure LookupUserMacro (var uma: UserMacroArgs); begin if not UMInitOK then exit(LookupUserMacro); with uma do begin case UserMacroCommand of requiresUserUC: begin nArgs := 2; arg[1].atype := UMATstring; arg[2].atype := UMATinteger; end; {--(5)--Add yourMacro1UC,yourMacro2UC: UMYourPackLookup(uma); ----} StartElapsedUC, MeasureElapsedUC, {} StartDelayUC, KillDelayUC, WaitDelayUC,{} StartPeriodicUC, KillPeriodicUC, AdjustPeriodicUC, WaitPeriodicUC: UMTimerLookup(uma); {timer package} dumpSymbolTableUC, getFolderUC, getDefFolderUC, setDefFolderUC,{} getMemoUC, setMemoUC, importOntoUC, getPicNameUC: UMUtilitiesLookup(uma); {Utilities package} sampleCommandUC, sampleFuncUC, sampleStrFuncUC: UMSampleLookup(uma); {Sample package} minMax16uUC, minMax32sUC,{} Cnvrt16uTo8UC, LinLUT16uTo8UC, Cnvrt8To16uUC, Convolve16uUC, {} Median16uUC, radMedian16uUC, MinSpatial16uUC,{} GGDilate16uUC, GGErode16uUC, {} Add16uTo32sUC, Cnvrt32sT16uUC,{} Add16uUC, Sub16uUC, Mpy16uUC, Div16uUC, Ratio16uUC, Lrg16uUC, Sml16uUC, {} AddK16uUC, SubK16uUC, MpyK16uUC, DivK16uUC, MpyDivK16uUC, LrgK16uUC, SmlK16uUC,{} SqzMask16uUC, ExpMask16uUC, CnvMsk16uTo8UC, SqzMask8uUC, ExpMask8uUC,{} NewView16uUC, NMaskView16uUC, FindView16uUC, GaussRand16uUC, NormSInvUC,{} Fill16uUC, ApplyLUT16uUC: UMPixel16uLookup(uma);{Pixel16u package} Cnvrt8To32rUC, Cnvrt32rTo8UC, Cnvrt16uT32rUC, Cnvrt32rT16uUC,{} Add32rUC, Sub32rUC, Mpy32rUC, Div32rUC, Lrg32rUC, Sml32rUC, {} AddK32rUC, SubK32rUC, MpyK32rUC, DivK32rUC, LrgK32rUC, SmlK32rUC,{} minMax32rUC, Min32rUC, Max32rUC, Sqrt32rUC, Ln32rUC, Exp32rUC, {} LeastSqr32rUC, ExpFtStep32rUC, Fill32rUC: UMPixel32rLookup(uma); {Pixel32r package} getPixel8UC, getPixVec8UC, putPixel8UC, putPixVec8UC,{} getPixel16uUC, getPixVec16uUC, putPixel16uUC, putPixVec16uUC,{} getPixel16sUC, getPixVec16sUC, putPixel16sUC, putPixVec16sUC,{} getPixel32sUC, getPixVec32sUC, putPixel32sUC, putPixVec32sUC,{} getPixel32rUC, getPixVec32rUC, putPixel32rUC, putPixVec32rUC,{} getPixel96rUC, getPixVec96rUC, putPixel96rUC, putPixVec96rUC:{} UMGetPutPxLookup(uma);{GetPutPixel package} XYQuantileUC, ZQuantileUC: UMQuantileLookup(uma);{Quantile filtering package} CrestPathwayUC: UMCrestLookup(uma);{crest path package} Dilate8CircularUC, Sum16uMarkUC, Sum16sMarkUC, {} MarkupPicNumberUC, MarkupData16UC, MarkupData8UC, MarkupMarksUC, {} MarkupBkgUC, MarkupShowUC, MarkupHideUC, MarkupPasteKernelUC, {} MarkupValleysUC, MarkupRidgesUC, MarkupBkgCoefUC, MarkupBkgMinUC, {} MarkupBkgDeltaUC, MarkupBkgConeUC, MarkupBkgExponentialUC, MarkupDilateUC, {} MarkupErodeUC, MarkupCalcBkgUC, MarkupCalcHistUC, MarkupScale16bUC, {} MarkupScaleMinUC, MarkupScaleMaxUC, MarkupMake16bUC,{} MarkupavgToBkgUC, MarkupBkgSubUC, MarkedSumUC, MarkedBkgUC: UMMarkupLookup(uma); {Markup package} s12FindNuBusRamUC, s12GetNBRamBaseUC, s12GetNBRamSizeUC,{} s12SetNBRamBaseUC, s12SetNBRamSizeUC, s12FakeNBRamUC, {} s12SetHeightUC, s12SetWidthUC, s12SetBrightUC, s12SetContrastUC, {} s12GetHeightUC, s12GetWidthUC, s12GetBrightUC, s12GetContrastUC, {} s12Start30FPSUC, s12Done30FPSUC, s12IntegrateFramesUC, {} s12SmoothRealUC, s12NumToHexUC,{} s12AddRealUC, s12AddRealConsUC, s12Cnv16ToRealUC, s12Cnv8ToRealUC, s12CnvRTo16UC, {} s12CnvRealTo8UC, s12DivRealUC, s12DivRealConsUC, s12LrgRealUC, s12LrgRealConsUC, {} s12MaxRealUC, s12MinRealUC, s12MpyRealUC, s12MpyRealConsUC, {} s12SmlRealUC, s12SmlRealConsUC, s12SubRealUC, s12SubRealConsUC: UMscion1200Lookup(uma); {scion 1200 package} FromTxBUC, FromTxWUC, AfterTxBUC, PasteAfterTxBUC, ReadAfterTxBUC, {} CopyFromTxBUC, WriteTxBUC, LengthTxBUC, LengthTxWUC, {} TxBNumberUC, TxBidNumberUC, TxWNumberUC, TxWidNumberUC, {} nTxBsUC, nTxWsUC, SelectTxBUC, SelectTxWUC,{} DeleteTxBUC, CopyTxBToTxBUC, CopyTxWToTxBUC, MakeTxWSelecUC, GetTxWSelectUC, {} SearchTxWUC, SearchTxBUC, MacrosFromTxBUC, DisposeTxBUC, {} TxBExistsUC, TxWExistsUC, MakeNewTxBUC:{} UMTextBufLookup(uma);{TextBuf package} {==(5)==} otherwise begin ErrorOccurred := true; str := 'Error UMacroRun.p LookupUserMacro'; end; end; {case} if nargs > UserMacroMaxArgs then begin ErrorOccurred := true; str := 'Increase UserMacroMaxArgs in UMacroDef.p'; end; end; end; procedure DoUserMacro (var uma: UserMacroArgs); var want, version: integer; begin with uma do begin if not UMinitOK then begin ErrorOccurred := true; str := 'Image Macro Language Extensions not initialized'; exit(DoUserMacro); end; ErrorOccurred := false; case UserMacroCommand of requiresUserUC: begin MakeLowerCase(str); {convert argument to lower case} version := 0; want := arg[2].ival; if false then {--(6)--Add "else if str = 'YourPack' then version := 1 " so that } { RequiresUser('YourPack',1) will not give a macro error.} { Be sure to use lower case for all characters.} { If you add commands, increase the version number and use} { the larger version number in macro files that use the new commands.} else if str = 'timer' then version := 1 else if str = 'sample' then version := 1 else if str = 'utilities' then version := 1 else if str = 'pixel16u' then version := 2 else if str = 'pixel32r' then version := 1 else if str = 'getputpixel' then version := 1 else if str = 'quantile' then version := 1 else if str = 'crestpathway' then version := 1 else if str = 'markup' then version := 1 else if str = 'scion1200' then version := 1 else if str = 'textbuf' then version := 1 {==(6)==} else begin ErrorOccurred := true; str := concat('Image Macro Language Extension Package ''', str, ''' is not installed'); exit(DoUserMacro); end; if version < want then begin ErrorOccurred := true; str := concat('Image Macro Language Extension Package ''', str, ''' is version ', Long2Str(version), ' but version ', Long2Str(want), ' is needed'); exit(DoUserMacro); end; end; {--(7)--Add yourMacro1UC,yourMacro2UC: UMYourPackRun(uma); } StartElapsedUC, MeasureElapsedUC, {} StartDelayUC, KillDelayUC, WaitDelayUC,{} StartPeriodicUC, KillPeriodicUC, AdjustPeriodicUC, WaitPeriodicUC: UMTimerRun(uma);{timer package} dumpSymbolTableUC, getFolderUC, getDefFolderUC, setDefFolderUC,{} getMemoUC, setMemoUC, importOntoUC, getPicNameUC: UMUtilitiesRun(uma); {utilities package} sampleCommandUC, sampleFuncUC, sampleStrFuncUC: UMSampleRun(uma); {sample package} minMax16uUC, minMax32sUC,{} Cnvrt16uTo8UC, LinLUT16uTo8UC, Cnvrt8To16uUC, Convolve16uUC, {} Median16uUC, radMedian16uUC, MinSpatial16uUC,{} GGDilate16uUC, GGErode16uUC, {} Add16uTo32sUC, Cnvrt32sT16uUC,{} Add16uUC, Sub16uUC, Mpy16uUC, Div16uUC, Ratio16uUC, Lrg16uUC, Sml16uUC, {} AddK16uUC, SubK16uUC, MpyK16uUC, DivK16uUC, MpyDivK16uUC, LrgK16uUC, SmlK16uUC,{} SqzMask16uUC, ExpMask16uUC, CnvMsk16uTo8UC, SqzMask8uUC, ExpMask8uUC,{} NewView16uUC, NMaskView16uUC, FindView16uUC, GaussRand16uUC, NormSInvUC,{} Fill16uUC, ApplyLUT16uUC: UMPixel16uRun(uma); {Pixel16u package} Cnvrt8To32rUC, Cnvrt32rTo8UC, Cnvrt16uT32rUC, Cnvrt32rT16uUC,{} Add32rUC, Sub32rUC, Mpy32rUC, Div32rUC, Lrg32rUC, Sml32rUC, {} AddK32rUC, SubK32rUC, MpyK32rUC, DivK32rUC, LrgK32rUC, SmlK32rUC,{} minMax32rUC, Min32rUC, Max32rUC, Sqrt32rUC, Ln32rUC, Exp32rUC, {} LeastSqr32rUC, ExpFtStep32rUC, Fill32rUC: UMPixel32rRun(uma); {Pixel32r package} getPixel8UC, getPixVec8UC, putPixel8UC, putPixVec8UC,{} getPixel16uUC, getPixVec16uUC, putPixel16uUC, putPixVec16uUC,{} getPixel16sUC, getPixVec16sUC, putPixel16sUC, putPixVec16sUC,{} getPixel32sUC, getPixVec32sUC, putPixel32sUC, putPixVec32sUC,{} getPixel32rUC, getPixVec32rUC, putPixel32rUC, putPixVec32rUC,{} getPixel96rUC, getPixVec96rUC, putPixel96rUC, putPixVec96rUC:{} UMGetPutPxRun(uma); {GetPutPixel package} XYQuantileUC, ZQuantileUC: UMQuantileRun(uma);{Quantile filtering package} CrestPathwayUC: UMCrestRun(uma);{crest path package} Dilate8CircularUC, Sum16uMarkUC, Sum16sMarkUC,{} MarkupPicNumberUC, MarkupData16UC, MarkupData8UC, MarkupMarksUC, {} MarkupBkgUC, MarkupShowUC, MarkupHideUC, MarkupPasteKernelUC, {} MarkupValleysUC, MarkupRidgesUC, MarkupBkgCoefUC, MarkupBkgMinUC, {} MarkupBkgDeltaUC, MarkupBkgConeUC, MarkupBkgExponentialUC, MarkupDilateUC, {} MarkupErodeUC, MarkupCalcBkgUC, MarkupCalcHistUC, MarkupScale16bUC, {} MarkupScaleMinUC, MarkupScaleMaxUC, MarkupMake16bUC,{} MarkupavgToBkgUC, MarkupBkgSubUC, MarkedSumUC, MarkedBkgUC: UMMarkupRun(uma); {Markup package} s12FindNuBusRamUC, s12GetNBRamBaseUC, s12GetNBRamSizeUC,{} s12SetNBRamBaseUC, s12SetNBRamSizeUC, s12FakeNBRamUC, {} s12SetHeightUC, s12SetWidthUC, s12SetBrightUC, s12SetContrastUC, {} s12GetHeightUC, s12GetWidthUC, s12GetBrightUC, s12GetContrastUC, {} s12Start30FPSUC, s12Done30FPSUC, s12IntegrateFramesUC, {} s12SmoothRealUC, s12NumToHexUC, {} s12AddRealUC, s12AddRealConsUC, s12Cnv16ToRealUC, s12Cnv8ToRealUC, s12CnvRTo16UC, {} s12CnvRealTo8UC, s12DivRealUC, s12DivRealConsUC, s12LrgRealUC, s12LrgRealConsUC, {} s12MaxRealUC, s12MinRealUC, s12MpyRealUC, s12MpyRealConsUC, {} s12SmlRealUC, s12SmlRealConsUC, s12SubRealUC, s12SubRealConsUC: UMscion1200Run(uma); {scion 1200 package} FromTxBUC, FromTxWUC, AfterTxBUC, PasteAfterTxBUC, ReadAfterTxBUC, {} CopyFromTxBUC, WriteTxBUC, LengthTxBUC, LengthTxWUC, {} TxBNumberUC, TxBidNumberUC, TxWNumberUC, TxWidNumberUC, {} nTxBsUC, nTxWsUC, SelectTxBUC, SelectTxWUC,{} DeleteTxBUC, CopyTxBToTxBUC, CopyTxWToTxBUC, MakeTxWSelecUC, GetTxWSelectUC, {} SearchTxWUC, SearchTxBUC, MacrosFromTxBUC, DisposeTxBUC, {} TxBExistsUC, TxWExistsUC, MakeNewTxBUC: UMTextBufRun(uma);{TextBuf package} {==(7)==} otherwise begin ErrorOccurred := true; str := 'Error UMacroRun.p DoUserMacro'; end; end; {case} end; end; end.