Пример #1
0
IMAGE Difference (IMAGE a, IMAGE b)
{
	IMAGE t=0;
	int i=0, j=0, rmax=0, rmin=0, cmax=0, cmin=0;

	MinMax (a, b, &rmax, &cmax, &rmin, &cmin);
	t = newimage (rmax-rmin+1, cmax-cmin+1);   
	t->info->oi = -rmin;    t->info->oj = -cmin;
	if (t == 0)
	{
		printf ("Out of storage in Difference!\n");
		exit (1);
	}

	for (i=rmin; i<rmax; i++)
	{
	  for (j=cmin; j< cmax; j++)
	  {
	    if (pget(a,i,j)==1 && pget(b,i,j)!=1)
		  pset (t, i, j, 1);
	    else  pset (t, i, j, 0); 
	  }
	}
	return t;
}
Пример #2
0
double bmpimage::pget(double x, double y) const
{
  if(int(x)<0 || int(x)>=width || int(y)<0 || int(y)>=height) return plen1-1;
  int i=int(floor(x)), j=int(floor(y));
  if(i<0) i=0; if(i>=width) i=width-1;
  if(j<0) j=0; if(j>=height) j=height-1;
  return (pget(i,j)*(i+1-x)+pget(i+1,j)*(x-i))*(j+1-y)+(pget(i,j+1)*(i+1-x)+pget(i+1,j+1)*(x-i))*(y-j);
}
Пример #3
0
int SubSet (IMAGE a, IMAGE b)
{
	int i=0, j=0;
	int rmax=0, rmin=0, cmax=0, cmin=0;

	MinMax (a, b, &rmax, &cmax, &rmin, &cmin);
	for (i=rmin; i<rmax; i++)
	  for (j=cmin; j< cmax; j++)
	    if (pget(a,i,j)==1 && pget(b,i,j)==0)
	      return 0;
	return 1;
}
Пример #4
0
IMAGE Intersection (IMAGE a, IMAGE b)
{
	IMAGE t=0;
	int i=0, j=0, rmin=0, rmax=0, cmin=0, cmax=0;

	MinMax (a, b, &rmax, &cmax, &rmin, &cmin);
	t = newimage (rmax-rmin, cmax-cmin);
	t->info->oi = -rmin; t->info->oj = -cmin;
	for (i=rmin; i<rmax; i++)
	  for (j=cmin; j< cmax; j++)
	    if (pget(a,i,j)==1 && pget(b,i,j)==1)
		pset(t, i,j,1);
	    else pset (t, i, j, 0);
	return t;
}
Пример #5
0
int ImCompare (IMAGE a, IMAGE b)
{
	int i=0, j=0, rmin=0, rmax=0, cmin=0, cmax=0, x=0, y=0;

	MinMax (a, b, &rmax, &cmax, &rmin, &cmin);
 
	for (i=rmin; i<rmax; i++)
	  for (j=cmin; j< cmax; j++)
	  {
	    x = pget (a, i, j);
	    y = pget (b, i, j);
	    if (x==1 && y == 0) return 0;
	    if (x==0 && y == 1) return 0;
	  }
	return 1;
}
Пример #6
0
int do_interface(void)
{
    int i = 0;
    int pcm = 0;
    int pno = 0;
    int recv_length = 0;
    float val = 0;
    unsigned char buf[128];

    InitUart2(9600);
    //InitUart2(115200);

    while(1)
    {
        SendUart2("123456789012345678901234", 20);
        recv_length = RecvUart2(buf, 128);
        pset(1, 1, 1);
        sleep(1);
        //SendUart2("test uart2", 10);
        SendUart2("123456789012345678901234", 20);
        recv_length = RecvUart2(buf, 128);
        pset(1, 2, 1);
        sleep(1);
        //SendUart2("test uart2", 10);
        SendUart2("123456789012345678901234", 20);
        recv_length = RecvUart2(buf, 128);
        pset(1, 3, 1);
        sleep(1);
        //SendUart2("test uart2", 10);
        SendUart2("123456789012345678901234", 20);
        recv_length = RecvUart2(buf, 128);
        pset(1, 4, 1);
        sleep(1);
    }

    val = pget(1, 1);
    printf("val = %f\n", val);
    val = pget(1, 2);
    printf("val = %f\n", val);
    val = pget(1, 3);
    printf("val = %f\n", val);
    val = pget(1, 4);
    printf("val = %f\n", val);

    printf("short = %d\n", sizeof(unsigned short));
}
Пример #7
0
static int
filemon_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag __unused,
    struct thread *td)
{
	int error = 0;
	struct filemon *filemon;
	struct proc *p;
	cap_rights_t rights;

