canvas_i.h 1.6 KB

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