1 // // It's NewpixbOTTification Time!
2 // // Take a picture and add a newpixbot to it!
3 // // Requires Dev Image Library, on Pentium III libdevil must be recompiled with --disable-ssl2 --disable-ssl3
5 // // ~~bicyclesonthemoon
7 #define INPIX_MUSTARD 1
8 #define OUTPIX_MUSTARD 2
9 #define NPBPIX_MUSTARD 3
10 #define ARGUMENT_MUSTARD 4
11 #define SEAISH_MUSTARD 5
12 #define ANIMATED_MUSTARD 6
16 #define NPBPIX0 "npb0.png"
24 #define NPBPIX1 "npb1.png"
32 #define NPBPIX2 "npb2.png"
42 void mustard(int mustard);
43 void loadnpb(const char *path);
44 void npbottify0(const char *path);
45 void npbottify1(const char *path);
46 void npbottify2(const char *path);
47 int main (int argc, const char *argv[]);
49 ILuint inPix, outPix, npbPix;
54 ILuint inX, inY, outX, outY;
57 int main (int argc, const char *argv[])
60 mustard(ARGUMENT_MUSTARD);
63 if (argv[3][0]=='q' || argv[3][0]=='Q')
68 if(!ilEnable(IL_ORIGIN_SET))mustard(FAIL);
69 if(!ilEnable(IL_FILE_OVERWRITE))mustard(FAIL);
70 ilClearColour(255,255,0,0);
71 ilGenImages(1, &inPix);
74 if(!ilLoadImage(argv[1]))mustard(INPIX_MUSTARD);
75 if(!ilConvertImage(IL_RGBA,IL_UNSIGNED_BYTE))mustard(INPIX_MUSTARD);
76 //if(!ilConvertPal(IL_PAL_RGBA32))mustard(FAIL);
78 inX=ilGetInteger(IL_IMAGE_WIDTH);
79 inY=ilGetInteger(IL_IMAGE_HEIGHT);
80 if(ilGetInteger(IL_NUM_IMAGES)>1)
81 mustard(ANIMATED_MUSTARD);
83 if(inX<=X02&&inY<=Y02)
85 else if(inX<=X12&&inY<=Y12)
93 void loadnpb(const char *path)
95 ilGenImages(1, &npbPix);
98 if(!ilLoadImage(path))mustard(NPBPIX_MUSTARD);
99 if(!ilConvertImage(IL_RGBA,IL_UNSIGNED_BYTE))mustard(NPBPIX_MUSTARD);
102 void npbottify0(const char *path)
104 //newdata= new ILubyte[X0*Y0*4];
105 ilGenImages(1, &outPix);
109 if(!ilCopyImage(npbPix))mustard(FAIL);
110 //if(!ilTexImage(X0,Y0,1,4,IL_RGBA,IL_UNSIGNED_BYTE,NULL))mustard(OUTPIX_MUSTARD);
111 //if(!ilConvertImage(IL_RGBA,IL_UNSIGNED_BYTE))mustard(OUTPIX_MUSTARD);
113 for(unsigned long i=0;i<X0;++i)
115 for(unsigned long j=0;j<Y0;++j)
117 if((i>=X01+(X02-inX)/2)&&
118 (i< X01+(X02-inX)/2+inX)&&
119 (j>=Y01+(Y02-inY)/2)&&
120 (j< Y01+(Y02-inY)/2+inY))
122 newdata[4*(i+X0*j)+0]=0xFF;
123 newdata[4*(i+X0*j)+1]=0xFF;
124 newdata[4*(i+X0*j)+2]=0xFF;
125 newdata[4*(i+X0*j)+3]=0xFF;
127 else if((i>=X01)&&(i<X01+X02)&&
128 (j>=Y01)&&(j<Y01+Y02))
130 newdata[4*(i+X0*j)+0]=0x00;
131 newdata[4*(i+X0*j)+1]=0x00;
132 newdata[4*(i+X0*j)+2]=0x00;
133 newdata[4*(i+X0*j)+3]=0xFF;
137 //newdata[4*(i+X0*j)+0]=0xFF;
138 //newdata[4*(i+X0*j)+1]=0xFF;
139 //newdata[4*(i+X0*j)+2]=0xFF;
140 //newdata[4*(i+X0*j)+3]=0x00;
144 //if(!ilSetData(newdata))mustard(OUTPIX_MUSTARD);
146 //printf("%d\n",iCurImage);
147 if(!ilOverlayImage(inPix,X01+(X02-inX)/2,Y0-inY-(Y01+(Y02-inY)/2),0))mustard(FAIL);
148 if(!ilOverlayImage(npbPix,0,0,0))mustard(FAIL);
149 if(!ilSave(IL_PNG,path))mustard(OUTPIX_MUSTARD);
152 void npbottify1(const char *path)
154 //newdata= new ILubyte[X0*Y0*4];
155 ilGenImages(1, &outPix);
159 if(!ilCopyImage(npbPix))mustard(FAIL);
160 //if(!ilTexImage(X1,Y1,1,4,IL_RGBA,IL_UNSIGNED_BYTE,NULL))mustard(OUTPIX_MUSTARD);
161 //if(!ilConvertImage(IL_RGBA,IL_UNSIGNED_BYTE))mustard(OUTPIX_MUSTARD);
163 for(unsigned long i=0;i<X1;++i)
165 for(unsigned long j=0;j<Y1;++j)
167 if((i>=X11+(X12-inX)/2)&&
168 (i< X11+(X12-inX)/2+inX)&&
169 (j>=Y11+(Y12-inY)/2)&&
170 (j< Y11+(Y12-inY)/2+inY))
172 newdata[4*(i+X1*j)+0]=0xFF;
173 newdata[4*(i+X1*j)+1]=0xFF;
174 newdata[4*(i+X1*j)+2]=0xFF;
175 newdata[4*(i+X1*j)+3]=0xFF;
177 else if((i>=X11)&&(i<X11+X12)&&
178 (j>=Y11)&&(j<Y11+Y12))
180 newdata[4*(i+X1*j)+0]=0x00;
181 newdata[4*(i+X1*j)+1]=0x00;
182 newdata[4*(i+X1*j)+2]=0x00;
183 newdata[4*(i+X1*j)+3]=0xFF;
191 //if(!ilSetData(newdata))mustard(OUTPIX_MUSTARD);
193 //printf("%d\n",iCurImage);
194 if(!ilOverlayImage(inPix,X11+(X12-inX)/2,Y1-inY-(Y11+(Y12-inY)/2),0))mustard(FAIL);
195 //(!ilOverlayImage(npbPix,0,0,0))mustard(FAIL);
196 if(!ilSave(IL_PNG,path))mustard(OUTPIX_MUSTARD);
199 void npbottify2(const char *path)
202 outX=(X21+inX+2>X2)?(X21+inX+2):X2;
203 outY=(Y21+inY+2>Y2)?(Y21+inY+2):Y2;
204 ilGenImages(1, &outPix);
209 if(!ilTexImage(outX,outY,1,4,IL_RGBA,IL_UNSIGNED_BYTE,NULL))mustard(OUTPIX_MUSTARD);
210 if(!ilClearImage())mustard(FAIL);
211 ilSetPixels(outX-X2,0,0,X2,Y2,1,IL_RGBA,IL_UNSIGNED_BYTE,newdata);
213 for(i=outX-X21-inX-2;i<outX-X21+2;++i)
215 //printf("i=%lu\n",i);
216 for(j=Y21-2;j<Y21+inY+2;++j)
218 //printf("i=%lu j=%lu\n",i,j);
219 if((i==outX-X21-inX-2)||(i==outX-X21-inX-1)||
220 (i==outX-X21 +1)||(i==outX-X21 )||
221 (j== Y21 -2)||(j== Y21 -1)||
222 (j== Y21+inY+1)||(j== Y21+inY ))
224 newdata[4*(i+outX*j)+0]=0x00;
225 newdata[4*(i+outX*j)+1]=0x00;
226 newdata[4*(i+outX*j)+2]=0x00;
227 newdata[4*(i+outX*j)+3]=0xFF;
231 newdata[4*(i+outX*j)+0]=0xFF;
232 newdata[4*(i+outX*j)+1]=0xFF;
233 newdata[4*(i+outX*j)+2]=0xFF;
234 newdata[4*(i+outX*j)+3]=0xFF;
239 if(!ilOverlayImage(inPix,outX-X21-inX,outY-Y21-inY,0))mustard(FAIL);
243 newdata[4*(i+outX*j)+0]=0x00;
244 newdata[4*(i+outX*j)+1]=0x00;
245 newdata[4*(i+outX*j)+2]=0x00;
246 newdata[4*(i+outX*j)+3]=0x00;
248 newdata[4*(i+outX*j)+0]=0x00;
249 newdata[4*(i+outX*j)+1]=0x00;
250 newdata[4*(i+outX*j)+2]=0x00;
251 newdata[4*(i+outX*j)+3]=0x00;
253 newdata[4*(i+outX*j)+0]=0x00;
254 newdata[4*(i+outX*j)+1]=0x00;
255 newdata[4*(i+outX*j)+2]=0x00;
256 newdata[4*(i+outX*j)+3]=0x00;
258 newdata[4*(i+outX*j)+0]=0x00;
259 newdata[4*(i+outX*j)+1]=0x00;
260 newdata[4*(i+outX*j)+2]=0x00;
261 newdata[4*(i+outX*j)+3]=0x00;
265 newdata[4*(i+outX*j)+0]=0x00;
266 newdata[4*(i+outX*j)+1]=0x00;
267 newdata[4*(i+outX*j)+2]=0x00;
268 newdata[4*(i+outX*j)+3]=0xFF;
270 newdata[4*(i+outX*j)+0]=0x00;
271 newdata[4*(i+outX*j)+1]=0x00;
272 newdata[4*(i+outX*j)+2]=0x00;
273 newdata[4*(i+outX*j)+3]=0xFF;
275 newdata[4*(i+outX*j)+0]=0x00;
276 newdata[4*(i+outX*j)+1]=0x00;
277 newdata[4*(i+outX*j)+2]=0x00;
278 newdata[4*(i+outX*j)+3]=0xFF;
280 newdata[4*(i+outX*j)+0]=0x00;
281 newdata[4*(i+outX*j)+1]=0x00;
282 newdata[4*(i+outX*j)+2]=0x00;
283 newdata[4*(i+outX*j)+3]=0xFF;
285 if(!ilSave(IL_PNG,path))mustard(OUTPIX_MUSTARD);
290 void mustard(int mustard)
295 if(q) printf("NewpixbOTTified!\n");break;
296 case ARGUMENT_MUSTARD:
297 if(q) printf("npb inPix outPix [q]\n");break;
299 if(q) printf("inPIX mustard.\n");break;
301 if(q) printf("outPIX mustard.\n");break;
303 if(q) printf("npbPIX mustard.\n");break;
305 if(q) printf("Seaishness is mustard.\n");break;
306 case ANIMATED_MUSTARD:
307 if(q) printf("Animation is mustard.\n");break;
309 if (q) printf("Ch*rpin* mustard mustaard!\n");
312 ilDeleteImages(1, &inPix);
315 ilDeleteImages(1, &outPix);
319 ilDeleteImages(1, &npbPix);