/* --------------------------------------------------------------------- */ /* - TRY.C - */ /* --------------------------------------------------------------------- */ /* - This programs tests the various functions in vks101.c and - */ /* - the ITEX calls. - */ /* --------------------------------------------------------------------- */ /* - Some necessary includes... - */ /* --------------------------------------------------------------------- */ #include #define NO 0 #define YES 1 /* --------------------------------------------------------------------- */ /* - Global variables and structures... - */ /* --------------------------------------------------------------------- */ int result; int x,y; int values[1024]; int harray[1024]; int histo[256]; int hex_amount; main() { int base, i, result, r; char req; int x1, y1, x2, y2; int dx, threshold; int length, xvals[1024], yvals[1024]; VIS$OPEN(); VIS$INIT_FB(); VIS$INIT_LUTS(); VIS$VIEW(); /*, setcamera(0);*/ VIS$SET_VIDEO_CHANNEL(0); do { printf ("%s", "command "); req = getchar(); getchar(); if (req != 'e') { switch (req) { case 'a': /* test box */ { printf ("threshold ??\n"); scanf ("%d", &x1); binarize(x1); getchar(); break; } case 'b': /* test */ { VIS$VIEW(); binarize(128); break; } case 'O': /* test OBT */ { VIS$FREEZE(); /* VIS$OPTIMAL_THRESHOLD(minx,miny,maxx,maxy,histo,color, smooth_factor);*/ threshold = VIS$OPTIMAL_THRESHOLD( 20, 20 , 500, 400, histo, 0, 7); printf ("Threshold is %d\n", threshold); VIS$THRESHOLD_LUT ( 0, 8, threshold); break; } case 'd': /* do it from image stored on file */ { VIS$FREEZE(); VIS$DRAW_BOX (100, 100, 300, 300, 0, 10); break; } case 'r': /* test fill area */ { VIS$SET_SCREEN(255); VIS$CIRCLE( 300, 300, 20, 1 ); VIS$FILL_AREA (300,300, 1); VIS$CIRCLE( 200, 200, 20, 1 ); VIS$FILL_AREA (200,200, 1); VIS$CIRCLE( 400, 400, 20, 1 ); VIS$FILL_AREA (400,400, 1); VIS$CIRCLE( 400, 200, 20, 1 ); VIS$FILL_AREA (400,200, 1); VIS$CIRCLE( 200, 400, 20, 1 ); VIS$FILL_AREA (200,400, 1); break; } case 'c': /* centroid on a static circle */ { VIS$SET_SCREEN(0); VIS$FILL_CIRCLE( 300, 300, 50, 255 ); VIS$DRAW_BOX (250, 250, 350, 350, 255, 5); break; } case 'H': /* - RWW */ { /*VIS$CS455_HISTOGRAM(x1,y1,x2,y2,equalize,harray, color); */ VIS$FREEZE(); VIS$DRAW_BOX (20,20, 200,200, 255, 5); VIS$CS455_HISTOGRAM(20,20, 200,200,NO, harray, 255); break; } case 'w': /* - RWW */ { VIS$WEDGE(); break; } case 'h': /* - RWW */ { VIS$HISTOGRAM(20,20, 400,400,NO, 255); break; } case 'f': { VIS$FREEZE(); break; } case 'i': { VIS$INIT_FB(); VIS$INIT_LUTS(); VIS$VIEW(); break; } case 'v': { VIS$VIEW(); break; } case 'B': { VIS$VIEW(); VIS$DYNAMIC_OUTLUT(1); VIS$VMASK(); VIS$BLOCK(100,100,350,350,512); break; } case 'V': { VIS$GET_VIDEO_CHANNEL (&x1); printf ("video channel: %d\n", x1); break; } case 'g': { printf ("how fine grained ??\n"); scanf ("%d", &x1); getchar(); printf ("grey shade ??\n"); scanf ("%d", &y1); getchar(); VIS$GRID (x1, y1); break; } case 'G': { VIS$INIT_FB(); printf ("how fine grained ??\n"); binarize_in(71); VIS$SELECT_LUT(0,0); scanf ("%d", &x1); getchar(); VIS$DYNAMIC_OUTLUT(1); VIS$VMASK(); VIS$GRID (x1, 512); VIS$VIEW(); break; } #ifdef ROGER case 'H': { VIS$READ_PAN_SCROLL(&x1, &x2); printf ("pan: %d scroll: %d\n", x1,x2); break; } #endif case 'I': { printf ("FROM x??\n"); scanf ("%d", &x1); getchar(); printf ("FROM y??\n"); scanf ("%d", &y1); getchar(); printf ("TO x??\n"); scanf ("%d", &x2); getchar(); printf ("TO y??\n"); scanf ("%d", &y2); getchar(); VIS$DRAWLINE (x1,y1, x2,y2,0); break; } case 's': { VIS$GET_XSPIN (&hex_amount); printf ("hex X spin reg %x\n", hex_amount); printf ("scroll 0 ..1023 ??\n"); scanf ("%d", &y2); VIS$SCROLL(y2); VIS$PAN(0); break; } case '9': { VIS$GET_XSPIN (&hex_amount); printf ("hex X spin reg %x\n", hex_amount); /*VIS$SET_XSPIN (0x0010);*/ VIS$SET_XSPIN (0x0000); VIS$PAN(0); VIS$SCROLL(483); VIS$SELECT_LUT(0,0); printf ("scrolling down\n"); VIS$FREEZE(); printf ("scrolling back up\n"); VIS$SELECT_LUT(0,7); VIS$SCROLL(0); /*VIS$VIEW();*/ break; } case '2': { VIS$GET_XSPIN (&hex_amount); printf ("hex X spin reg %x\n", hex_amount); /*VIS$SET_XSPIN (0x0010);*/ VIS$SET_XSPIN (0x0000); VIS$COPY_BLOCK (0,0, 639, 479, 0, 490); break; } case 'z': { printf ("zoom factor 0 ..3 ??\n"); scanf ("%d", &y2); zoom(y2); VIS$GET_ZOOM(&x1); printf ("zoom factor: %d\n", x1); break; } } /* end case */ } /* end if */ } while (req != 'e'); } /* end function */ binarize (threshold) int threshold; { int values[256], i; for(i=0;i<256;i++) { if (i > threshold) values[i] = 255; else values[i] = 0; } VIS$LOAD_LUT(0, 7, values); } binarize_out() { int values[256], i; for(i=0;i<256;i++) { values[i] = i; } values[4] = 255; VIS$LOAD_LUT(1, 0, values); values[4] = 0; VIS$LOAD_LUT(2, 0, values); values[4] = 0; VIS$LOAD_LUT(3, 0, values); values[0] = 255; VIS$LOAD_LUT(1, 1, values); values[0] = 0; VIS$LOAD_LUT(2, 1, values); values[0] = 0; VIS$LOAD_LUT(3, 1, values); } binarize_in (threshold) { /* */ int values[256], i; for(i=0;i<256;i++) { if (i < threshold) values[i] = 1; else values[i] = 0; } VIS$LOAD_LUT(0, 13, values); } #ifdef ROGER #endif