canvas_i.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /**
  2. * @file canvas_i.h
  3. * GUI: internal Canvas API
  4. */
  5. #pragma once
  6. #include "canvas.h"
  7. #include <u8g2.h>
  8. /** Canvas structure
  9. */
  10. struct Canvas {
  11. u8g2_t fb;
  12. CanvasOrientation orientation;
  13. uint8_t offset_x;
  14. uint8_t offset_y;
  15. uint8_t width;
  16. uint8_t height;
  17. };
  18. /** Allocate memory and initialize canvas
  19. *
  20. * @return Canvas instance
  21. */
  22. Canvas* canvas_init();
  23. /** Free canvas memory
  24. *
  25. * @param canvas Canvas instance
  26. */
  27. void canvas_free(Canvas* canvas);
  28. /** Get canvas buffer.
  29. *
  30. * @param canvas Canvas instance
  31. *
  32. * @return pointer to buffer
  33. */
  34. uint8_t* canvas_get_buffer(Canvas* canvas);
  35. /** Get canvas buffer size.
  36. *
  37. * @param canvas Canvas instance
  38. *
  39. * @return size of canvas in bytes
  40. */
  41. size_t canvas_get_buffer_size(const Canvas* canvas);
  42. /** Set drawing region relative to real screen buffer
  43. *
  44. * @param canvas Canvas instance
  45. * @param offset_x x coordinate offset
  46. * @param offset_y y coordinate offset
  47. * @param width width
  48. * @param height height
  49. */
  50. void canvas_frame_set(
  51. Canvas* canvas,
  52. uint8_t offset_x,
  53. uint8_t offset_y,
  54. uint8_t width,
  55. uint8_t height);
  56. /** Set canvas orientation
  57. *
  58. * @param canvas Canvas instance
  59. * @param orientation CanvasOrientation
  60. */
  61. void canvas_set_orientation(Canvas* canvas, CanvasOrientation orientation);
  62. /** Get canvas orientation
  63. *
  64. * @param canvas Canvas instance
  65. *
  66. * @return CanvasOrientation
  67. */
  68. CanvasOrientation canvas_get_orientation(const Canvas* canvas);