1 // //It's NewpixbOTTification Time!
2 // // Take a picture and add a newpixbot 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 NPBPIX_MUSTARD 3
13 #define ARGUMENT_MUSTARD 4
14 #define SEAISH_MUSTARD 5
15 #define ANIMATED_MUSTARD 6
19 #define NPBPIX0 "npb0.png"
27 #define NPBPIX1 "npb1.png"
35 #define NPBPIX2 "npb2.png"
45 void mustard(int mustard);
46 void loadnpb(const char *path);
47 void npbottify0(const char *path);
48 void npbottify1(const char *path);
49 void npbottify2(const char *path);
50 int main (int argc, const char *argv[]);
52 ILuint inPix, outPix, npbPix;
57 ILuint inX, inY, outX, outY;
60 int main (int argc, const char *argv[])
63 mustard(ARGUMENT_MUSTARD);
66 if (argv[3][0]=='q' || argv[3][0]=='Q')
71 if(!ilEnable(IL_ORIGIN_SET))mustard(FAIL);
72 if(!ilEnable(IL_FILE_OVERWRITE))mustard(FAIL);
73 ilClearColour(255,255,0,0);
74 ilGenImages(1, &inPix);
77 if(!ilLoadImage(argv[1]))mustard(INPIX_MUSTARD);
78 if(!ilConvertImage(IL_RGBA,IL_UNSIGNED_BYTE))mustard(INPIX_MUSTARD);
79 //if(!ilConvertPal(IL_PAL_RGBA32))mustard(FAIL);
81 inX=ilGetInteger(IL_IMAGE_WIDTH);
82 inY=ilGetInteger(IL_IMAGE_HEIGHT);
83 if(ilGetInteger(IL_NUM_IMAGES)>1)
84 mustard(ANIMATED_MUSTARD);
86 if(inX<=X02&&inY<=Y02)
88 else if(inX<=X12&&inY<=Y12)
96 void loadnpb(const char *path)
98 ilGenImages(1, &npbPix);
101 if(!ilLoadImage(path))mustard(NPBPIX_MUSTARD);
102 if(!ilConvertImage(IL_RGBA,IL_UNSIGNED_BYTE))mustard(NPBPIX_MUSTARD);
105 void npbottify0(const char *path)
107 //newdata= new ILubyte[X0*Y0*4];
108 ilGenImages(1, &outPix);
112 if(!ilCopyImage(npbPix))mustard(FAIL);
113 //if(!ilTexImage(X0,Y0,1,4,IL_RGBA,IL_UNSIGNED_BYTE,NULL))mustard(OUTPIX_MUSTARD);
114 //if(!ilConvertImage(IL_RGBA,IL_UNSIGNED_BYTE))mustard(OUTPIX_MUSTARD);
116 for(unsigned long i=0;i<X0;++i)
118 for(unsigned long j=0;j<Y0;++j)
120 if((i>=X01+(X02-inX)/2)&&
121 (i< X01+(X02-inX)/2+inX)&&
122 (j>=Y01+(Y02-inY)/2)&&
123 (j< Y01+(Y02-inY)/2+inY))
125 newdata[4*(i+X0*j)+0]=0xFF;
126 newdata[4*(i+X0*j)+1]=0xFF;
127 newdata[4*(i+X0*j)+2]=0xFF;
128 newdata[4*(i+X0*j)+3]=0xFF;
130 else if((i>=X01)&&(i<X01+X02)&&
131 (j>=Y01)&&(j<Y01+Y02))
133 newdata[4*(i+X0*j)+0]=0xFF;//looks better white
134 newdata[4*(i+X0*j)+1]=0xFF;
135 newdata[4*(i+X0*j)+2]=0xFF;
136 newdata[4*(i+X0*j)+3]=0xFF;
140 //newdata[4*(i+X0*j)+0]=0xFF;
141 //newdata[4*(i+X0*j)+1]=0xFF;
142 //newdata[4*(i+X0*j)+2]=0xFF;
143 //newdata[4*(i+X0*j)+3]=0x00;
147 //if(!ilSetData(newdata))mustard(OUTPIX_MUSTARD);
149 //printf("%d\n",iCurImage);
150 if(!ilOverlayImage(inPix,X01+(X02-inX)/2,Y0-inY-(Y01+(Y02-inY)/2),0))mustard(FAIL);
151 if(!ilOverlayImage(npbPix,0,0,0))mustard(FAIL);
152 if(!ilSave(IL_PNG,path))mustard(OUTPIX_MUSTARD);
155 void npbottify1(const char *path)
157 //newdata= new ILubyte[X0*Y0*4];
158 ilGenImages(1, &outPix);
162 if(!ilCopyImage(npbPix))mustard(FAIL);
163 //if(!ilTexImage(X1,Y1,1,4,IL_RGBA,IL_UNSIGNED_BYTE,NULL))mustard(OUTPIX_MUSTARD);
164 //if(!ilConvertImage(IL_RGBA,IL_UNSIGNED_BYTE))mustard(OUTPIX_MUSTARD);
166 for(unsigned long i=0;i<X1;++i)
168 for(unsigned long j=0;j<Y1;++j)
170 if((i>=X11+(X12-inX)/2)&&
171 (i< X11+(X12-inX)/2+inX)&&
172 (j>=Y11+(Y12-inY)/2)&&
173 (j< Y11+(Y12-inY)/2+inY))
175 newdata[4*(i+X1*j)+0]=0xFF;
176 newdata[4*(i+X1*j)+1]=0xFF;
177 newdata[4*(i+X1*j)+2]=0xFF;
178 newdata[4*(i+X1*j)+3]=0xFF;
180 else if((i>=X11)&&(i<X11+X12)&&
181 (j>=Y11)&&(j<Y11+Y12))
183 newdata[4*(i+X1*j)+0]=0x00;
184 newdata[4*(i+X1*j)+1]=0x00;
185 newdata[4*(i+X1*j)+2]=0x00;
186 newdata[4*(i+X1*j)+3]=0xFF;
194 //if(!ilSetData(newdata))mustard(OUTPIX_MUSTARD);
196 //printf("%d\n",iCurImage);
197 if(!ilOverlayImage(inPix,X11+(X12-inX)/2,Y1-inY-(Y11+(Y12-inY)/2),0))mustard(FAIL);
198 //(!ilOverlayImage(npbPix,0,0,0))mustard(FAIL);
199 if(!ilSave(IL_PNG,path))mustard(OUTPIX_MUSTARD);
202 void npbottify2(const char *path)
205 outX=(X21+inX+2>X2)?(X21+inX+2):X2;
206 outY=(Y21+inY+2>Y2)?(Y21+inY+2):Y2;
207 ilGenImages(1, &outPix);
212 if(!ilTexImage(outX,outY,1,4,IL_RGBA,IL_UNSIGNED_BYTE,NULL))mustard(OUTPIX_MUSTARD);
213 if(!ilClearImage())mustard(FAIL);
214 ilSetPixels(outX-X2,0,0,X2,Y2,1,IL_RGBA,IL_UNSIGNED_BYTE,newdata);
216 for(i=outX-X21-inX-2;i<outX-X21+2;++i)
218 //printf("i=%lu\n",i);
219 for(j=Y21-2;j<Y21+inY+2;++j)
221 //printf("i=%lu j=%lu\n",i,j);
222 if((i==outX-X21-inX-2)||(i==outX-X21-inX-1)||
223 (i==outX-X21 +1)||(i==outX-X21 )||
224 (j== Y21 -2)||(j== Y21 -1)||
225 (j== Y21+inY+1)||(j== Y21+inY ))
227 newdata[4*(i+outX*j)+0]=0x00;
228 newdata[4*(i+outX*j)+1]=0x00;
229 newdata[4*(i+outX*j)+2]=0x00;
230 newdata[4*(i+outX*j)+3]=0xFF;
234 newdata[4*(i+outX*j)+0]=0xFF;
235 newdata[4*(i+outX*j)+1]=0xFF;
236 newdata[4*(i+outX*j)+2]=0xFF;
237 newdata[4*(i+outX*j)+3]=0xFF;
242 if(!ilOverlayImage(inPix,outX-X21-inX,outY-Y21-inY,0))mustard(FAIL);
246 newdata[4*(i+outX*j)+0]=0x00;
247 newdata[4*(i+outX*j)+1]=0x00;
248 newdata[4*(i+outX*j)+2]=0x00;
249 newdata[4*(i+outX*j)+3]=0x00;
251 newdata[4*(i+outX*j)+0]=0x00;
252 newdata[4*(i+outX*j)+1]=0x00;
253 newdata[4*(i+outX*j)+2]=0x00;
254 newdata[4*(i+outX*j)+3]=0x00;
256 newdata[4*(i+outX*j)+0]=0x00;
257 newdata[4*(i+outX*j)+1]=0x00;
258 newdata[4*(i+outX*j)+2]=0x00;
259 newdata[4*(i+outX*j)+3]=0x00;
261 newdata[4*(i+outX*j)+0]=0x00;
262 newdata[4*(i+outX*j)+1]=0x00;
263 newdata[4*(i+outX*j)+2]=0x00;
264 newdata[4*(i+outX*j)+3]=0x00;
268 newdata[4*(i+outX*j)+0]=0x00;
269 newdata[4*(i+outX*j)+1]=0x00;
270 newdata[4*(i+outX*j)+2]=0x00;
271 newdata[4*(i+outX*j)+3]=0xFF;
273 newdata[4*(i+outX*j)+0]=0x00;
274 newdata[4*(i+outX*j)+1]=0x00;
275 newdata[4*(i+outX*j)+2]=0x00;
276 newdata[4*(i+outX*j)+3]=0xFF;
278 newdata[4*(i+outX*j)+0]=0x00;
279 newdata[4*(i+outX*j)+1]=0x00;
280 newdata[4*(i+outX*j)+2]=0x00;
281 newdata[4*(i+outX*j)+3]=0xFF;
283 newdata[4*(i+outX*j)+0]=0x00;
284 newdata[4*(i+outX*j)+1]=0x00;
285 newdata[4*(i+outX*j)+2]=0x00;
286 newdata[4*(i+outX*j)+3]=0xFF;
288 if(!ilSave(IL_PNG,path))mustard(OUTPIX_MUSTARD);
293 void mustard(int mustard)
298 if(q) printf("NewpixbOTTified!\n");break;
299 case ARGUMENT_MUSTARD:
300 if(q) printf("npb inPix outPix [q]\n");break;
302 if(q) printf("inPIX mustard.\n");break;
304 if(q) printf("outPIX mustard.\n");break;
306 if(q) printf("npbPIX mustard.\n");break;
308 if(q) printf("Seaishness is mustard.\n");break;
309 case ANIMATED_MUSTARD:
310 if(q) printf("Animation is mustard.\n");break;
312 if (q) printf("Ch*rpin* mustard mustaard!\n");
315 ilDeleteImages(1, &inPix);
318 ilDeleteImages(1, &outPix);
322 ilDeleteImages(1, &npbPix);