Rev 8 | Rev 18 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8 | Rev 15 | ||
---|---|---|---|
Line 31... | Line 31... | ||
31 | int errpos[4],errstart[4],nplanes,srcradused,chunksize,toprow; |
31 | int errpos[4],errstart[4],nplanes,srcradused,chunksize,toprow; |
32 | value_type slider[8],cell[0x100],map[4][0x100]; |
32 | value_type slider[8],cell[0x100],map[4][0x100]; |
33 | char *expr[4],*defaultexpr[]={"r","g","b","a"}; |
33 | char *expr[4],*defaultexpr[]={"r","g","b","a"}; |
34 | 34 | ||
35 | #ifdef MAC_ENV |
35 | #ifdef MAC_ENV |
36 | /* fake this global on Mac (in Windows build, it's defined in dllmain.c) */ |
36 | #define hDllInstance NULL /* fake this Windows-only global */ |
37 | Handle hDllInstance = NULL; |
- | |
38 | #endif |
37 | #endif |
39 | 38 | ||
40 | extern struct sym_rec predefs[]; |
39 | extern struct sym_rec predefs[]; |
41 | extern int nplanes,varused[],srcradused; |
40 | extern int nplanes,varused[],srcradused; |
42 | 41 | ||
43 | globals_t *gdata; |
42 | globals_t *gdata; |
44 | FilterRecordPtr gpb; |
43 | FilterRecordPtr gpb; |
45 | 44 | ||
46 | void checkandinitparams(long *data,Handle params); |
45 | int checkandinitparams(Handle params); |
47 | 46 | ||
48 | DLLEXPORT MACPASCAL |
47 | DLLEXPORT MACPASCAL |
49 | void ENTRYPOINT(short selector,FilterRecordPtr pb,long *data,short *result){ |
48 | void ENTRYPOINT(short selector,FilterRecordPtr pb,long *data,short *result){ |
50 | OSErr e = noErr; |
49 | OSErr e = noErr; |
51 | static Boolean wantdialog = false; |
50 | static Boolean wantdialog = false; |
Line 66... | Line 65... | ||
66 | case filterSelectorAbout: |
65 | case filterSelectorAbout: |
67 | DoAbout((AboutRecordPtr)pb); |
66 | DoAbout((AboutRecordPtr)pb); |
68 | break; |
67 | break; |
69 | case filterSelectorParameters: |
68 | case filterSelectorParameters: |
70 | // dbg("filterSelectorParameters"); |
69 | // dbg("filterSelectorParameters"); |
71 | wantdialog = true; // was: true; |
70 | wantdialog = true; |
72 | break; |
71 | break; |
73 | case filterSelectorPrepare: |
72 | case filterSelectorPrepare: |
74 | // dbg("filterSelectorPrepare"); |
73 | // dbg("filterSelectorPrepare"); |
75 | DoPrepare(pb); |
74 | DoPrepare(pb); |
76 | init_symtab(predefs); // ready for parser calls |
75 | init_symtab(predefs); // ready for parser calls |
77 | break; |
76 | break; |
78 | case filterSelectorStart: |
77 | case filterSelectorStart: |
79 | // dbg("filterSelectorStart"); |
78 | // dbg("filterSelectorStart"); |
80 | if(!pb->parameters) |
- | |
81 | pb->parameters = PINEWHANDLE(0); |
- | |
82 | 79 | ||
- | 80 | if(!pb->parameters){ |
|
- | 81 | //dbg("pb->parameters = PINEWHANDLE(0)"), |
|
- | 82 | pb->parameters = PINEWHANDLE(0); /* initialise the parameter handle that Photoshop keeps for us */ |
|
- | 83 | if(!pb->parameters) dbg("filterSelectorStart NULL handle @ PINEWHANDLE(0)"); |
|
- | 84 | } |
|
- | 85 | ||
83 | checkandinitparams(data,pb->parameters); |
86 | wantdialog |= checkandinitparams(pb->parameters); |
84 | 87 | ||
- | 88 | /* wantdialog = false means that we never got a Parameters call, so we're not supposed to ask user */ |
|
85 | if( wantdialog && (!gdata->standalone || gdata->parm.popDialog) ){ |
89 | if( wantdialog && (!gdata->standalone || gdata->parm.popDialog) ){ |
86 | if( maindialog(pb) ){ |
90 | if( maindialog(pb) ){ |
- | 91 | //dbg("maindialog OK!"); |
|
87 | /* update parameters */ |
92 | /* update stored parameters from new user settings */ |
88 | saveparams(pb->parameters); |
93 | saveparams(pb->parameters); |
89 | }else |
94 | }else |
90 | e = userCanceledErr; |
95 | e = userCanceledErr; |
91 | wantdialog = false; |
96 | wantdialog = false; |
92 | } |
97 | } |
Line 113... | Line 118... | ||
113 | *result = e; |
118 | *result = e; |
114 | 119 | ||
115 | ExitCodeResource(); |
120 | ExitCodeResource(); |
116 | } |
121 | } |
117 | 122 | ||
118 | void checkandinitparams(long *data,Handle params){ |
123 | int checkandinitparams(Handle params){ |
119 | char *reasonstr; |
124 | char *reasonstr,*reason; |
120 | int i; |
125 | int i,f; |
121 | char *reason; |
- | |
122 | 126 | ||
123 | if(!(params && readparams(params,false,&reasonstr))){ |
127 | if( !(params && readparams(params,false,&reasonstr)) ){ |
124 | /* either the parameter handle was uninitialised, |
128 | /* either the parameter handle was uninitialised, |
125 | or the parameter data couldn't be read; set default values */ |
129 | or the parameter data couldn't be read; set default values */ |
126 | 130 | ||
127 | if(readPARMresource(hDllInstance,&reason)) |
131 | if(readPARMresource(hDllInstance,&reason)) |
128 | gdata->standalone = true; |
132 | gdata->standalone = true; |
129 | else{ |
133 | else{ |
- | 134 | //dbg("checkandinitparams: setting DEFAULTS!"); |
|
130 | /* no scripted parameters - dialog wanted */ |
135 | /* no scripted parameters - dialog wanted */ |
131 | for(i=0;i<8;++i) |
136 | for(i=0;i<8;++i) |
132 | slider[i] = i*10+100; |
137 | slider[i] = i*10+100; |
133 | for(i=4;i--;) |
138 | for(i=4;i--;) |
134 | expr[i] = my_strdup(defaultexpr[i]); |
139 | expr[i] = my_strdup(defaultexpr[i]); |
135 | } |
140 | } |
136 | } |
141 | } |
137 | 142 | ||
138 | if( ! ReadScriptParamsOnRead() ) |
- | |
139 | saveparams(gpb->parameters); /* save the scripted params */ |
143 | f = true;//ReadScriptParamsOnRead(); /* look for anything from the scripting engine */ |
140 | 144 | ||
141 | /* check for NULL expression pointers (?) */ |
145 | /* sanity check for NULL expression pointers (?) */ |
142 | for(i=4;i--;) |
146 | for(i=4;i--;) |
143 | if(!expr[i]) expr[i] = my_strdup(defaultexpr[i]); |
147 | if(!expr[i]) expr[i] = my_strdup(defaultexpr[i]); |
- | 148 | ||
- | 149 | saveparams(params); /* keep what we got */ |
|
- | 150 | return f; |
|
144 | } |
151 | } |
145 | 152 | ||
146 | void DoPrepare(FilterRecordPtr pb){ |
153 | void DoPrepare(FilterRecordPtr pb){ |
147 | int i; |
154 | int i; |
148 | 155 | ||
149 | for(i=4;i--;){ |
156 | for(i=4;i--;){ |
150 | if(expr[i]||tree[i]) DBG("expr[] or tree[] non-NULL in Prepare!"); |
157 | if(expr[i]||tree[i]) DBG("expr[] or tree[] non-NULL in Prepare!"); |
151 | expr[i] = NULL; |
158 | expr[i] = NULL; |
152 | tree[i] = NULL; |
159 | tree[i] = NULL; |
153 | } |
160 | } |
- | 161 | ||
- | 162 | // pb->maxSpace = 256L<<10; /* nominal memory, neither here nor there */ |
|
154 | } |
163 | } |
155 | 164 | ||
156 | void RequestNext(FilterRecordPtr pb,long toprow){ |
165 | void RequestNext(FilterRecordPtr pb,long toprow){ |
157 | /* Request next block of the image */ |
166 | /* Request next block of the image */ |
158 | 167 |