/* ________________________________________________ C O M P U T E R V I S I O N P R O G R A M ________________________________________________ file : mask.c written by: Roger Webster, Ph.D. */ #include #include #include #include #include #include #include #include #include "Mask_ui.h" /* * Notify callback function for `Mask04Setting'. */ void Mask04Notify(item, value, event) Panel_item item; int value; Event *event; { Mask_MaskPop_objects *ip = (Mask_MaskPop_objects *) xv_get(item, XV_KEY_DATA, INSTANCE); switch(value) { case 0 : un_protect(); break; case 1 : VIS$SET_VMASK(2); break; case 2 : VIS$SET_VMASK(4); break; case 3 : VIS$SET_VMASK(8); break; case 4 : VIS$SET_VMASK(16); break; default : break; } fprintf(stderr, "Mask: Mask04Notify: value: %u\n", value); } /* * Notify callback function for `Mask48Setting'. */ void Mask4_8Notify(item, value, event) Panel_item item; int value; Event *event; { Mask_MaskPop_objects *ip = (Mask_MaskPop_objects *) xv_get(item, XV_KEY_DATA, INSTANCE); switch(value) { case 0 : VIS$SET_VMASK(32); break; case 1 : VIS$SET_VMASK(64); break; case 2 : VIS$SET_VMASK(128); break; case 3 : VIS$SET_VMASK(256); break; case 4 : VIS$SET_VMASK(512); break; default : break; } fprintf(stderr, "Mask: Mask4_8Notify: value: %u\n", value); } /* * Notify callback function for `MaskSpecialSettings'. */ void MaskSpecialNotify(item, value, event) Panel_item item; int value; Event *event; { Mask_MaskPop_objects *ip = (Mask_MaskPop_objects *) xv_get(item, XV_KEY_DATA, INSTANCE); switch(value) { case 0 : VIS$VMASK(0); binarize1(); linearize(); VIS$VMASK(); VIS$PAN (16); VIS$BLOCK (250, 100, 450, 350, 512); VIS$SET_MODE (4); break; case 1 : VIS$VMASK(0); binarize1(); linearize(); color_too(); VIS$VMASK(); VIS$PAN (16); VIS$BLOCK (250, 100, 450, 350, 512); VIS$SET_MODE(4); break; case 2 : VIS$VMASK(0); swapthelut(); linearize(); VIS$VMASK(); VIS$PAN (16); VIS$BLOCK (250, 100, 450, 350, 512); VIS$SET_MODE(4); break; default : break; } /* end case */ fprintf(stderr, "Mask: MaskSpecialNotify: value: %u\n", value); } #ifdef ROGER /***************************************************************************** This procedure defines the commands to be displayed in the command window. *****************************************************************************/ maskinit() { commsg0[0] = "plane 0"; commsg0[1] = "plane 1"; commsg0[2] = "plane 2"; commsg0[3] = "plane 3"; commsg0[4] = "plane 4"; commsg0[5] = "plane 5"; commsg0[6] = "plane 6"; commsg0[7] = "plane 7"; commsg1[0] = "plane 8"; commsg1[1] = "plane 9"; commsg1[2] = "plane 10"; commsg1[3] = "demo mode1"; commsg1[4] = "no protect"; commsg1[5] = "AOI mode4 "; commsg1[6] = "AOI mode4c"; commsg1[7] = "AOI Swap "; } #endif binarize1() { int i, values[256]; /* feedbackmode lut */ for(i=0;i<256;i++) { values[i] = (i < 128) ? 255:0; } VIS$LOAD_LUT(0, 2, values); } linearize() { int i, values[256]; for(i=0;i<256;i++) values[i] = i; VIS$LOAD_LUT(0, 0, values); for(i=0;i<256;i++) values[i] = i; VIS$LOAD_LUT(1, 0, values); VIS$LOAD_LUT(2, 0, values); VIS$LOAD_LUT(3, 0, values); } color_too() { int i; int redval[256]; int blueval[256]; int greenval[256]; for (i=1;i<255;i++) { redval[i] = i; blueval[i] = i; greenval[i] = i; } redval[0] = 255; blueval[0] = 0; greenval[0] = 0; redval[255] = 0; blueval[255] = 255; greenval[255] = 0; VIS$LOAD_LUT(1, 3, redval); VIS$LOAD_LUT(2, 3, greenval); VIS$LOAD_LUT(3, 3, blueval); } swapthelut() { int j=255; int i; int values[256]; for(i=0;i<256;i++) { values[i] = j; j--; } VIS$LOAD_LUT(0, 2, values); } un_protect() { VIS$SET_VMASK(0); VIS$SET_MODE(0); } mode1_demo() { binarize1(); /* MODE ONE DEMO */ VIS$SET_MODE(1); snap(); VIS$SELECT_LUT(1,0 /*10*/); }