main_view.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #pragma once
  2. #include <gui/view.h>
  3. #include "lightmeter_icons.h"
  4. #include "../../lightmeter_config.h"
  5. /* log base 1.4 and 12 pixels cut off
  6. makes it show values approx 65-65k
  7. with reasonable resolution in 1-10k range
  8. on 20px of screen height */
  9. #define LUX_HISTORGRAM_LOGBASE 1.4
  10. #define LUX_HISTORGRAM_BOTTOM 64 + 12
  11. /* 40 pixels between 45th and 85th
  12. between left and right button labels */
  13. #define LUX_HISTORGRAM_LEFT 45
  14. #define LUX_HISTORGRAM_LENGTH 40
  15. typedef struct MainView MainView;
  16. typedef enum {
  17. FIXED_APERTURE,
  18. FIXED_SPEED,
  19. MODES_SIZE
  20. } MainViewMode;
  21. typedef struct {
  22. uint8_t recv[2];
  23. MainViewMode current_mode;
  24. float lux;
  25. float peakLux;
  26. float EV;
  27. float aperture_val;
  28. float speed_val;
  29. int iso_val;
  30. bool response;
  31. int iso;
  32. int nd;
  33. int aperture;
  34. int speed;
  35. bool dome;
  36. bool lux_only;
  37. int measurement_resolution;
  38. int device_addr;
  39. int sensor_type;
  40. float luxHistogram[LUX_HISTORGRAM_LENGTH];
  41. int luxHistogramIndex;
  42. } MainViewModel;
  43. typedef void (*LightMeterMainViewButtonCallback)(void* context);
  44. void lightmeter_main_view_set_left_callback(
  45. MainView* lightmeter_main_view,
  46. LightMeterMainViewButtonCallback callback,
  47. void* context);
  48. void lightmeter_main_view_set_right_callback(
  49. MainView* lightmeter_main_view,
  50. LightMeterMainViewButtonCallback callback,
  51. void* context);
  52. MainView* main_view_alloc();
  53. void main_view_free(MainView* main_view);
  54. View* main_view_get_view(MainView* main_view);
  55. void main_view_set_lux(MainView* main_view, float val);
  56. void main_view_reset_lux(MainView* main_view);
  57. void main_view_set_EV(MainView* main_view_, float val);
  58. void main_view_set_response(MainView* main_view_, bool val);
  59. void main_view_set_iso(MainView* main_view, int val);
  60. void main_view_set_nd(MainView* main_view, int val);
  61. void main_view_set_aperture(MainView* main_view, int val);
  62. void main_view_set_speed(MainView* main_view, int val);
  63. void main_view_set_dome(MainView* main_view, bool val);
  64. void main_view_set_lux_only(MainView* main_view, bool val);
  65. void main_view_set_measurement_resolution(MainView* main_view, int val);
  66. void main_view_set_device_addr(MainView* main_view, int addr);
  67. void main_view_set_sensor_type(MainView* main_view, int sensor_type);
  68. bool main_view_get_dome(MainView* main_view);
  69. void draw_top_row(Canvas* canvas, MainViewModel* context);
  70. void draw_aperture(Canvas* canvas, MainViewModel* context);
  71. void draw_speed(Canvas* canvas, MainViewModel* context);
  72. void draw_mode_indicator(Canvas* canvas, MainViewModel* context);
  73. void draw_nd_number(Canvas* canvas, MainViewModel* context);
  74. void draw_EV_number(Canvas* canvas, MainViewModel* context);
  75. void draw_lux_only_mode(Canvas* canvas, MainViewModel* context);