📄 draw.h
字号:
int clip_top; int clip_right; int clip_bottom; int reserved0; int reserved1; int reserved2; int reserved3; unsigned char *palette_lut; /* 4k palette look up table (444 true color to palette index conversions) */ disp_color_t *dest_palette; /* Palette to be used for 8-bit alpha blending */ int dest_palette_size; disp_fx_t xform_matrix[4]; /* 2x2 matrix */ int xlate_x; int xlate_y; unsigned line_flags; int line_join; uint32_t line_pat; int line_repeat; int line_initial_offset; int cap_style; int poly_fill; disp_surface_t *dst_alpha_map; unsigned dst_alpha_map_xoff, dst_alpha_map_yoff; uintptr_t reserved[5];} disp_draw_context_t;__BEGIN_DECLStypedef struct disp_nl_accessfuncs { void (*writescan)(disp_draw_context_t *ctx, disp_surface_t *dst, int x, int y, int npixels, void *data); void (*readscan)(disp_draw_context_t *ctx, disp_surface_t *src, int x, int y, int npixels, void *data); void (*setscan)(disp_draw_context_t *ctx, disp_surface_t *dst, int x, int y, int npixels, disp_color_t color); void (*setscan_mono)(disp_draw_context_t *ctx, disp_surface_t *dst, int x, int y, int npixels, disp_color_t fgcolor, disp_color_t bgcolor, uint8_t pat, int patidx); void (*setscan_trans)(disp_draw_context_t *ctx, disp_surface_t *dst, int x, int y, int npixels, disp_color_t color, uint8_t pat, int patidx); void (*setscan_bitmap)(disp_draw_context_t *ctx, disp_surface_t *dst, int x, int y, int width, disp_color_t fgcolor, disp_color_t bgcolor, int bit0_offset, int transparent, uint8_t *sptr);} disp_nl_accessfuncs_t;typedef struct disp_draw_corefuncs { void (*wait_idle)(disp_draw_context_t *); int (*hw_idle)(disp_adapter_t *adapter, void *ignored); /* Simple drawing functions */ void (*draw_span)(disp_draw_context_t *context, disp_color_t color, int x1, int x2, int y); void (*draw_span_list)(disp_draw_context_t *context, int count, disp_color_t color, int x1[], int x2[], int y[]); void (*draw_solid_rect)(disp_draw_context_t *context, disp_color_t color, int x1, int y1, int x2, int y2); void (*draw_line_pat8x1)(disp_draw_context_t *context, disp_color_t fgcolor, disp_color_t bgcolor, int x1, int x2, int y, uint8_t pattern); void (*draw_line_trans8x1)(disp_draw_context_t *context, disp_color_t color, int x1, int x2, int y, uint8_t pattern); void (*draw_rect_pat8x8)(disp_draw_context_t *context, disp_color_t fgcolor, disp_color_t bgcolor, int x1, int y1, int x2, int y2); void (*draw_rect_trans8x8)(disp_draw_context_t *context, disp_color_t color, int x1, int y1, int x2, int y2); void (*blit1)(disp_draw_context_t *context, int sx, int sy, int dx, int dy, int width, int height); void (*blit2)(disp_draw_context_t *context, disp_surface_t *src, disp_surface_t *dst, int sx, int sy, int dx, int dy, int width, int height); void (*draw_bitmap)(disp_draw_context_t *context, uint8_t *image, int sstride, int bit0_offset, disp_color_t fgcolor, disp_color_t bgcolor, int transparent, int dx, int dy, int width, int height); void (*update_draw_surface)(disp_draw_context_t *context); void (*update_pattern)(disp_draw_context_t *context); void (*scaled_blit)(disp_draw_context_t *context, disp_surface_t *src, disp_surface_t *dst, int sx1, int sy1, int sx2, int sy2, int dx1, int dy1, int dx2, int dy2); void (*draw_line)(disp_draw_context_t *context, disp_color_t color, int x1, int y1, int x2, int y2, unsigned flags); int (*fill_poly)(disp_draw_context_t *ctx, disp_color_t color, disp_point_t *pointlist, int npoints, unsigned flags); int (*get_bresenham_params)(disp_draw_context_t *ctx, int x1, int y1, int x2, int y2, int *initial_error, int *major_inc, int *minor_inc); void (*update_transform)(disp_draw_context_t *context); void (*update_clipping)(disp_draw_context_t *context); void (*blend_pixels)(disp_draw_context_t *ctx, disp_color_t color, int x[], int y[], uint8_t alpha[], int npixels); disp_nl_accessfuncs_t * (*get_nlfuncs)(disp_draw_context_t *ctx, disp_surface_t *surf); void (*reserved[8])(void);} disp_draw_corefuncs_t; typedef struct disp_draw_contextfuncs { void (*draw_span)(disp_draw_context_t *context, unsigned x1, unsigned x2, unsigned y); void (*draw_span_list)(disp_draw_context_t *context, int count, int x1[], int x2[], int y[]); void (*draw_rect)(disp_draw_context_t *context, unsigned x1, unsigned y1, unsigned x2, unsigned y2); void (*blit)(disp_draw_context_t *context, disp_surface_t *src, disp_surface_t *dst, unsigned sx, unsigned sy, unsigned dx, unsigned dy, unsigned width, unsigned height); /* Notify of changes in draw context */ void (*update_general)(disp_draw_context_t *context); void (*update_color)(disp_draw_context_t *context); void (*update_rop3)(disp_draw_context_t *context); void (*update_chroma)(disp_draw_context_t *context); void (*update_alpha)(disp_draw_context_t *context); void (*scaled_blit)(disp_draw_context_t *context, disp_surface_t *src, disp_surface_t *dst, int sx1, int sy1, int sx2, int sy2, int dx1, int dy1, int dx2, int dy2); void (*update_planemask)(disp_draw_context_t *context); void (*draw_line)(disp_draw_context_t *context, int x1, int y1, int x2, int y2, unsigned flags); int (*fill_poly)(disp_draw_context_t *ctx, disp_point_t *pointlist, int npoints, unsigned flags); int (*draw_polyline)(disp_draw_context_t *ctx, disp_point_t *pointlist, int npoints, int width, unsigned flags); void (*update_line)(disp_draw_context_t *context); void (*blend_pixels)(disp_draw_context_t *ctx, int x[], int y[], uint8_t alpha[], int npixels); void (*reserved[8])(void);} disp_draw_contextfuncs_t; typedef struct disp_draw_miscfuncs { int (*init)(disp_adapter_t *adapter, char *optstring); void (*fini)(disp_adapter_t *adapter); void (*module_info)(disp_adapter_t *adapter, disp_module_info_t *info); int (*set_palette)(disp_adapter_t *ctx, int index, int count, disp_color_t *pal); int (*set_hw_cursor)(disp_adapter_t *ctx, uint8_t *fg_bmp, uint8_t *bg_bmp, unsigned fg_color, unsigned bg_color, int hotspot_x, int hotspot_y, int size_x, int size_y, int bmp_stride); void (*enable_hw_cursor)(disp_adapter_t *ctx); void (*disable_hw_cursor)(disp_adapter_t *ctx); void (*set_hw_cursor_pos)(disp_adapter_t *ctx, int x, int y); void (*flushrect)(disp_draw_context_t *ctx, int x1, int y1, int x2, int y2); int (*service_msg)(disp_draw_context_t *ctx, void *data_in, int nbytes, void *data_out, int out_buffer_size); int (*get_2d_caps)(disp_adapter_t *adapter, disp_surface_t *surf, disp_2d_caps_t *caps); int (*get_corefuncs_sw)(disp_adapter_t *adapter, unsigned pixel_format, disp_draw_corefuncs_t *fns, int tabsize); int (*get_contextfuncs_sw)(disp_adapter_t *adapter, disp_draw_contextfuncs_t *fns, int tabsize); int (*set_power_mode)(disp_adapter_t *adapter, pm_power_mode_t mode); int (*end_of_draw)(disp_adapter_t *adapter); /* Support for rendering from another process */ int (*attach_external)(disp_adapter_t *adapter, disp_aperture_t aper[]); int (*detach_external)(disp_adapter_t *adapter); int (*recover)(disp_adapter_t *adapter); int (*wait_idle)(disp_adapter_t *adapter); int (*devctl)(disp_adapter_t *adapter, disp_draw_devctl_t cmd, void *data_in, int nbytes, void *data_out, int *out_buffer_size); int (*terminate_notify)(disp_adapter_t *adapter, pid_t pid); void (*set_memory_zone)(disp_adapter_t *adapter, int zone); void (*reserved[6])(void);} disp_draw_miscfuncs_t;typedef int (*get_miscfuncs_t)(disp_adapter_t *adapter, disp_draw_miscfuncs_t *fns, int tabsize);typedef int (*get_corefuncs_t)(disp_adapter_t *adapter, unsigned pixel_format, disp_draw_corefuncs_t *fns, int tabsize);typedef int (*get_contextfuncs_t)(disp_adapter_t *adapter, disp_draw_contextfuncs_t *fns, int tabsize);/* Main draw driver entry points */extern WINSIM_API int devg_get_miscfuncs(disp_adapter_t *adapter, disp_draw_miscfuncs_t *fns, int tabsize);extern WINSIM_API int devg_get_corefuncs(disp_adapter_t *adapter, unsigned pixel_format, disp_draw_corefuncs_t *fns, int tabsize);extern WINSIM_API int devg_get_contextfuncs(disp_adapter_t *adapter, disp_draw_contextfuncs_t *fns, int tabsize);__END_DECLS#endif /* _GRAPHICS_DRAW_H_INCLUDED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -