?? wuyao_avalon_lcd_controller.h
字號:
#ifndef __WUYAO_AVALON_LCD_CONTROLLER_H__
#define __WUYAO_AVALON_LCD_CONTROLLER_H__
#include <stdio.h>
#include "system.h"
#include "sys/alt_llist.h"
#include "priv/alt_dev_llist.h"
#include "priv/alt_file.h"
#define VGA_CONTROLLER_0_RESET_VALUE 0x0
#define VGA_CONTROLLER_0_COLOR_DEPTH 16
#define VGA_CONTROLLER_0_DMA_BURSTING 0
#define VGA_CONTROLLER_0_FIFO_DEPTH 4096
#define VGA_CONTROLLER_0_SCREEN_RESOLUTION "640x480"
#define VGA_CONTROLLER_0_SCREEN_WIDTH 640
#define VGA_CONTROLLER_0_SCREEN_HEIGHT 480
#define VGA_CONTROLLER_0_SYNC_POLARITY 0
#define VGA_CONTROLLER_0_FRAME_BUFFERS 2
#define FRAME_WIDTH 640
#define FRAME_HEIGHT 480
//#define FRAME_WIDTH VGA_CONTROLLER_0_SCREEN_WIDTH
//#define FRAME_HEIGHT VGA_CONTROLLER_0_SCREEN_HEIGHT
#define DO_FILL 1
#define DO_NOT_FILL 0
#define BLACK_8 0x00
#define FONT_10PT_ROW 11
#define FONT_10PT_COLUMN 8
#define HEAP -1
typedef int vga_frame_array;
typedef struct {
vga_frame_array* vga_frame0;
vga_frame_array* vga_frame1;
int width;
int height;
int color_depth;
int bytes_per_pixel;
int bytes_per_frame;
int frame_buffers;
int vga_controller_base;
} vga_frame_buffer_struct;
typedef struct {
int hbegin;
int vbegin;
int hend;
int f_color;
int b_color;
char* string;
char* font;
int ms_delay;
int ticks_at_last_move;
int text_scroll_index;
char text_scroll_started;
int window_width;
int length_of_string;
int scroll_points;
int string_points;
} vga_text_scroll_struct;
typedef struct { /* the structure for a bitmap. */
short biWidth;
short biHeight;
short biBitCount;
char *bicolor_palatte;
short *data;
} bitmap_struct;
typedef struct {
int vertex_x[3];
int vertex_y[3];
int ax, ay;
int bx, by;
int cx, cy;
int spans_needed;
int max_span;
int top_y;
int bottom_y;
int col;
int fill;
int center_z;
int *span_array;
} triangle_struct;
typedef struct vga_controller_dev vga_controller_dev;
struct vga_controller_dev
{
alt_dev dev;
int width;
int height;
int color_depth;
int base_addr;
int frame_buffers;
};
#define WUYAO_AVALON_LCD_CONTROLLER_INSTANCE(name, dev) \
static vga_controller_dev dev = \
{ \
{ \
ALT_LLIST_ENTRY, \
name##_NAME, \
NULL, /* open */ \
NULL, /* close */ \
NULL, /* read */ \
NULL, /* write */ \
NULL, /* lseek */ \
NULL, /* fstat */ \
NULL, /* ioctl */ \
}, \
name##_SCREEN_WIDTH, \
name##_SCREEN_HEIGHT, \
name##_COLOR_DEPTH, \
name##_BASE, \
name##_FRAME_BUFFERS, \
}
#define WUYAO_AVALON_LCD_CONTROLLER_INIT(name, dev) \
vga_dev_init (&dev )
static ALT_INLINE int vga_device_register( alt_dev* fd)
{
extern alt_llist vga_dev_list;
return alt_dev_llist_insert ((alt_dev_llist*) fd, &vga_dev_list);
}
/* color conversion macro */
#define vga_color_convert24_16_m( x ) (unsigned short)(((*(x + 2) & 0xF8) >> 3) | ((*(x + 1) & 0xFC) << 3) | ((*(x + 0) & 0xF8) << 8))
extern char* cour10_font;
int vga_dev_init ( vga_controller_dev* vga );
alt_dev* alt_vga_open_dev(const char* name);
void alt_vga_close_dev(alt_dev* fd);
vga_frame_buffer_struct* vga_init_no_interrupt ( vga_controller_dev* vga, int buffer_location);
int vga_stop ( vga_controller_dev* vga );
int vga_merge_colors(int red, int green, int blue);
unsigned short vga_color_convert24_16(char* color24);
int vga_color_convert16_24(unsigned short color16, char* color24);
int vga_copy_line_to_frame_buffer( int x, int y, char* buffer, int num_pixels, int source_color_depth, vga_frame_buffer_struct* vga_frame_buffer );
int vga_print_string(int horiz_offset, int vert_offset, int color, char *font, vga_frame_buffer_struct* vga_frame_buffer, char string[]);
int vga_scroll_string(vga_text_scroll_struct* scroll, vga_frame_buffer_struct* vga_frame_buffer);
vga_text_scroll_struct* vga_scroll_string_init(int hbegin, int vbegin, int hend, int f_color, int b_color, char* font, int ms_delay, char *string);
void vga_scroll_string_quit(vga_text_scroll_struct* scroll);
int vga_move_block(int xbegin, int ybegin, int xend, int yend, int x_distance, int y_distance, int backfill_color, vga_frame_buffer_struct* vga_frame_buffer);
int vga_print_char (int horiz_offset, int vert_offset, int color, char character, char *font, vga_frame_buffer_struct* vga_frame_buffer);
void vga_draw_line(int horiz_start, int vert_start, int horiz_end, int vert_end, int width, int color, vga_frame_buffer_struct* vga_frame_buffer);
void vga_set_pixel(int horiz, int vert, unsigned int color, vga_frame_buffer_struct* vga_frame_buffer);
short vga_get_pixel(int horiz, int vert, vga_frame_buffer_struct* vga_frame_buffer);
int vga_draw_circle(int Hcenter, int Vcenter, int radius, int color, char fill, vga_frame_buffer_struct* vga_frame_buffer);
void vga_circle_points(int cx, int cy, int x, int y, int color, char fill, vga_frame_buffer_struct* vga_frame_buffer);
int vga_draw_box (int horiz_start, int vert_start, int horiz_end, int vert_end, int color, int fill, vga_frame_buffer_struct* vga_frame_buffer);
void vga_paint_block (int Hstart, int Vstart, int Hend, int Vend, int color, vga_frame_buffer_struct* vga_frame_buffer);
void vga_draw_horiz_line (int Hstart, int Hend, int V, int color, vga_frame_buffer_struct* vga_frame_buffer);
void load_bmp(char *file, bitmap_struct *b);
void fskip(FILE *fp, int num_bytes);
void draw_transparent_bitmap(bitmap_struct *bmp,int x,int y, vga_frame_buffer_struct* vga_frame_buffer);
void draw_bitmap(bitmap_struct *bmp,int x,int y, vga_frame_buffer_struct* vga_frame_buffer);
inline int max3( int a, int b, int c );
inline int min3( int a, int b, int c );
int max_diff3(int a, int b, int c);
inline void vga_put_pixel_in_span_map( int x, int y, int *span_array );
void vga_bres_scan_edges( int x1, int y1, int x2, int y2, int *span_array);
void vga_draw_triangle(triangle_struct* tri, vga_frame_buffer_struct* vga_frame_buffer);
int vga_flip_frame_buffers( vga_frame_buffer_struct* vga_frame_buffer );
inline void vga_clear_screen (vga_frame_buffer_struct* vga_frame_buffer, char color);
//Color Definitions
#define ALICEBLUE_16 0xF7DF
#define ANTIQUEWHITE_16 0xFF5A
#define AQUA_16 0x07DF
#define AQUAMARINE_16 0x7FDA
#define AZURE_16 0xF7DF
#define BEIGE_16 0xF79B
#define BISQUE_16 0xFF18
#define BLACK_16 0x0000
#define BLANCHEDALMOND_16 0xFF59
#define BLUE_16 0x001F
#define BLUEVIOLET_16 0x895C
#define BROWN_16 0xA145
#define BURLYWOOD_16 0xDDD0
#define CADETBLUE_16 0x5CD4
#define CHARTREUSE_16 0x7FC0
#define CHOCOLATE_16 0xD343
#define CORAL_16 0xFBCA
#define CORNFLOWERBLUE_16 0x649D
#define CORNSILK_16 0xFFDB
#define CRIMSON_16 0xD887
#define CYAN_16 0x07DF
#define DARKBLUE_16 0x0011
#define DARKCYAN_16 0x0451
#define DARKGOLDENROD_16 0xBC01
#define DARKGRAY_16 0xAD55
#define DARKGREEN_16 0x0300
#define DARKKHAKI_16 0xBD8D
#define DARKMAGENTA_16 0x8811
#define DARKOLIVEGREEN_16 0x5345
#define DARKORANGE_16 0xFC40
#define DARKORCHID_16 0x9999
#define DARKRED_16 0x8800
#define DARKSALMON_16 0xEC8F
#define DARKSEAGREEN_16 0x8DD1
#define DARKSLATEBLUE_16 0x49D1
#define DARKSLATEGRAY_16 0x2A49
#define DARKTURQUOISE_16 0x065A
#define DARKVIOLET_16 0x901A
#define DEEPPINK_16 0xF892
#define DEEPSKYBLUE_16 0x05DF
#define DIMGRAY_16 0x6B4D
#define DODGERBLUE_16 0x1C9F
#define FELDSPAR_16 0xD48E
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -