Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #ifndef __L_BUF2D_H_INCLUDED_
  2. #define __L_BUF2D_H_INCLUDED_
  3. //
  4. // buf2d.obj
  5. //
  6.  
  7. struct buf_2d_header
  8. {
  9.         void* img_data;
  10.         short int left, top;
  11.         long size_x, size_y;
  12.         unsigned long color; //color
  13.         unsigned char bit_pp; //bit in pixel
  14. };
  15.  
  16. const long BUF2D_OPT_CROP_TOP    = 1;
  17. const long BUF2D_OPT_CROP_LEFT   = 2;
  18. const long BUF2D_OPT_CROP_BOTTOM = 4;
  19. const long BUF2D_OPT_CROP_RIGHT  = 8;
  20. const long BUF2D_BIT_OPT_CROP_TOP    = 0;
  21. const long BUF2D_BIT_OPT_CROP_LEFT   = 1;
  22. const long BUF2D_BIT_OPT_CROP_BOTTOM = 2;
  23. const long BUF2D_BIT_OPT_CROP_RIGHT  = 3;
  24.  
  25. //
  26. // buf2d - import table
  27. //
  28. void (__stdcall* import_buf2d)() = (void (__stdcall*)())&"lib_init";
  29. void (__stdcall* buf2d_create)(buf_2d_header* buf) = (void (__stdcall*)(buf_2d_header*))&"buf2d_create";
  30. void (__stdcall* buf2d_create_f_img)(buf_2d_header* buf, void* img_data) = (void (__stdcall*)(buf_2d_header*, void*))&"buf2d_create_f_img";
  31. void (__stdcall* buf2d_clear)(buf_2d_header* buf, long color) = (void (__stdcall*)(buf_2d_header*, long))&"buf2d_clear";
  32. void (__stdcall* buf2d_draw)(buf_2d_header* buf) = (void (__stdcall*)(buf_2d_header*))&"buf2d_draw";
  33. void (__stdcall* buf2d_delete)(buf_2d_header* buf) = (void (__stdcall*)(buf_2d_header*))&"buf2d_delete";
  34. void (__stdcall* buf2d_resize)(buf_2d_header* buf, long n_w, long n_h, long opt) = (void (__stdcall*)(buf_2d_header*, long, long, long))&"buf2d_resize";
  35. void (__stdcall* buf2d_rotate)(buf_2d_header* buf, long angle) = (void (__stdcall*)(buf_2d_header*, long))&"buf2d_rotate";
  36. void (__stdcall* buf2d_line)(buf_2d_header* buf, long x1, long y1, long x2, long y2, long color) = (void (__stdcall*)(buf_2d_header*, long, long, long, long, long))&"buf2d_line";
  37. void (__stdcall* buf2d_line_sm)(buf_2d_header* buf, long x1, long y1, long x2, long y2, long color) = (void (__stdcall*)(buf_2d_header*, long, long, long, long, long))&"buf2d_line_sm";
  38. void (__stdcall* buf2d_rect_by_size)(buf_2d_header* buf, long x1, long y1, long w, long h, long color) = (void (__stdcall*)(buf_2d_header*, long, long, long, long, long))&"buf2d_rect_by_size";
  39. void (__stdcall* buf2d_filled_rect_by_size)(buf_2d_header* buf, long x1, long y1, long w, long h, long color) = (void (__stdcall*)(buf_2d_header*, long, long, long, long, long))&"buf2d_filled_rect_by_size";
  40. void (__stdcall* buf2d_circle)(buf_2d_header* buf, long x, long y, long r, long color) = (void (__stdcall*)(buf_2d_header*, long, long, long, long))&"buf2d_circle";
  41. void (__stdcall* buf2d_img_hdiv2)(buf_2d_header* buf) = (void (__stdcall*)(buf_2d_header*))&"buf2d_img_hdiv2";
  42. void (__stdcall* buf2d_img_wdiv2)(buf_2d_header* buf) = (void (__stdcall*)(buf_2d_header*))&"buf2d_img_wdiv2";
  43. void (__stdcall* buf2d_conv_24_to_8)(buf_2d_header* buf24, long opt_rgb) = (void (__stdcall*)(buf_2d_header*, long))&"buf2d_conv_24_to_8";
  44. void (__stdcall* buf2d_conv_24_to_32)(buf_2d_header* buf24, buf_2d_header* buf8) = (void (__stdcall*)(buf_2d_header*, buf_2d_header*))&"buf2d_conv_24_to_32";
  45. void (__stdcall* buf2d_bit_blt)(buf_2d_header* buf0, long x, long y, buf_2d_header* buf1) = (void (__stdcall*)(buf_2d_header*, long, long, buf_2d_header*))&"buf2d_bit_blt";
  46. void (__stdcall* buf2d_bit_blt_transp)(buf_2d_header* buf0, long x, long y, buf_2d_header* buf32) = (void (__stdcall*)(buf_2d_header*, long, long, buf_2d_header*))&"buf2d_bit_blt_transp";
  47. void (__stdcall* buf2d_bit_blt_alpha)(buf_2d_header* buf0, long x, long y, buf_2d_header* buf8) = (void (__stdcall*)(buf_2d_header*, long, long, buf_2d_header*))&"buf2d_bit_blt_alpha";
  48. void (__stdcall* buf2d_curve_bezier)(buf_2d_header* buf, long p1, long p2, long p3, long color) = (void (__stdcall*)(buf_2d_header*, long, long, long, long))&"buf2d_curve_bezier";
  49. void (__stdcall* buf2d_convert_text_matrix)(buf_2d_header* buf) = (void (__stdcall*)(buf_2d_header*))&"buf2d_convert_text_matrix";
  50. void (__stdcall* buf2d_draw_text)(buf_2d_header* buf, buf_2d_header* buf_txt, char* txt, long x, long y, long color) = (void (__stdcall*)(buf_2d_header*, buf_2d_header*, char*, long, long, long))&"buf2d_draw_text";
  51. void (__stdcall* buf2d_crop_color)(buf_2d_header* buf, long color, long opt) = (void (__stdcall*)(buf_2d_header*, long, long))&"buf2d_crop_color";
  52. void (__stdcall* buf2d_offset_h)(buf_2d_header* buf, long dy) = (void (__stdcall*)(buf_2d_header*, long))&"buf2d_offset_h";
  53. void (__stdcall* buf2d_flood_fill)(buf_2d_header* buf, long x, long y, long opt, long color1, long color2) = (void (__stdcall*)(buf_2d_header*, long, long, long, long, long))&"buf2d_flood_fill";
  54. void (__stdcall* buf2d_set_pixel)(buf_2d_header* buf, long x, long y, long color) = (void (__stdcall*)(buf_2d_header*, long, long, long))&"buf2d_set_pixel";
  55. long (__stdcall* buf2d_get_pixel)(buf_2d_header* buf, long x, long y) = (long (__stdcall*)(buf_2d_header*, long, long))&"buf2d_get_pixel";
  56. void (__stdcall* buf2d_flip_h)(buf_2d_header* buf) = (void (__stdcall*)(buf_2d_header*))&"buf2d_flip_h";
  57. void (__stdcall* buf2d_flip_v)(buf_2d_header* buf) = (void (__stdcall*)(buf_2d_header*))&"buf2d_flip_v";
  58. void (__stdcall* buf2d_filter_dither)(buf_2d_header* buf, long opt) = (void (__stdcall*)(buf_2d_header*, long))&"buf2d_filter_dither";
  59.  
  60. /*
  61. void (__stdcall* buf2d_vox_brush_create)(buf_2d_header* buf, long* opt) = (void (__stdcall*)(buf_2d_header*, long*))&"buf2d_vox_brush_create";
  62. "buf2d_vox_brush_delete
  63. "buf2d_vox_obj_get_img_w_3g
  64. "buf2d_vox_obj_get_img_h_3g
  65. "buf2d_vox_obj_draw_1g
  66. "buf2d_vox_obj_draw_3g
  67. "buf2d_vox_obj_draw_3g_scaled
  68. "buf2d_vox_obj_draw_pl
  69. "buf2d_vox_obj_draw_pl_scaled
  70. "buf2d_vox_obj_draw_3g_shadows
  71. */
  72. asm{
  73.         dd 0,0
  74. }
  75.  
  76.  
  77. bool buf2d_create_ex(buf_2d_header* buf, long l, long t, long w, long h, unsigned long c=0xffffff, unsigned char bit_pp=24)
  78. {
  79.         buf->left=l;
  80.         buf->top=t;
  81.         buf->size_x=w;
  82.         buf->size_y=h;
  83.         buf->color=c;
  84.         if(bit_pp!=8 && bit_pp!=24 && bit_pp!=32) return false;
  85.         buf->bit_pp=bit_pp;
  86.         buf2d_create(buf);
  87.         return true;
  88. }
  89.  
  90. #endif