void NeoWindow::RedrawNNetPlot() { if ( nnet_plot == NULL ) return; Window window = FL_ObjWin( nnet_plot->mainCanvas ); int index = neo->output_creature; if ( index >= 0 ) { // Only need to redraw network structure if we're looking at a new bug if ( index != nnet_plot->mainCanvas->u_ldata ) DrawNetworkStructure(); UpdateInformation(); } else { ::XSetForeground( display, gc, fl_get_pixel( FL_COL1 ) ); // Clear the whole damn thing ::XFillRectangle( display, window, gc, 0, 0, 450, 300 ); } nnet_plot->mainCanvas->u_ldata = index; ::XFlush( display ); }
int image_displaysetup() /* Inicializa las ventanas, la paleta de colores y memoria compartida para visualizacion*/ { XGCValues gc_values; XWindowAttributes win_attributes; XColor nuevocolor; int pixelNum, numCols; int allocated_colors=0, non_allocated_colors=0; image_win= FL_ObjWin(fd_guixforms->ventana0); XGetWindowAttributes(display, image_win, &win_attributes); screen = DefaultScreen(display); XMapWindow(display, image_win); /*XSelectInput(display, image_win, ButtonPress|StructureNotifyMask);*/ gc_values.graphics_exposures = False; image_gc = XCreateGC(display, image_win, GCGraphicsExposures, &gc_values); /* Utilizan el Visual (=estructura de color) y el colormap con que este operando el programa principal con su Xforms. No crea un nuevo colormap, sino que modifica el que se estaba usando a traves de funciones de Xforms*/ vmode= fl_get_vclass(); if ((vmode==TrueColor)&&(fl_state[vmode].depth==16)) {printf("display: truecolor 16 bpp\n"); imagenA_buf = (char *) malloc(SIFNTSC_COLUMNS*SIFNTSC_ROWS*2); imagenA = XCreateImage(display,DefaultVisual(display,screen),win_attributes.depth, ZPixmap,0,imagenA_buf,SIFNTSC_COLUMNS, SIFNTSC_ROWS,8,0); imagenB_buf = (char *) malloc(SIFNTSC_COLUMNS*SIFNTSC_ROWS*2); imagenB = XCreateImage(display,DefaultVisual(display,screen),win_attributes.depth, ZPixmap,0,imagenB_buf,SIFNTSC_COLUMNS, SIFNTSC_ROWS,8,0); return win_attributes.depth; } else if ((vmode==TrueColor)&&(fl_state[vmode].depth==24)) { printf("display: truecolor 24 bpp\n"); imagenA_buf = (char *) malloc(SIFNTSC_COLUMNS*SIFNTSC_ROWS*4); imagenA = XCreateImage(display,DefaultVisual(display,screen),24, ZPixmap,0,imagenA_buf,SIFNTSC_COLUMNS, SIFNTSC_ROWS,8,0); imagenB_buf = (char *) malloc(SIFNTSC_COLUMNS*SIFNTSC_ROWS*4); imagenB = XCreateImage(display,DefaultVisual(display,screen),24, ZPixmap,0,imagenB_buf,SIFNTSC_COLUMNS, SIFNTSC_ROWS,8,0); return win_attributes.depth; } else if ((vmode==PseudoColor)&&(fl_state[vmode].depth==8)) { numCols = 256; for (pixelNum=0; pixelNum<numCols; pixelNum++) { nuevocolor.pixel=0; nuevocolor.red=pixelNum<<8; nuevocolor.green=pixelNum<<8; nuevocolor.blue=pixelNum<<8; nuevocolor.flags=DoRed|DoGreen|DoBlue; /*if (XAllocColor(display,DefaultColormap(display,screen),&nuevocolor)==False) tabla[pixelNum]=tabla[pixelNum-1];*/ if (XAllocColor(display,fl_state[vmode].colormap,&nuevocolor)==False) {tabla[pixelNum]=tabla[pixelNum-1]; non_allocated_colors++;} else {tabla[pixelNum]=nuevocolor.pixel;allocated_colors++;} } printf("display: depth= %d\n", fl_state[vmode].depth); printf("display: colormap got %d colors, %d non_allocated colors\n",allocated_colors,non_allocated_colors); imagenA_buf = (char *) malloc(SIFNTSC_COLUMNS*SIFNTSC_ROWS); imagenA = XCreateImage(display,DefaultVisual(display,screen),8, ZPixmap,0,imagenA_buf,SIFNTSC_COLUMNS, SIFNTSC_ROWS,8,0); imagenB_buf = (char *) malloc(SIFNTSC_COLUMNS*SIFNTSC_ROWS); imagenB = XCreateImage(display,DefaultVisual(display,screen),8, ZPixmap,0,imagenB_buf,SIFNTSC_COLUMNS, SIFNTSC_ROWS,8,0); pixel8bpp_rojo = fl_get_pixel(FL_RED); pixel8bpp_blanco = fl_get_pixel(FL_WHITE); pixel8bpp_amarillo = fl_get_pixel(FL_YELLOW); return win_attributes.depth; } else { perror("Unsupported color mode in X server");exit(1); } return win_attributes.depth; }