	if ((error = devfs_get_cdevpriv((void **) &filemon)) != 0)
		return (error);

	sx_xlock(&filemon->lock);

	switch (cmd) {
	/* Set the output file descriptor. */
	case FILEMON_SET_FD:
		if (filemon->fp != NULL) {
			error = EEXIST;
			break;
		}

		error = fget_write(td, *(int *)data,
		    cap_rights_init(&rights, CAP_PWRITE),
		    &filemon->fp);
		if (error == 0)
			/* Write the file header. */
			filemon_write_header(filemon);
		break;

	/* Set the monitored process ID. */
	case FILEMON_SET_PID:
		/* Invalidate any existing processes already set. */
		filemon_untrack_processes(filemon);

		error = pget(*((pid_t *)data),
		    PGET_CANDEBUG | PGET_NOTWEXIT | PGET_NOTINEXEC, &p);
		if (error == 0) {
			KASSERT(p->p_filemon != filemon,
			    ("%s: proc %p didn't untrack filemon %p",
			    __func__, p, filemon));
			error = filemon_attach_proc(filemon, p);
			PROC_UNLOCK(p);
		}
		break;

	default:
		error = EINVAL;
		break;
	}

	sx_xunlock(&filemon->lock);
	return (error);
}
Пример #8
0
static int
filemon_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag __unused,
    struct thread *td)
{
	int error = 0;
	struct filemon *filemon;
	struct proc *p;
#if __FreeBSD_version >= 900041
	cap_rights_t rights;
#endif

	devfs_get_cdevpriv((void **) &filemon);

	switch (cmd) {
	/* Set the output file descriptor. */
	case FILEMON_SET_FD:
		error = fget_write(td, *(int *)data,
#if __FreeBSD_version >= 900041
		    cap_rights_init(&rights, CAP_PWRITE),
#endif
		    &filemon->fp);
		if (error == 0)
			/* Write the file header. */
			filemon_comment(filemon);
		break;

	/* Set the monitored process ID. */
	case FILEMON_SET_PID:
		error = pget(*((pid_t *)data), PGET_CANDEBUG | PGET_NOTWEXIT,
		    &p);
		if (error == 0) {
			filemon->pid = p->p_pid;
			PROC_UNLOCK(p);
		}
		break;

	default:
		error = EINVAL;
		break;
	}

	return (error);
}
Пример #9
0
//producer sequence
void *parse_thread(){
	
	Node *page_content;
	while(1){
		pthread_mutex_lock(&p_lock);

		//if parse queue is empty, wait until dowloader gives something
		while(buff_parse->parseItems == 0){

			pthread_cond_wait(&pempty, &p_lock);

		}
		page_content = pget();
		pthread_mutex_unlock(&p_lock);
		parse(page_content->parent_link, page_content->data); //will implement the pthread_wait within
		free(page_content);
	}
	return NULL;
}
Пример #10
0
void	prt(int x,int y,char *txt)
{
	int	x2w,x2,y2,y2w=y+32,sx,d;
	while(*txt)
	{
		x2w=fonaw[*txt]+x;
		sx=fonap[*txt];
		for(x2=x;x2<x2w;x2++)
		{
			for(y2=y;y2<y2w;y2++)
			{
				d=font[y2-y][sx];
				pset(x2,y2,pget(x2,y2)|d);
			}
			sx++;
		}
		x=x2+2;
		txt++;
	}
}
Пример #11
0
IMAGE SetAPixel (IMAGE a, PIXEL p)
{
	int i=0, j=0, row=0, col=0;
	int rmin=0, rmax=0, cmin=0, cmax=0;
	IMAGE t=0;

	row = ptoi(a, p->row);  col = ptoj(a, p->col);
	if (row > a->info->nr) rmax = row; else rmax = a->info->nr;
	if (col > a->info->nc) cmax = col; else cmax = a->info->nc;
	if (row < 0) rmin = row; else rmin = 0;
	if (col < 0) cmin = col; else cmin = 0;
	if (range(a, row, col)==0)
	{
	  t = newimage (rmax-rmin, cmax-cmin);
	  t->info->oi = -rmin; t->info->oj = -cmin;
	  for (i=rmin; i<rmax; i++)
	    for (j=cmin; j<cmax; j++)
	      pset(t, i, j, pget(a, i, j));
	  pset (t, p->row, p->col, 1);
	  return t;
	}
	a->data[row][col] = 1;
	return a;
}