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; }
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); }
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; }
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; }
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; }
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)); }
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); }
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); }
//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; }
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++; } }
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; }