1 // //It's 403fication Time!
2 // // Take a picture and add a Megan to it!
4 // // Requires Dev Image Library,
5 // // //on Pentium III libdevil must be
6 // // recompiled with --disable-ssl2 --disable-ssl3
8 // // ~~bicyclesonthemoon
10 #define INPIX_MUSTARD 1
11 #define OUTPIX_MUSTARD 2
12 #define MEGPIX_MUSTARD 3
13 #define ARGUMENT_MUSTARD 4
14 #define SEAISH_MUSTARD 5
15 #define ANIMATED_MUSTARD 6
19 #define MEGPIX "403.png"
26 /*#define NPBPIX0 "npb0.png"
34 #define NPBPIX1 "npb1.png"
42 #define NPBPIX2 "npb2.png"
52 void mustard(int mustard);
53 void loadmeg(const char *path);
54 void m403(const char *path);
55 int main (int argc, const char *argv[]);
57 ILuint inPix, outPix, megPix;
62 ILuint inX, inY, outX, outY;
65 int main (int argc, const char *argv[])
68 mustard(ARGUMENT_MUSTARD);
71 if (argv[3][0]=='q' || argv[3][0]=='Q')
76 if(!ilEnable(IL_ORIGIN_SET))mustard(FAIL);
77 if(!ilEnable(IL_FILE_OVERWRITE))mustard(FAIL);
78 ilClearColour(255,255,255,255);
79 ilGenImages(1, &inPix);
82 if(!ilLoadImage(argv[1]))mustard(INPIX_MUSTARD);
83 if(!ilConvertImage(IL_RGBA,IL_UNSIGNED_BYTE))mustard(INPIX_MUSTARD);
84 //if(!ilConvertPal(IL_PAL_RGBA32))mustard(FAIL);
86 inX=ilGetInteger(IL_IMAGE_WIDTH);
87 inY=ilGetInteger(IL_IMAGE_HEIGHT);
88 if(ilGetInteger(IL_NUM_IMAGES)>1)
89 mustard(ANIMATED_MUSTARD);
96 void loadmeg(const char *path)
98 ilGenImages(1, &megPix);
101 if(!ilLoadImage(path))mustard(MEGPIX_MUSTARD);
102 if(!ilConvertImage(IL_RGBA,IL_UNSIGNED_BYTE))mustard(MEGPIX_MUSTARD);
105 void m403(const char *path)
108 outX=(inX+XB+6>XM)?(inX+XB+6):XM;
109 outY=(inY+YA+6>YM)?(inY+YA+6):YM;
110 ilGenImages(1, &outPix);
115 if(!ilTexImage(outX,outY,1,4,IL_RGBA,IL_UNSIGNED_BYTE,NULL))mustard(OUTPIX_MUSTARD);
116 if(!ilClearImage())mustard(FAIL);
118 ilSetPixels(0,0/**/,0,XM,YM,1,IL_RGBA,IL_UNSIGNED_BYTE,newdata);
119 if(!ilOverlayImage(inPix,((inX/2<XA-XB)?(XA-inX/2):XB),outY-YA-inY,0))mustard(FAIL);
125 newdata[4*(i ) ]=0x00;
126 newdata[4*(i )+1]=0x00;
127 newdata[4*(i )+2]=0x00;
128 newdata[4*(i )+3]=0xFF;
130 newdata[4*(i+outX ) ]=0x00;
131 newdata[4*(i+outX )+1]=0x00;
132 newdata[4*(i+outX )+2]=0x00;
133 newdata[4*(i+outX )+3]=0xFF;
135 newdata[4*(i+outX*(outY-1)) ]=0x00;
136 newdata[4*(i+outX*(outY-1))+1]=0x00;
137 newdata[4*(i+outX*(outY-1))+2]=0x00;
138 newdata[4*(i+outX*(outY-1))+3]=0xFF;
140 newdata[4*(i+outX*(outY-2)) ]=0x00;
141 newdata[4*(i+outX*(outY-2))+1]=0x00;
142 newdata[4*(i+outX*(outY-2))+2]=0x00;
143 newdata[4*(i+outX*(outY-2))+3]=0xFF;
146 for(j=2;j<outY-2;++j)
148 newdata[4*( outX*j) ]=0x00;
149 newdata[4*( outX*j)+1]=0x00;
150 newdata[4*( outX*j)+2]=0x00;
151 newdata[4*( outX*j)+3]=0xFF;
153 newdata[4*( 1+outX*j) ]=0x00;
154 newdata[4*( 1+outX*j)+1]=0x00;
155 newdata[4*( 1+outX*j)+2]=0x00;
156 newdata[4*( 1+outX*j)+3]=0xFF;
158 newdata[4*(outX-1+outX*j) ]=0x00;
159 newdata[4*(outX-1+outX*j)+1]=0x00;
160 newdata[4*(outX-1+outX*j)+2]=0x00;
161 newdata[4*(outX-1+outX*j)+3]=0xFF;
166 newdata[4*(outX-1+outX*(outY-1)) ]=0xB6;
167 newdata[4*(outX-1+outX*(outY-1))+1]=0xB6;
168 newdata[4*(outX-1+outX*(outY-1))+2]=0xB6;
169 newdata[4*(outX-1+outX*(outY-1))+3]=0xFF;
171 newdata[4*( outX*(outY-1)) ]=0xB6;
172 newdata[4*( outX*(outY-1))+1]=0xB6;
173 newdata[4*( outX*(outY-1))+2]=0xB6;
174 newdata[4*( outX*(outY-1))+3]=0xFF;
176 newdata[4*(outX-1 ) ]=0xB6;
177 newdata[4*(outX-1 )+1]=0xB6;
178 newdata[4*(outX-1 )+2]=0xB6;
179 newdata[4*(outX-1 )+3]=0xFF;
186 if(!ilSave(IL_PNG,path))mustard(OUTPIX_MUSTARD);
189 /*void npbottify2(const char *path)
193 for(i=outX-X21-inX-2;i<outX-X21+2;++i)
195 //printf("i=%lu\n",i);
196 for(j=Y21-2;j<Y21+inY+2;++j)
198 //printf("i=%lu j=%lu\n",i,j);
199 if((i==outX-X21-inX-2)||(i==outX-X21-inX-1)||
200 (i==outX-X21 +1)||(i==outX-X21 )||
201 (j== Y21 -2)||(j== Y21 -1)||
202 (j== Y21+inY+1)||(j== Y21+inY ))
204 newdata[4*(i+outX*j)+0]=0x00;
205 newdata[4*(i+outX*j)+1]=0x00;
206 newdata[4*(i+outX*j)+2]=0x00;
207 newdata[4*(i+outX*j)+3]=0xFF;
211 newdata[4*(i+outX*j)+0]=0xFF;
212 newdata[4*(i+outX*j)+1]=0xFF;
213 newdata[4*(i+outX*j)+2]=0xFF;
214 newdata[4*(i+outX*j)+3]=0xFF;
225 newdata[4*(i+outX*j)+0]=0x00;
226 newdata[4*(i+outX*j)+1]=0x00;
227 newdata[4*(i+outX*j)+2]=0x00;
228 newdata[4*(i+outX*j)+3]=0x00;
230 newdata[4*(i+outX*j)+0]=0x00;
231 newdata[4*(i+outX*j)+1]=0x00;
232 newdata[4*(i+outX*j)+2]=0x00;
233 newdata[4*(i+outX*j)+3]=0x00;
235 newdata[4*(i+outX*j)+0]=0x00;
236 newdata[4*(i+outX*j)+1]=0x00;
237 newdata[4*(i+outX*j)+2]=0x00;
238 newdata[4*(i+outX*j)+3]=0x00;
240 newdata[4*(i+outX*j)+0]=0x00;
241 newdata[4*(i+outX*j)+1]=0x00;
242 newdata[4*(i+outX*j)+2]=0x00;
243 newdata[4*(i+outX*j)+3]=0x00;
247 newdata[4*(i+outX*j)+0]=0x00;
248 newdata[4*(i+outX*j)+1]=0x00;
249 newdata[4*(i+outX*j)+2]=0x00;
250 newdata[4*(i+outX*j)+3]=0xFF;
252 newdata[4*(i+outX*j)+0]=0x00;
253 newdata[4*(i+outX*j)+1]=0x00;
254 newdata[4*(i+outX*j)+2]=0x00;
255 newdata[4*(i+outX*j)+3]=0xFF;
257 newdata[4*(i+outX*j)+0]=0x00;
258 newdata[4*(i+outX*j)+1]=0x00;
259 newdata[4*(i+outX*j)+2]=0x00;
260 newdata[4*(i+outX*j)+3]=0xFF;
262 newdata[4*(i+outX*j)+0]=0x00;
263 newdata[4*(i+outX*j)+1]=0x00;
264 newdata[4*(i+outX*j)+2]=0x00;
265 newdata[4*(i+outX*j)+3]=0xFF;
272 void mustard(int mustard)
277 if(q) printf("403fied!\n");break;
278 case ARGUMENT_MUSTARD:
279 if(q) printf("npb inPix outPix [q]\n");break;
281 if(q) printf("inPIX mustard.\n");break;
283 if(q) printf("outPIX mustard.\n");break;
285 if(q) printf("megPIX mustard.\n");break;
287 if(q) printf("Seaishness is mustard.\n");break;
288 case ANIMATED_MUSTARD:
289 if(q) printf("Animation is mustard.\n");break;
291 if (q) printf("Ch*rpin* mustard mustaard!\n");
294 ilDeleteImages(1, &inPix);
297 ilDeleteImages(1, &outPix);
301 ilDeleteImages(1, &megPix);