t_opt *o_attr(char *segment, t_opt **opt) { int i; int l; int t; i = 1; o_init(opt); if ((l = o_nata(&((char *)segment)[i])) > 0) (*opt)->nata = ft_atoi(ft_strsub(segment, i, l)); t = l + o_flag(&((char *)segment)[i + l], (*opt), 0); if ((l = o_mfwd(&((char *)segment)[i + t])) > 0) (*opt)->mfwd = ft_atoi(ft_strsub(segment, (i + t), l)); t = t + l; if ((l = o_prec(&((char *)segment)[i + t])) > 0) (*opt)->prec = ft_atoi(ft_strsub(segment, (i + t + 1), (l - 1))); t = t + l; if ((l = o_lmod(&((char *)segment)[i + t])) > 0) (*opt)->lmod = l; if (l != 0 && l > 20) t = t + 2; else if (l != 0) t = t + 1; (*opt)->ctyp = *ft_strsub(segment, (i + t), 1); return (*(opt)); }
void main_rockets (void) { char test[512]; /* scratch space */ o_init (test, sizeof(test)); int frame_no; while (1) { o_identity (); /* reset transforms */ o_rectangle (0,0,RESX, RESY); o_set_gray (500); o_fill (); /* fill with 50% gray */ draw_rakett (20, 20, 10*frame_no++); draw_rakett (50, 40, 450+14*frame_no++); lcdDisplay(); delayms(1); } }
/***************************************************************************** FUNCTION : o_createOszi PURPOSE : creates the window GRAPH RETURNS : void NOTES : UPDATE : 08.03.95 ******************************************************************************/ void o_createOszi (void) { Widget menu,mItem,form,w1,w2,printlab; Widget Done_oszi, clear_oszi, print_oszi; Arg arg[5]; Cardinal n; char buf[40]; Colormap o_graph_col; unsigned long foreground,background; int curr_unit,test_unit, count_unit = 0; o_graph_error_scale = GRAPH_SSE; /* test whether there are output units defined. Since no error can be computed in the opposit case, the graph tool can not be used */ curr_unit = krui_getCurrentUnit(); test_unit = krui_getFirstUnit(); do{ n=krui_getUnitTType(test_unit); if( (n == 2) || (n == 7) ) count_unit = 1; }while((test_unit = krui_getNextUnit()) && (count_unit == 0)); curr_unit = krui_setCurrentUnit(curr_unit); if(count_unit == 0){ ui_confirmOk("No Output units defined!\nAn error can neither be\ncomputed nor displayed!"); return; } if(o_open) { XRaiseWindow (XtDisplay (o_displayMainWidget), XtWindow (o_displayMainWidget)); return; } o_open = 1; o_init(); sprintf (buf, "SNNS graph"); n = 0; XtSetArg(arg[n],XtNminWidth,460); n++; XtSetArg(arg[n],XtNminHeight,200); n++; XtSetArg(arg[n],XtNheight,o_WindowHeight+58); n++; XtSetArg(arg[n],XtNwidth,o_WindowWidth+10); n++; XtSetArg(arg[n],XtNborderWidth,1); n++; o_displayMainWidget = XtCreatePopupShell(buf, topLevelShellWidgetClass, ui_toplevel, arg, n); n = 0; form = XtCreateManagedWidget ("form", formWidgetClass, o_displayMainWidget, arg, n); grid_oszi = ui_xCreateToggleItem ("grid",form,NULL,NULL,NULL); ui_xSetToggleState (grid_oszi, FALSE) ; XtAddCallback (grid_oszi, XtNcallback, (XtCallbackProc) o_gridProc, NULL); print_oszi = ui_xCreateButtonItem ("print",form,grid_oszi,NULL); XtAddCallback(print_oszi, XtNcallback, (XtCallbackProc) o_printProc, NULL); if(strlen(o_printfile) == 0)sprintf(o_printfile,"./graph.ps"); printlab = ui_xCreateLabelItem("Print to file:",form,14*8,print_oszi,NULL); o_printW = ui_xCreateDialogItem ("o_printW",form,o_printfile,0, printlab,NULL); Done_oszi = ui_xCreateButtonItem ("done",form,NULL,grid_oszi); XtAddCallback(Done_oszi,XtNcallback,(XtCallbackProc) o_DoneProc,NULL); clear_oszi = ui_xCreateButtonItem ("clear",form,Done_oszi,grid_oszi); XtAddCallback(clear_oszi,XtNcallback,(XtCallbackProc) o_clearProc,NULL); w1 = ui_xCreateLabelItem ("Scale X:",form,7*8,print_oszi,grid_oszi); w2 = ui_xCreateButtonItem ("prev",form,w1,grid_oszi); XtAddCallback(w2,XtNcallback,(XtCallbackProc) o_XForwardProc,NULL); w1 = ui_xCreateButtonItem ("next",form,w2,grid_oszi); XtAddCallback(w1,XtNcallback,(XtCallbackProc) o_XBackProc,NULL); w2 = ui_xCreateLabelItem (" Scale Y:",form,9*8,w1,grid_oszi); w1 = ui_xCreateButtonItem ("prev",form,w2,grid_oszi); XtAddCallback(w1,XtNcallback,(XtCallbackProc) o_YBackProc,NULL); w2 = ui_xCreateButtonItem ("next",form,w1,grid_oszi); XtAddCallback(w2,XtNcallback,(XtCallbackProc) o_YForwardProc,NULL); w1 = ui_xCreateLabelItem (" Display:",form,9*8,w2,grid_oszi); o_scaleWidget = ui_xCreateMenuButtonItem(" SSE ",form,w1,grid_oszi); menu = XtCreatePopupShell("menu",simpleMenuWidgetClass,o_scaleWidget, NULL,ZERO); mItem = XtCreateManagedWidget(" SSE",smeBSBObjectClass,menu,NULL,ZERO); XtAddCallback(mItem,XtNcallback,(XtCallbackProc)o_set_err_scale,(caddr_t)1); mItem = XtCreateManagedWidget(" MSE",smeBSBObjectClass,menu,NULL,ZERO); XtAddCallback(mItem,XtNcallback,(XtCallbackProc)o_set_err_scale,(caddr_t)2); mItem = XtCreateManagedWidget("SSE/#out", smeBSBObjectClass,menu,NULL,ZERO); XtAddCallback(mItem,XtNcallback,(XtCallbackProc)o_set_err_scale,(caddr_t)3); o_DisplayWidget = o_xCreateScreenItem("screen",form,o_WindowWidth, o_WindowHeight,NULL,clear_oszi); XtAddEventHandler(o_DisplayWidget,StructureNotifyMask | ExposureMask, FALSE,(XtEventHandler) o_eventProc,o_display); XtAddEventHandler(form,KeyPressMask,FALSE, (XtEventHandler)ui_key_control,(Cardinal *) 0); ui_checkWindowPosition(o_displayMainWidget); XtPopup (o_displayMainWidget, XtGrabNone); o_display = XtDisplay (o_DisplayWidget); o_window = XtWindow (o_DisplayWidget); o_fontStruct = XLoadQueryFont(o_display, "6x12"); o_gc[label_gc] = XCreateGC (o_display, o_window, ZERO, NULL); o_gc[train_gc] = XCreateGC (o_display, o_window, ZERO, NULL); o_gc[test_gc] = XCreateGC (o_display, o_window, ZERO, NULL); XSetFont(o_display,o_gc[label_gc],(*o_fontStruct).fid); o_screen = DefaultScreen (o_display); o_depth = DisplayPlanes(o_display,o_screen); o_graph_col = DefaultColormap(o_display, o_screen); if(ui_col_monochromeMode == FALSE){ /* settings for black learning curve */ fg.red = 0; fg.green = 0; fg.blue = 0; fg2.red = 65535; fg2.green = 0; fg2.blue = 0; }else{ XSetLineAttributes(o_display, o_gc[test_gc],1,LineDoubleDash, CapButt,JoinMiter); fg.red = 0; fg.green = 0; fg.blue = 0; fg2.red = 0; fg2.green = 0; fg2.blue = 0; } background = WhitePixel (o_display, o_screen); XSetBackground (o_display, o_gc[train_gc], background); XSetBackground (o_display, o_gc[test_gc], background); XSetBackground (o_display, o_gc[label_gc], background); XAllocColor(o_display,o_graph_col,&fg); XAllocColor(o_display,o_graph_col,&fg2); foreground = BlackPixel (o_display, o_screen); XSetForeground (o_display, o_gc[train_gc], fg.pixel); XSetForeground (o_display, o_gc[test_gc], fg2.pixel); XSetForeground (o_display, o_gc[label_gc], foreground); XSetGraphicsExposures(o_display,o_gc[label_gc],0); XSetGraphicsExposures(o_display,o_gc[train_gc],0); XSetGraphicsExposures(o_display,o_gc[test_gc],0); o_Pixmap = XCreatePixmap(o_display,o_window, (unsigned int) o_PixmapWidth, (unsigned int) o_PixmapHeight, (unsigned int) o_depth); o_ClearPixmap(o_display,o_Pixmap,o_gc[train_gc],fg.pixel,o_screen,0,0, o_PixmapWidth,o_PixmapHeight); o_ClearPixmap(o_display,o_Pixmap,o_gc[test_gc],fg2.pixel,o_screen,0,0, o_PixmapWidth,o_PixmapHeight); XClearArea(o_display,o_window,o_OsziXPos,o_OsziYPos, (unsigned int) o_OsziWidth-1, (unsigned int) o_OsziHeight,1); o_PressPossible = 1; }
void ram(void) { int inpt,dirc,c,grows = 0,dx,dy,points,point_s=1; size_t n = 0, snake_size = 5, speed=MIN_SPEED; struct elem snake[MAX_SNAKE_LEN], food; char test[512]; /* scratch space */ o_init (test, sizeof(test)); reset(snake,&snake_size,&dirc,&speed,&points,&point_s); food = rnd(); while (1) { head: if(!(++c % speed)) { inpt = getInputRaw(); dx=DoString(0,0,IntToStrX(points,2)); dx=(SIZE_X-dx)/2; if(dx<0) dx=0; dy=(SIZE_Y-getFontHeight())/2; lcdFill(255); o_rectangle(1,0,SIZE_X-2,SIZE_Y-2); o_set_gray (0); o_fill (); //o_identity (); /* reset tranforms */ o_set_gray (50); setExtFont("UBUNTU29"); lcdSetPixel(1,1,1); DoString(dx,dy,IntToStrX(points,2)); o_set_gray (255); for(n=0;n<snake_size;++n) { o_rectangle (snake[n].x*SNAKE_DEM,snake[n].y*SNAKE_DEM,SNAKE_DEM,SNAKE_DEM); /* fill background with black */ o_fill (); /* fill with 50% { reset(snake,&snake_size); goto head; }gray */ } o_rectangle (food.x*SNAKE_DEM,food.y*SNAKE_DEM,SNAKE_DEM,SNAKE_DEM); /* fill background with black */ o_fill (); lcdDisplay(); if (inpt == BTN_UP && dirc != 1) { dirc = 3; } else if (inpt == BTN_DOWN && dirc != 3) { dirc = 1; } else if (inpt == BTN_LEFT && dirc != 0) { dirc = 2; } else if (inpt == BTN_RIGHT && dirc !=2) { dirc = 0; } // struct elem t = snake[snake_size-1]; if(dirc == 0) ++t.x; else if(dirc == 1) ++t.y; else if(dirc == 2) --t.x; else if(dirc == 3) --t.y; if(t.x < 0 || t.y < 0 || t.y > SIZE_Y/SNAKE_DEM-1 || t.x > SIZE_X/SNAKE_DEM) { reset(snake,&snake_size,&dirc,&speed,&points,&point_s); goto head; } for(n=0;n<snake_size-1;++n) { if(snake[n].x == t.x && snake[n].y == t.y) { reset(snake,&snake_size,&dirc,&speed,&points,&point_s); goto head; } else if(snake[n].x == food.x && snake[n].y == food.y) { grows = 1; ++snake_size; ++points; if(speed > MAX_SPEED) --speed; food = rnd(); } } if(!grows) { for(n=0;n<snake_size-1;++n) { snake[n] = snake[n+1]; } } else grows = 0; snake[snake_size-1] = t; } else delayms(3); } }