canvas_i.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. /** Reset canvas drawing tools configuration
  29. *
  30. * @param canvas Canvas instance
  31. */
  32. void canvas_reset(Canvas* canvas);
  33. /** Commit canvas. Send buffer to display
  34. *
  35. * @param canvas Canvas instance
  36. */
  37. void canvas_commit(Canvas* canvas);
  38. /** Get canvas buffer.
  39. *
  40. * @param canvas Canvas instance
  41. *
  42. * @return pointer to buffer
  43. */
  44. uint8_t* canvas_get_buffer(Canvas* canvas);
  45. /** Get canvas buffer size.
  46. *
  47. * @param canvas Canvas instance
  48. *
  49. * @return size of canvas in bytes
  50. */
  51. size_t canvas_get_buffer_size(Canvas* canvas);
  52. /** Set drawing region relative to real screen buffer
  53. *
  54. * @param canvas Canvas instance
  55. * @param offset_x x coordinate offset
  56. * @param offset_y y coordinate offset
  57. * @param width width
  58. * @param height height
  59. */
  60. void canvas_frame_set(
  61. Canvas* canvas,
  62. uint8_t offset_x,
  63. uint8_t offset_y,
  64. uint8_t width,
  65. uint8_t height);
  66. /** Set canvas orientation
  67. *
  68. * @param canvas Canvas instance
  69. * @param orientation CanvasOrientation
  70. */
  71. void canvas_set_orientation(Canvas* canvas, CanvasOrientation orientation);
  72. /** Get canvas orientation
  73. *
  74. * @param canvas Canvas instance
  75. *
  76. * @return CanvasOrientation
  77. */
  78. CanvasOrientation canvas_get_orientation(const Canvas* canvas);