#ifndef VIDEO_H #define VIDEO_H #include "driver.h" #include typedef enum { VIDEO_MODE_TYPE_TEXT, VIDEO_MODE_TYPE_GRAPHICS } video_mode_type_t; #define MAX_NOF_VIDEO_MODES 255 typedef struct { video_mode_type_t mode_type; int x; int y; int color_depth; } video_mode_t; typedef struct { driver_t base; unsigned int nof_modes; const video_mode_t *modes[MAX_NOF_VIDEO_MODES]; } video_t; typedef struct { driver_vtable_t base; void (*register_mode)( void *obj, const video_mode_t *mode ); bool (*supports_mode)( void *obj, const video_mode_t mode ); bool (*set_mode)( void *obj, const video_mode_t mode ); bool (*switch_mode)( void *obj, const video_mode_t *mode ); } video_vtable_t; void video_init( video_t *video, interrupt_t *interrupt, void *context ); void video_activate( void *obj ); void video_deactivate( void *obj ); void video_deinit( void *obj ); void video_print_info( void *obj ); video_mode_t video_make_mode( const video_mode_type_t mode_type, const int x, const int y, const int color_depth ); void video_register_mode( void *obj, const video_mode_t *mode ); bool video_supports_mode( void *obj, const video_mode_t mode ); bool video_set_mode( void *obj, const video_mode_t mode ); bool video_switch_mode( void *obj, const video_mode_t *mode ); #endif // VIDEO_H