Subversion Repositories filter_foundry

Rev

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