#include <stdio.h>
unsigned char buf1[16*24] ={0};
unsigned char buf2[16*24] ={0};
void StitchingAlgorithm(unsigned char xAll,unsigned char yAll,unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,unsigned char *buf1,unsigned char *buf2);
int main ()
{
StitchingAlgorithm(16,24,5,12,10,22,&buf1[0],&buf2[0]);
}
void StitchingAlgorithm(unsigned char xAll,unsigned char yAll,unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,unsigned char *buf1,unsigned char *buf2)
{
unsigned char temp = 0;
unsigned int xDifference = 0, yDifference = 0;
unsigned int ystart =0,dataStart = 0;
unsigned int i=0,j=0,k=0,w=0;
memset(buf1,0,sizeof(buf1));
if(yAll<8)
{
yAll = 1;
}
else
{
yAll = (yAll/8);
}
dataStart = y2;
xDifference = x2-x1;
yDifference = y2-y1;
ystart = x1*yAll+ y1/8;
printf("ystart %d\r",ystart);
for(j=x1;j<(x2+1);j++)
{
ystart = x1*yAll+ y1/8;
x1++;
temp = buf1[ystart];
w = y1%8 ;
k = yDifference + w;
for(i=w;i<(k+1); i++)
{
if(i<8)
{
temp |= 0x80 >> i;
if( i == 7)
{
buf1[ystart++] = temp;
temp = buf1[ystart];
}
}
else
{
temp = buf1[ystart];
i = 0;
k = k-8;
temp |= 0x80 >> i;
}
}
buf1[ystart++] = temp;
}
for(i=0;i<xAll*yAll;i++)
{
printf("buf1[%d] %d ",i,buf1[i]);
i++;
printf("buf1[%d] %d \r",i,buf1[i]);
}
}