-// This is part of Pico Library\r
-\r
-// (c) Copyright 2004 Dave, All rights reserved.\r
-// (c) Copyright 2006 notaz, All rights reserved.\r
-// Free for non-commercial use.\r
-\r
-// For commercial use, separate licencing terms must be obtained.\r
-\r
-\r
-#include "pico_int.h"\r
-\r
-int PicuAnd=0xf7de;\r
-\r
-// Quick low-quality conversion of 320 to 176:\r
-int PicuQuick(unsigned short *dest,unsigned short *src)\r
-{\r
- unsigned short *end=NULL;\r
-\r
- src+=13; end=src+290;\r
- dest++;\r
-\r
- do\r
- {\r
- *dest++=*src++;\r
- *dest++=*src; src+=2;\r
- *dest++=*src; src+=2;\r
- *dest++=*src++;\r
- *dest++=*src; src+=2;\r
- *dest++=*src; src+=2;\r
- }\r
- while (src<end);\r
-\r
- return 0;\r
-}\r
-\r
-// Shrink the pixels in src/srcLen, to the screen line pointed to by dest/destLen\r
-int PicuShrink(unsigned short *dest,int destLen,unsigned short *src,int srcLen)\r
-{\r
- unsigned short *end=NULL;\r
- int bias=0,pa=0,sub=0;\r
-\r
- end=dest+destLen;\r
- sub=srcLen-destLen;\r
-\r
- do\r
- {\r
- pa=*src++; bias-=sub;\r
- if (bias<0) { pa+=*src++; pa>>=1; bias+=destLen; }\r
- *dest++=(unsigned short)pa;\r
-\r
- pa=*src++; bias-=sub;\r
- if (bias<0) { pa+=*src++; pa>>=1; bias+=destLen; }\r
- *dest++=(unsigned short)pa;\r
- }\r
- while (dest<end);\r
- \r
- return 0;\r
-}\r
-\r
-// same thing, only reversed (dest is in pre-decremental mode)\r
-int PicuShrinkReverse(unsigned short *dest,int destLen,unsigned short *src,int srcLen)\r
-{\r
- unsigned short *end=NULL;\r
- int bias=0,pa=0,sub=0;\r
-\r
- end=dest-destLen;\r
- sub=srcLen-destLen;\r
-\r
- do\r
- {\r
- pa=*src++; bias-=sub;\r
- if (bias<0) { pa+=*src++; pa>>=1; bias+=destLen; }\r
- *(--dest)=(unsigned short)pa;\r
-\r
- pa=*src++; bias-=sub;\r
- if (bias<0) { pa+=*src++; pa>>=1; bias+=destLen; }\r
- *(--dest)=(unsigned short)pa;\r
- }\r
- while (dest>end);\r
- \r
- return 0;\r
-}\r
-\r
-int PicuMerge(unsigned short *dest,int destLen,unsigned short *src,int srcLen)\r
-{\r
- unsigned short *end=NULL;\r
- int bias=0,pa=0,mask=PicuAnd,sub=0;\r
-\r
- end=dest+destLen;\r
- sub=srcLen-destLen;\r
-\r
- do\r
- {\r
- pa=*src++; bias-=sub;\r
- if (bias<0) { pa+=*src++; pa>>=1; bias+=destLen; }\r
- pa&=mask; pa+=(*dest)&mask; pa>>=1;\r
- *dest++=(unsigned short)pa;\r
-\r
- pa=*src++; bias-=sub;\r
- if (bias<0) { pa+=*src++; pa>>=1; bias+=destLen; }\r
- pa&=mask; pa+=(*dest)&mask; pa>>=1;\r
- *dest++=(unsigned short)pa;\r
- }\r
- while (dest<end);\r
- \r
- return 0;\r
-}\r
-\r