static void osdpercent(int duration, int min, int max, int val, const char *desc, const char *unit) { /* * prints a bar for setting values */ float step; int where, i; step = (float)screen_w / (float)(max - min); where = (val - min) * step; osdmessage (duration, "%s: %i%s", desc, val, unit); posbar[0] = '|'; posbar[screen_w - 1] = '|'; for (i = 0; i < screen_w; i++) { if (i == where) posbar[i] = '#'; else posbar[i] = '-'; } if (where != 0) posbar[0] = '|'; if (where != (screen_w - 1)) posbar[screen_w - 1] = '|'; posbar[screen_w] = '\0'; }
static void osdpercent(int duration, int deko, int min, int max, int val, const char * desc, const char * unit) { /* * prints a bar for setting values */ float step; int where; int i; step=(float)aa_scrwidth(c) /(float)(max-min); where=(val-min)*step; osdmessage(duration,deko,"%s: %i%s",desc, val, unit); posbar[0]='|'; posbar[aa_scrwidth(c)-1]='|'; for (i=0;i<aa_scrwidth(c);i++){ if (i==where) posbar[i]='#'; else posbar[i]='-'; } if (where!=0) posbar[0]='|'; if (where!=(aa_scrwidth(c)-1) ) posbar[aa_scrwidth(c)-1]='|'; posbar[aa_scrwidth(c)]='\0'; }
static void check_events (void) { unsigned int cev; if ((cev = caca_get_event(CACA_EVENT_ANY))) { if (cev & CACA_EVENT_RESIZE) { caca_refresh(); resize(); } else if (cev & CACA_EVENT_KEY_RELEASE) { int key = (cev & 0x00ffffff); enum caca_feature cf; switch (key) { case 'd': case 'D': /* Toggle dithering method */ cf = 1 + caca_get_feature(CACA_DITHERING); if (cf > CACA_DITHERING_MAX) cf = CACA_DITHERING_MIN; caca_set_feature(cf); osdmessage(MESSAGE_DURATION, "Using %s", caca_get_feature_name(cf)); break; case 'a': case 'A': /* Toggle antialiasing method */ cf = 1 + caca_get_feature(CACA_ANTIALIASING); if (cf > CACA_ANTIALIASING_MAX) cf = CACA_ANTIALIASING_MIN; caca_set_feature(cf); osdmessage(MESSAGE_DURATION, "Using %s", caca_get_feature_name(cf)); break; case 'b': case 'B': /* Toggle background method */ cf = 1 + caca_get_feature(CACA_BACKGROUND); if (cf > CACA_BACKGROUND_MAX) cf = CACA_BACKGROUND_MIN; caca_set_feature(cf); osdmessage(MESSAGE_DURATION, "Using %s", caca_get_feature_name(cf)); break; case CACA_KEY_UP: mplayer_put_key(KEY_UP); break; case CACA_KEY_DOWN: mplayer_put_key(KEY_DOWN); break; case CACA_KEY_LEFT: mplayer_put_key(KEY_LEFT); break; case CACA_KEY_RIGHT: mplayer_put_key(KEY_RIGHT); break; case CACA_KEY_ESCAPE: mplayer_put_key(KEY_ESC); break; case CACA_KEY_PAGEUP: mplayer_put_key(KEY_PAGE_UP); break; case CACA_KEY_PAGEDOWN: mplayer_put_key(KEY_PAGE_DOWN); break; case CACA_KEY_RETURN: mplayer_put_key(KEY_ENTER); break; case CACA_KEY_HOME: mplayer_put_key(KEY_HOME); break; case CACA_KEY_END: mplayer_put_key(KEY_END); break; default: if (key <= 255) mplayer_put_key (key); break; } } } }
static void check_events(struct vo *vo) { caca_event_t cev; while (caca_get_event(display, CACA_EVENT_ANY, &cev, 0)) { switch (cev.type) { case CACA_EVENT_RESIZE: caca_refresh_display(display); resize(); break; case CACA_EVENT_QUIT: mplayer_put_key(vo->key_fifo, KEY_CLOSE_WIN); break; case CACA_EVENT_MOUSE_MOTION: vo_mouse_movement(vo, cev.data.mouse.x, cev.data.mouse.y); break; case CACA_EVENT_MOUSE_PRESS: if (!vo_nomouse_input) mplayer_put_key(vo->key_fifo, (MOUSE_BTN0 + cev.data.mouse.button - 1) | MP_KEY_DOWN); break; case CACA_EVENT_MOUSE_RELEASE: if (!vo_nomouse_input) mplayer_put_key(vo->key_fifo, MOUSE_BTN0 + cev.data.mouse.button - 1); break; case CACA_EVENT_KEY_PRESS: { int key = cev.data.key.ch; int mpkey = lookup_keymap_table(keysym_map, key); const char *msg_name; if (mpkey) mplayer_put_key(vo->key_fifo, mpkey); else switch (key) { case 'd': case 'D': /* Toggle dithering algorithm */ set_next_str(caca_get_dither_algorithm_list(dither), &dither_algo, &msg_name); caca_set_dither_algorithm(dither, dither_algo); osdmessage(MESSAGE_DURATION, "Using %s", msg_name); break; case 'a': case 'A': /* Toggle antialiasing method */ set_next_str(caca_get_dither_antialias_list(dither), &dither_antialias, &msg_name); caca_set_dither_antialias(dither, dither_antialias); osdmessage(MESSAGE_DURATION, "Using %s", msg_name); break; case 'h': case 'H': /* Toggle charset method */ set_next_str(caca_get_dither_charset_list(dither), &dither_charset, &msg_name); caca_set_dither_charset(dither, dither_charset); osdmessage(MESSAGE_DURATION, "Using %s", msg_name); break; case 'c': case 'C': /* Toggle color method */ set_next_str(caca_get_dither_color_list(dither), &dither_color, &msg_name); caca_set_dither_color(dither, dither_color); osdmessage(MESSAGE_DURATION, "Using %s", msg_name); break; default: if (key <= 255) mplayer_put_key(vo->key_fifo, key); break; } } } } }
static void check_events(void) { /* * any events? * called by show_image and mplayer */ int key; while ((key=aa_getevent(c,0))!=AA_NONE ){ if (key>255){ /* some conversations */ switch (key) { case AA_UP: mplayer_put_key(KEY_UP); break; case AA_DOWN: mplayer_put_key(KEY_DOWN); break; case AA_LEFT: mplayer_put_key(KEY_LEFT); break; case AA_RIGHT: mplayer_put_key(KEY_RIGHT); break; case AA_ESC: mplayer_put_key(KEY_ESC); break; case 65765: mplayer_put_key(KEY_PAGE_UP); break; case 65766: mplayer_put_key(KEY_PAGE_DOWN); break; default: continue; /* aa lib special key */ break; } } if (key=='a' || key=='A'){ aaconfigmode=!aaconfigmode; osdmessage(MESSAGE_DURATION, 1, "aa config mode is now %s", aaconfigmode==1 ? "on. use keys 5-7" : "off"); } if (aaconfigmode==1) { switch (key) { /* AA image controls */ case '5': fast=!fast; osdmessage(MESSAGE_DURATION, 1, "Fast mode is now %s", fast==1 ? "on" : "off"); break; case '6': if (p->dither==AA_FLOYD_S){ p->dither=AA_NONE; osdmessage(MESSAGE_DURATION, 1, "Dithering: Off"); }else if (p->dither==AA_NONE){ p->dither=AA_ERRORDISTRIB; osdmessage(MESSAGE_DURATION, 1, "Dithering: Error Distribution"); }else if (p->dither==AA_ERRORDISTRIB){ p->dither=AA_FLOYD_S; osdmessage(MESSAGE_DURATION, 1, "Dithering: Floyd Steinberg"); } break; case '7': p->inversion=!p->inversion; osdmessage(MESSAGE_DURATION, 1, "Invert mode is now %s", p->inversion==1 ? "on" : "off"); break; default : /* nothing if we're interested in? * the mplayer should handle it! */ mplayer_put_key(key); break; } }// aaconfigmode else mplayer_put_key(key); } }
static int config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format) { /* * main init * called by mplayer */ int i; aspect_save_orig(width,height); aspect_save_prescale(d_width,d_height); src_height = height; src_width = width; image_format = format; /* nothing will change its size, be we need some values initialized */ resize(); /* now init our own 'font' */ if(!vo_font_save) vo_font_save = vo_font; if(vo_font == vo_font_save) { vo_font=malloc(sizeof(font_desc_t));//if(!desc) return NULL; memset(vo_font,0,sizeof(font_desc_t)); vo_font->pic_a[0]=malloc(sizeof(raw_file)); memset(vo_font->pic_a[0],0,sizeof(raw_file)); vo_font->pic_b[0]=malloc(sizeof(raw_file)); memset(vo_font->pic_b[0],0,sizeof(raw_file)); #ifdef CONFIG_FREETYPE vo_font->dynamic = 0; #endif vo_font->spacewidth=1; vo_font->charspace=0; vo_font->height=1; vo_font->pic_a[0]->bmp=malloc(255); vo_font->pic_a[0]->pal=NULL; vo_font->pic_b[0]->bmp=malloc(255); vo_font->pic_b[0]->pal=NULL; vo_font->pic_a[0]->w=1; vo_font->pic_a[0]->h=1; for (i=0; i<255; i++){ vo_font->width[i]=1; vo_font->font[i]=0; vo_font->start[i]=i; vo_font->pic_a[0]->bmp[i]=i; vo_font->pic_b[0]->bmp[i]=i; } } /* say hello */ osdmessage(5, 1, "Welcome to ASCII ART MPlayer"); mp_msg(MSGT_VO,MSGL_V,"VO: [aa] screendriver: %s\n", c->driver->name); mp_msg(MSGT_VO,MSGL_V,"VO: [aa] keyboarddriver: %s\n", c->kbddriver->name); mp_msg(MSGT_VO,MSGL_INFO, "\n" "Important suboptions\n" "\textended use use all 256 characters\n" "\teight use eight bit ascii\n" "\tdriver set recommended aalib driver (X11,curses,linux)\n" "\thelp to see all options provided by aalib\n" "\n" "AA-MPlayer Keys\n" "\t1 : contrast -\n" "\t2 : contrast +\n" "\t3 : brightness -\n" "\t4 : brightness +\n" "\t5 : fast rendering\n" "\t6 : dithering\n" "\t7 : invert image\n" "\ta : toggles between aa and mplayer control\n" "\n" "All other keys are MPlayer defaults.\n" ); return 0; }