/src/ftk_bitmap.h

http://ftk.googlecode.com/ · C Header · 104 lines · 57 code · 18 blank · 29 comment · 2 complexity · 4a468df154822bf5d4e99934a62f5bb5 MD5 · raw file

  1. /*
  2. * File: ftk_bitmap.h
  3. * Author: Li XianJing <xianjimli@hotmail.com>
  4. * Brief: Ftk bitmap
  5. *
  6. * Copyright (c) 2009 - 2010 Li XianJing <xianjimli@hotmail.com>
  7. *
  8. * Licensed under the Academic Free License version 2.1
  9. *
  10. * This program is free software; you can redistribute it and/or modify
  11. * it under the terms of the GNU General Public License as published by
  12. * the Free Software Foundation; either version 2 of the License, or
  13. * (at your option) any later version.
  14. *
  15. * This program is distributed in the hope that it will be useful,
  16. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18. * GNU General Public License for more details.
  19. *
  20. * You should have received a copy of the GNU General Public License
  21. * along with this program; if not, write to the Free Software
  22. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  23. */
  24. /*
  25. * History:
  26. * ================================================================
  27. * 2009-10-03 Li XianJing <xianjimli@hotmail.com> created
  28. *
  29. */
  30. #ifndef FTK_BITMAP_H
  31. #define FTK_BITMAP_H
  32. #include "ftk_typedef.h"
  33. #include "ftk_log.h"
  34. #include "ftk_allocator.h"
  35. FTK_BEGIN_DECLS
  36. struct _FtkBitmap;
  37. typedef struct _FtkBitmap FtkBitmap;
  38. struct _FtkBitmap
  39. {
  40. int ref;
  41. void* data;
  42. void* data1;
  43. void* data2;
  44. char priv[1];
  45. };
  46. FtkBitmap* ftk_bitmap_create_with_native(void* bitmap);
  47. FtkBitmap* ftk_bitmap_create(int w, int h, FtkColor clear_color);
  48. void* ftk_bitmap_get_native(FtkBitmap* thiz);
  49. void ftk_bitmap_destroy(FtkBitmap* thiz);
  50. FtkColor ftk_bitmap_get_pixel(FtkBitmap* thiz, int x, int y);
  51. int ftk_bitmap_width(FtkBitmap* thiz);
  52. int ftk_bitmap_height(FtkBitmap* thiz);
  53. FtkColor* ftk_bitmap_lock(FtkBitmap* thiz);
  54. void ftk_bitmap_unlock(FtkBitmap* thiz);
  55. void ftk_bitmap_ref(FtkBitmap* thiz);
  56. void ftk_bitmap_unref(FtkBitmap* thiz);
  57. void ftk_bitmap_clear(FtkBitmap* thiz, FtkColor c);
  58. Ret ftk_bitmap_copy_from_bitmap(FtkBitmap* thiz, FtkBitmap* other);
  59. Ret ftk_bitmap_copy_from_data_bgr24(FtkBitmap* bitmap,
  60. void* data, int dw, int dh, FtkRect* rect);
  61. Ret ftk_bitmap_copy_to_data_bgr24(FtkBitmap* bitmap, FtkRect* rect,
  62. void* data, int ox, int oy, int dw, int dh);
  63. Ret ftk_bitmap_copy_from_data_bgra32(FtkBitmap* bitmap,
  64. void* data, int dw, int dh, FtkRect* rect);
  65. Ret ftk_bitmap_copy_to_data_bgra32(FtkBitmap* bitmap, FtkRect* rect,
  66. void* data, int ox, int oy, int dw, int dh);
  67. Ret ftk_bitmap_copy_from_data_argb32(FtkBitmap* bitmap,
  68. void* data, int dw, int dh, FtkRect* rect);
  69. Ret ftk_bitmap_copy_to_data_argb32(FtkBitmap* bitmap, FtkRect* rect,
  70. void* data, int ox, int oy, int dw, int dh);
  71. Ret ftk_bitmap_copy_from_data_rgb565(FtkBitmap* bitmap,
  72. void* data, int dw, int dh, FtkRect* rect);
  73. Ret ftk_bitmap_copy_to_data_rgb565(FtkBitmap* bitmap, FtkRect* rect,
  74. void* data, int ox, int oy, int dw, int dh);
  75. Ret ftk_bitmap_copy_from_data_rgba32(FtkBitmap* bitmap,
  76. void* data, int dw, int dh, FtkRect* rect);
  77. Ret ftk_bitmap_copy_to_data_rgba32(FtkBitmap* bitmap, FtkRect* rect,
  78. void* data, int ox, int oy, int dw, int dh);
  79. typedef Ret (*FtkBitmapCopyFromData)(FtkBitmap* bitmap,
  80. void* data, int dw, int dh, FtkRect* rect);
  81. typedef Ret (*FtkBitmapCopyToData)(FtkBitmap* bitmap, FtkRect* rect,
  82. void* data, int ox, int oy, int dw, int dh);
  83. #define FTK_BITMAP_UNREF(bitmap) if(bitmap != NULL) { ftk_bitmap_unref(bitmap); bitmap = NULL;}
  84. Ret ftk_bitmap_auto_test(void);
  85. FTK_END_DECLS
  86. #endif/*FTK_BITMAP_H*/