📄 simple_graphics.h
字号:
#ifndef __SIMPLE_GRAPHICS_H__#define __SIMPLE_GRAPHICS_H__// JCJB: Adding inclusion of the graphics driver header#include "alt_video_display.h"#include "fonts.h" // modify this file to add/remove fonts// use this background colour when you don't want a filled in box behind the alpha blended text#define CLEAR_BACKGROUND -1#define TAB_SPACING 2#define RGB 1 // set to 0 if you need BGR instead#define DO_FILL 1#define DO_NOT_FILL 0#define BLACK_8 0x00#define FONT_10PT_ROW 11#define FONT_10PT_COLUMN 8typedef 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;} vid_text_scroll_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;/* color conversion macro */#define vid_color_convert24_16_m( x ) (unsigned short)(((*(x + 2) & 0xF8) >> 3) | ((*(x + 1) & 0xFC) << 3) | ((*(x + 0) & 0xF8) << 8))extern char* cour10_font;int vid_merge_colors(int red, int green, int blue);unsigned short vid_color_convert24_16(char* color24);int vid_color_convert16_24(unsigned short color16, char* color24);int vid_copy_line_to_frame_buffer( int x, int y, char* buffer, int num_pixels, int source_color_depth, alt_video_display* display );int vid_print_string(int horiz_offset, int vert_offset, int color, char *font, alt_video_display* display, char string[]);int vid_scroll_string(vid_text_scroll_struct* scroll, alt_video_display* display);vid_text_scroll_struct* vid_scroll_string_init(int hbegin, int vbegin, int hend, int f_color, int b_color, char* font, int ms_delay, char *string);void vid_scroll_string_quit(vid_text_scroll_struct* scroll);int vid_move_block(int xbegin, int ybegin, int xend, int yend, int x_distance, int y_distance, int backfill_color, alt_video_display* display);int vid_print_char (int horiz_offset, int vert_offset, int color, char character, char *font, alt_video_display* display);void vid_draw_line(int horiz_start, int vert_start, int horiz_end, int vert_end, int width, int color, alt_video_display* display);void vid_set_pixel(int horiz, int vert, unsigned int color, alt_video_display* display);short vid_get_pixel(int horiz, int vert, alt_video_display* display);int vid_draw_circle(int Hcenter, int Vcenter, int radius, int color, char fill, alt_video_display* display);void vid_round_corner_points( int cx, int cy, int x, int y, int straight_width, int straight_height, int color, char fill, alt_video_display* display); int vid_draw_round_corner_box ( int horiz_start, int vert_start, int horiz_end, int vert_end, int radius, int color, int fill, alt_video_display* display);int vid_draw_box (int horiz_start, int vert_start, int horiz_end, int vert_end, int color, int fill, alt_video_display* display);void vid_paint_block (int Hstart, int Vstart, int Hend, int Vend, int color, alt_video_display* display);void vid_draw_horiz_line (short Hstart, short Hend, int V, int color, alt_video_display* display);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 vid_put_pixel_in_span_map( int x, int y, int *span_array );void vid_bres_scan_edges( int x1, int y1, int x2, int y2, int *span_array);void vid_draw_triangle(triangle_struct* tri, alt_video_display* display);void vid_draw_horiz_line (short Hstart, short Hend, int V, int color, alt_video_display* display);void vid_draw_sloped_line( unsigned short horiz_start, unsigned short vert_start, unsigned short horiz_end, unsigned short vert_end, unsigned short width, int color, alt_video_display* display); void CopyImage16( short * __restrict__ source_buffer, short * __restrict__ dest_buffer, short source_width, short source_height, short dest_width, short dest_height );void CropImage16( short * __restrict__ source_buffer, short * __restrict__ dest_buffer, short source_width, short source_height, short crop_left, short crop_right, short crop_top, short crop_bottom, short dest_width, short dest_height );// alpha blending text functionint vid_print_string_alpha( int horiz_offset, int vert_offset, int color, int background_color, struct abc_font_struct font[], alt_video_display * display, char string[]);// functions used by vid_print_string_alpha__inline__ int seperate_color_channels( int color_depth, unsigned char * color, unsigned char * red, unsigned char * green, unsigned char * blue);__inline__ int merge_color_channels(int color_depth, unsigned char red, unsigned char green, unsigned char blue, unsigned char * color);__inline__ int read_from_frame (int horiz, int vert, unsigned char *red, unsigned char *green, unsigned char *blue, alt_video_display * display);__inline__ int alpha_blending ( int horiz_offset, int vert_offset, int background_color, unsigned char alpha, unsigned char *red, unsigned char *green, unsigned char *blue, alt_video_display * display);int vid_print_char_alpha (int horiz_offset, int vert_offset, int color, char character, int background_color, struct abc_font_struct font[], alt_video_display * display);int vid_string_pixel_length_alpha( struct abc_font_struct font[], char string[] ); //Color Definitions #if(RGB == 1) // Use these colours when in RGB format, otherwise BGR will be used instead #define ALICEBLUE_16 0xFFDE #define ANTIQUEWHITE_16 0xD75F #define AQUA_16 0xFFC0 #define AQUAMARINE_16 0xD7CF #define AZURE_16 0xFFDE #define BEIGE_16 0xDF9E #define BISQUE_16 0xC71F #define BLACK_16 0x0000 #define BLANCHEDALMOND_16 0xCF5F #define BLUE_16 0xF800 #define BLUEVIOLET_16 0xE151 #define BROWN_16 0x2954 #define BURLYWOOD_16 0x85DB #define CADETBLUE_16 0xA4CB #define CHARTREUSE_16 0x07CF #define CHOCOLATE_16 0x1B5A #define CORAL_16 0x53DF #define CORNFLOWERBLUE_16 0xEC8C #define CORNSILK_16 0xDFDF #define CRIMSON_16 0x389B #define CYAN_16 0xFFC0 #define DARKBLUE_16 0x8800 #define DARKCYAN_16 0x8C40 #define DARKGOLDENROD_16 0xC17 #define DARKGRAY_16 0xAD55 #define DARKGREEN_16 0x300 #define DARKKHAKI_16 0x6D97 #define DARKMAGENTA_16 0x8811 #define DARKOLIVEGREEN_16 0x2B4A #define DARKORANGE_16 0x045F #define DARKORCHID_16 0xC993 #define DARKRED_16 0x0011 #define DARKSALMON_16 0x7C9D #define DARKSEAGREEN_16 0x8DD1 #define DARKSLATEBLUE_16 0x89C9 #define DARKSLATEGRAY_16 0x4A45 #define DARKTURQUOISE_16 0xD640 #define DARKVIOLET_16 0xD012 #define DEEPPINK_16 0x909F #define DEEPSKYBLUE_16 0xFDC0 #define DIMGRAY_16 0x6B4D #define DODGERBLUE_16 0xFC83 #define FELDSPAR_16 0x749A #define FIREBRICK_16 0x2116 #define FLORALWHITE_16 0xF7DF #define FORESTGREEN_16 0x2444 #define FUCHSIA_16 0xF81F #define GAINSBORO_16 0xDEDB #define GHOSTWHITE_16 0xFFDF #define GOLD_16 0x069F #define GOLDENROD_16 0x251B #define GRAY_16 0x8410 #define GRAY25_16 0x4208 #define GRAY50_16 0x7BCF #define GRAY75_16 0xC618 #define GREEN_16 0x0400 #define GREENYELLOW_16 0x2FD5 #define HONEYDEW_16 0xF7DE #define HOTPINK_16 0xB35F #define INDIANRED_16 0x5AD9 #define INDIGO_16 0x8009 #define IVORY_16 0xF7DF #define KHAKI_16 0x8F1E #define LAVENDER_16 0xFF1C #define LAVENDERBLUSH_16 0xF79F #define LAWNGREEN_16 0x07CF #define LEMONCHIFFON_16 0xCFDF #define LIGHTBLUE_16 0xE6D5 #define LIGHTCORAL_16 0x841E #define LIGHTCYAN_16 0xFFDC #define LIGHTGOLDENRODYELLOW_16 0xD7DF #define LIGHTGREEN_16 0x9752 #define LIGHTGREY_16 0xD69A #define LIGHTPINK_16 0xC59F #define LIGHTSALMON_16 0x7D1F #define LIGHTSEAGREEN_16 0xAD84 #define LIGHTSKYBLUE_16 0xFE50 #define LIGHTSLATEBLUE_16 0xFB90 #define LIGHTSLATEGRAY_16 0x9C4E #define LIGHTSTEELBLUE_16 0xDE16 #define LIGHTYELLOW_16 0xE7DF #define LIME_16 0x7C0 #define LIMEGREEN_16 0x3646 #define LINEN_16 0xE79F #define MAGENTA_16 0xF81F #define MAROON_16 0x0010 #define MEDIUMAQUAMARINE_16 0xAE4C #define MEDIUMBLUE_16 0xC800 #define MEDIUMORCHID_16 0xD297 #define MEDIUMPURPLE_16 0xDB92 #define MEDIUMSEAGREEN_16 0x7587 #define MEDIUMSLATEBLUE_16 0xEB4F #define MEDIUMSPRINGGREEN_16 0x9FC0 #define MEDIUMTURQUOISE_16 0xCE89 #define MEDIUMVIOLETRED_16 0x8098 #define MIDNIGHTBLUE_16 0x70C3 #define MINTCREAM_16 0xFFDE #define MISTYROSE_16 0xE71F #define MOCCASIN_16 0xB71F #define NAVAJOWHITE_16 0xAEDF #define NAVY_16 0x8000 #define OLDLACE_16 0xE79F #define OLIVE_16 0x0410 #define OLIVEDRAB_16 0x244D #define ORANGE_16 0x051F #define ORANGERED_16 0x021F #define ORCHID_16 0xD39B #define PALEGOLDENROD_16 0xAF5D #define PALEGREEN_16 0x9FD3 #define PALETURQUOISE_16 0xEF55 #define PALEVIOLETRED_16 0x939B #define PAPAYAWHIP_16 0xD75F #define PEACHPUFF_16 0xBEDF #define PERU_16 0x3C19 #define PINK_16 0xCE1F #define PLUM_16 0xDD1B #define POWDERBLUE_16 0xE716 #define PURPLE_16 0x8010 #define RED_16 0x001F #define ROSYBROWN_16 0x8C57 #define ROYALBLUE_16 0x9080 #define SADDLEBROWN_16 0x1211 #define SALMON_16 0x741F #define SANDYBROWN_16 0x651E #define SEAGREEN_16 0x5445 #define SEASHELL_16 0xEF9F #define SIENNA_16 0x2A94 #define SILVER_16 0xC618 #define SKYBLUE_16 0xEE50 #define SLATEBLUE_16 0xCACD #define SLATEGRAY_16 0x940E #define SNOW_16 0xFFDF #define SPRINGGREEN_16 0x7FC0 #define STEELBLUE_16 0xB408 #define TAN_16 0x8D9A #define TEAL_16 0x8400 #define THISTLE_16 0xDDDB #define TOMATO_16 0x431F #define TURQUOISE_16 0xD708 #define VIOLET_16 0xEC1D #define VIOLETRED_16 0x911A #define WHEAT_16 0xB6DE #define WHITE_16 0xFFDF #define WHITESMOKE_16 0xF79E #define YELLOW_16 0x07DF #define YELLOWGREEN_16 0x3653 #define ALICEBLUE_24 0xF0F8FF #define ANTIQUEWHITE_24 0xFAEBD7 #define AQUA_24 0x00FFFF #define AQUAMARINE_24 0x7FFFD4 #define AZURE_24 0xF0FFFF #define BEIGE_24 0xF5F5DC #define BISQUE_24 0xFFE4C4 #define BLACK_24 0x000000 #define BLANCHEDALMOND_24 0xFFEBCD #define BLUE_24 0x0000FF #define BLUEVIOLET_24 0x8A2BE2 #define BROWN_24 0xA52A2A #define BURLYWOOD_24 0xDEB887 #define CADETBLUE_24 0x5F9EA0 #define CHARTREUSE_24 0x7FFF00 #define CHOCOLATE_24 0xD2691E #define CORAL_24 0xFF7F50 #define CORNFLOWERBLUE_24 0x6495ED #define CORNSILK_24 0xFFF8DC #define CRIMSON_24 0xDC143C #define CYAN_24 0x00FFFF #define DARKBLUE_24 0x00008B #define DARKCYAN_24 0x008B8B #define DARKGOLDENROD_24 0xB8860B #define DARKGRAY_24 0xA9A9A9 #define DARKGREY_24 0xA9A9A9 #define DARKGREEN_24 0x006400 #define DARKKHAKI_24 0xBDB76B #define DARKMAGENTA_24 0x8B008B #define DARKOLIVEGREEN_24 0x556B2F #define DARKORANGE_24 0xFF8C00 #define DARKORCHID_24 0x9932CC #define DARKRED_24 0x8B0000 #define DARKSALMON_24 0xE9967A #define DARKSEAGREEN_24 0x8FBC8F #define DARKSLATEBLUE_24 0x483D8B #define DARKSLATEGRAY_24 0x2F4F4F #define DARKSLATEGREY_24 0x2F4F4F #define DARKTURQUOISE_24 0x00CED1 #define DARKVIOLET_24 0x9400D3 #define DEEPPINK_24 0xFF1493 #define DEEPSKYBLUE_24 0x00BFFF #define DIMGRAY_24 0x696969 #define DIMGREY_24 0x696969 #define DODGERBLUE_24 0x1E90FF #define FIREBRICK_24 0xB22222 #define FLORALWHITE_24 0xFFFAF0 #define FORESTGREEN_24 0x228B22 #define FUCHSIA_24 0xFF00FF #define GAINSBORO_24 0xDCDCDC #define GHOSTWHITE_24 0xF8F8FF #define GOLD_24 0xFFD700
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -