/** * This function allocates and initializes a aa vout method. */ static int Open(vlc_object_t *object) { vout_display_t *vd = (vout_display_t *)object; vout_display_sys_t *sys; #ifndef _WIN32 if (!vlc_xlib_init (object)) return VLC_EGENERIC; #endif /* Allocate structure */ vd->sys = sys = calloc(1, sizeof(*sys)); if (!sys) return VLC_ENOMEM; /* Don't parse any options, but take $AAOPTS into account */ aa_parseoptions(NULL, NULL, NULL, NULL); /* */ sys->aa_context = aa_autoinit(&aa_defparams); if (!sys->aa_context) { msg_Err(vd, "cannot initialize aalib"); goto error; } vout_display_DeleteWindow(vd, NULL); aa_autoinitkbd(sys->aa_context, 0); aa_autoinitmouse(sys->aa_context, AA_MOUSEALLMASK); /* */ video_format_t fmt = vd->fmt; fmt.i_chroma = VLC_CODEC_RGB8; fmt.i_width = aa_imgwidth(sys->aa_context); fmt.i_height = aa_imgheight(sys->aa_context); fmt.i_visible_width = fmt.i_width; fmt.i_visible_height = fmt.i_height; /* Setup vout_display now that everything is fine */ vd->fmt = fmt; vd->info.has_pictures_invalid = true; vd->info.needs_event_thread = true; vd->pool = Pool; vd->prepare = Prepare; vd->display = PictureDisplay; vd->control = Control; vd->manage = Manage; /* Inspect initial configuration and send correction events * FIXME how to handle aspect ratio with aa ? */ vout_display_SendEventDisplaySize(vd, fmt.i_width, fmt.i_height); return VLC_SUCCESS; error: if (sys && sys->aa_context) aa_close(sys->aa_context); free(sys); return VLC_EGENERIC; }
/***************************************************************************** * Create: allocates aa video thread output method ***************************************************************************** * This function allocates and initializes a aa vout method. *****************************************************************************/ static int Create( vlc_object_t *p_this ) { vout_thread_t *p_vout = (vout_thread_t *)p_this; /* Allocate structure */ p_vout->p_sys = malloc( sizeof( vout_sys_t ) ); if( p_vout->p_sys == NULL ) { msg_Err( p_vout, "out of memory" ); return( 1 ); } /* Don't parse any options, but take $AAOPTS into account */ aa_parseoptions( NULL, NULL, NULL, NULL ); if (!(p_vout->p_sys->aa_context = aa_autoinit(&aa_defparams))) { msg_Err( p_vout, "cannot initialize aalib" ); return( 1 ); } p_vout->pf_init = Init; p_vout->pf_end = End; p_vout->pf_manage = Manage; p_vout->pf_render = Render; p_vout->pf_display = Display; p_vout->p_sys->i_width = aa_imgwidth(p_vout->p_sys->aa_context); p_vout->p_sys->i_height = aa_imgheight(p_vout->p_sys->aa_context); aa_autoinitkbd( p_vout->p_sys->aa_context, 0 ); aa_autoinitmouse( p_vout->p_sys->aa_context, AA_MOUSEPRESSMASK ); aa_hidemouse( p_vout->p_sys->aa_context ); return( 0 ); }
int AA_VideoInit(_THIS, SDL_PixelFormat *vformat) { int keyboard; int i; /* Initialize all variables that we clean on shutdown */ for ( i=0; i<SDL_NUMMODES; ++i ) { SDL_modelist[i] = SDL_malloc(sizeof(SDL_Rect)); SDL_modelist[i]->x = SDL_modelist[i]->y = 0; } /* Modes sorted largest to smallest */ SDL_modelist[0]->w = 1024; SDL_modelist[0]->h = 768; SDL_modelist[1]->w = 800; SDL_modelist[1]->h = 600; SDL_modelist[2]->w = 640; SDL_modelist[2]->h = 480; SDL_modelist[3]->w = 320; SDL_modelist[3]->h = 400; SDL_modelist[4]->w = 320; SDL_modelist[4]->h = 240; SDL_modelist[5]->w = 320; SDL_modelist[5]->h = 200; SDL_modelist[6] = NULL; /* Initialize the library */ AA_mutex = SDL_CreateMutex(); aa_parseoptions (NULL, NULL, NULL, NULL); AA_context = aa_autoinit(&aa_defparams); if ( ! AA_context ) { SDL_SetError("Unable to initialize AAlib"); return(-1); } /* Enable mouse and keyboard support */ if ( ! aa_autoinitkbd (AA_context, AA_SENDRELEASE) ) { SDL_SetError("Unable to initialize AAlib keyboard"); return(-1); } if ( ! aa_autoinitmouse (AA_context, AA_SENDRELEASE) ) { fprintf(stderr,"Warning: Unable to initialize AAlib mouse"); } AA_rparams = aa_getrenderparams(); local_this = this; aa_resizehandler(AA_context, AA_ResizeHandler); fprintf(stderr,"Using AAlib driver: %s (%s)\n", AA_context->driver->name, AA_context->driver->shortname); AA_in_x11 = (SDL_strcmp(AA_context->driver->shortname,"X11") == 0); /* Determine the screen depth (use default 8-bit depth) */ vformat->BitsPerPixel = 8; vformat->BytesPerPixel = 1; /* We're done! */ return(0); }
int main(int argc, char **argv) { aa_context *c; int i, y; char s[256]; aa_renderparams *p; strcpy(s, "line editor."); if (!aa_parseoptions(NULL, NULL, &argc, argv) || argc != 1) { printf("%s\n", aa_help); exit(1); } c = aa_autoinit(&aa_defparams); if (c == NULL) { printf("Can not intialize aalib\n"); exit(2); } if (!aa_autoinitkbd(c, 0)) { printf("Can not intialize keyboard\n"); aa_close(c); exit(3); } for (i = 0; i < aa_imgwidth(c); i++) for (y = 0; y < aa_imgheight(c); y++) aa_putpixel(c, i, y, i + y < 80 ? i : ((i + y) < 100 ? (i + y == 89 ? 150 : 0) : y * 8)); aa_hidecursor(c); aa_fastrender(c, 0, 0, aa_scrwidth(c), aa_scrheight(c)); aa_printf(c, 0, 0, AA_SPECIAL, "Fast rendering routine %i",1); aa_flush(c); aa_getkey(c, 1); aa_edit(c, 0, 1, 20, s, 256); aa_puts(c, 0, 0, AA_SPECIAL, "Key lookup test "); aa_flush(c); int ch; while ((ch = aa_getevent(c, 1)) != ' ') { char s[80]; sprintf(s, "Key event test-space to exit. c:%i", ch); aa_puts(c, 0, 0, AA_SPECIAL, s); aa_flush(c); } if (aa_autoinitmouse(c, AA_MOUSEALLMASK)) { int co = 0; sprintf(s, "Mouse test-space to exit"); aa_puts(c, 0, 0, AA_SPECIAL, s); aa_flush(c); while (aa_getevent(c, 1) != ' ') { int x, y, b; char s[80]; co++; aa_getmouse(c, &x, &y, &b); sprintf(s, "Mouse test-space to exit. x:%i y:%i b:%i event #%i ", x, y, b, co); aa_puts(c, 0, 0, AA_SPECIAL, s); aa_flush(c); } aa_hidemouse(c); while (aa_getevent(c, 1) != ' ') { int x, y, b; char s[80]; co++; aa_getmouse(c, &x, &y, &b); sprintf(s, "Hidden mouse test-space to exit. x:%i y:%i b:%i event #%i ", x, y, b, co); aa_puts(c, 0, 0, AA_SPECIAL, s); aa_flush(c); } aa_uninitmouse(c); } p = aa_getrenderparams(); for (i = 0; i < AA_DITHERTYPES; i++) { p->dither = i; aa_render(c, p, 0, 0, aa_scrwidth(c), aa_scrheight(c)); aa_puts(c, 0, 0, AA_SPECIAL, aa_dithernames[i]); aa_flush(c); aa_getkey(c, 1); } for (i = 0; i < 255; i += 32) { p->bright = i; aa_render(c, p, 0, 0, aa_scrwidth(c), aa_scrheight(c)); aa_puts(c, 0, 0, AA_SPECIAL, "Normal rendering - bright changes"); aa_flush(c); aa_getkey(c, 1); } p->bright = 0; for (i = 0; i < 128; i += 16) { p->contrast = i; aa_render(c, p, 0, 0, aa_scrwidth(c), aa_scrheight(c)); aa_puts(c, 0, 0, AA_SPECIAL, "Normal rendering - contrast changes"); aa_flush(c); aa_getkey(c, 1); } p->contrast = 0; for (i = 0; i < 255; i += 32) { p->gamma = 1 + i / 32.0; aa_render(c, p, 0, 0, aa_scrwidth(c), aa_scrheight(c)); aa_puts(c, 0, 0, AA_SPECIAL, "Normal rendering - gamma changes"); aa_flush(c); aa_getkey(c, 1); } p->gamma = 1.0; for (i = 0; i < 255; i += 32) { p->randomval = i; aa_render(c, p, 0, 0, aa_scrwidth(c), aa_scrheight(c)); aa_puts(c, 0, 0, AA_SPECIAL, "Normal rendering - randomval changes"); aa_flush(c); aa_getkey(c, 1); } aa_close(c); return 0; }