⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simple_graphics.h

📁 基于cyclone II 的视频解码程序,
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef __SIMPLE_GRAPHICS_H__
#define __SIMPLE_GRAPHICS_H__

#include "vga_controller.h"

#define DO_FILL 1
#define DO_NOT_FILL 0

#define BLACK_8 0x00

#define FONT_10PT_ROW 11
#define FONT_10PT_COLUMN 8

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;
} 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, display_frame_buffer_struct* frame_buffer );

int vid_print_string(int horiz_offset, int vert_offset, int color, char *font, display_frame_buffer_struct* frame_buffer, char string[]);

int vid_scroll_string(vid_text_scroll_struct* scroll, display_frame_buffer_struct* frame_buffer);

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, display_frame_buffer_struct* frame_buffer);

int vid_print_char (int horiz_offset, int vert_offset, int color, char character, char *font, display_frame_buffer_struct* frame_buffer);

void vid_draw_line(int horiz_start, int vert_start, int horiz_end, int vert_end, int width, int color, display_frame_buffer_struct* frame_buffer);

void vid_set_pixel(int horiz, int vert, unsigned int color, display_frame_buffer_struct* frame_buffer);

short vid_get_pixel(int horiz, int vert, display_frame_buffer_struct* frame_buffer);

int vid_draw_circle(int Hcenter, int Vcenter, int radius, int color, char fill, display_frame_buffer_struct* frame_buffer);
void vid_circle_points(int cx, int cy, int x, int y, int color, char fill, display_frame_buffer_struct* frame_buffer);

int vid_draw_box (int horiz_start, int vert_start, int horiz_end, int vert_end, int color, int fill, display_frame_buffer_struct* frame_buffer);

void vid_paint_block (int Hstart, int Vstart, int Hend, int Vend, int color, display_frame_buffer_struct* frame_buffer);

void vid_draw_horiz_line (short Hstart, short Hend, int V, int color, display_frame_buffer_struct* 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 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, display_frame_buffer_struct* frame_buffer);

void vid_draw_horiz_line (short Hstart, short Hend, int V, int color, display_frame_buffer_struct* frame_buffer);

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, 
                           display_frame_buffer_struct* frame_buffer);
                           
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 );
                           
//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
#define FIREBRICK_16            0xB104
#define FLORALWHITE_16          0xFFDE
#define FORESTGREEN_16          0x2444
#define FUCHSIA_16              0xF81F
#define GAINSBORO_16            0xDEDB
#define GHOSTWHITE_16           0xFFDF
#define GOLD_16                 0xFE80
#define GOLDENROD_16            0xDD04
#define GRAY_16                 0x8410
#define GRAY25_16               0x4208
#define GRAY50_16               0x7BCF
#define GRAY75_16               0xC618
#define GREEN_16                0x0400
#define GREENYELLOW_16          0xAFC5
#define HONEYDEW_16             0xF7DE
#define HOTPINK_16              0xFB56
#define INDIANRED_16            0xCACB
#define INDIGO_16               0x4810
#define IVORY_16                0xFFDE
#define KHAKI_16                0xF711
#define LAVENDER_16             0xE71F
#define LAVENDERBLUSH_16        0xFF9E
#define LAWNGREEN_16            0x7FC0
#define LEMONCHIFFON_16         0xFFD9
#define LIGHTBLUE_16            0xAEDC
#define LIGHTCORAL_16           0xF410
#define LIGHTCYAN_16            0xE7DF
#define LIGHTGOLDENRODYELLOW_16 0xFFDA
#define LIGHTGREEN_16           0x9752
#define LIGHTGREY_16            0xD69A
#define LIGHTPINK_16            0xFD98
#define LIGHTSALMON_16          0xFD0F
#define LIGHTSEAGREEN_16        0x2595
#define LIGHTSKYBLUE_16         0x865F
#define LIGHTSLATEBLUE_16       0x839F
#define LIGHTSLATEGRAY_16       0x7453
#define LIGHTSTEELBLUE_16       0xB61B
#define LIGHTYELLOW_16          0xFFDC
#define LIME_16                 0x07C0
#define LIMEGREEN_16            0x3646
#define LINEN_16                0xFF9C

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -