| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #pragma once
- #include <gui/view.h>
- #include "lightmeter_icons.h"
- #include "../../lightmeter_config.h"
- /* log base 1.4 and 12 pixels cut off
- makes it show values approx 65-65k
- with reasonable resolution in 1-10k range
- on 20px of screen height */
- #define LUX_HISTORGRAM_LOGBASE 1.4
- #define LUX_HISTORGRAM_BOTTOM 64 + 12
- /* 40 pixels between 45th and 85th
- between left and right button labels */
- #define LUX_HISTORGRAM_LEFT 45
- #define LUX_HISTORGRAM_LENGTH 40
- typedef struct MainView MainView;
- typedef enum {
- FIXED_APERTURE,
- FIXED_SPEED,
- MODES_SIZE
- } MainViewMode;
- typedef struct {
- uint8_t recv[2];
- MainViewMode current_mode;
- float lux;
- float peakLux;
- float EV;
- float aperture_val;
- float speed_val;
- int iso_val;
- bool response;
- int iso;
- int nd;
- int aperture;
- int speed;
- bool dome;
- bool lux_only;
- int measurement_resolution;
- int device_addr;
- int sensor_type;
- float luxHistogram[LUX_HISTORGRAM_LENGTH];
- int luxHistogramIndex;
- } MainViewModel;
- typedef void (*LightMeterMainViewButtonCallback)(void* context);
- void lightmeter_main_view_set_left_callback(
- MainView* lightmeter_main_view,
- LightMeterMainViewButtonCallback callback,
- void* context);
- void lightmeter_main_view_set_right_callback(
- MainView* lightmeter_main_view,
- LightMeterMainViewButtonCallback callback,
- void* context);
- MainView* main_view_alloc();
- void main_view_free(MainView* main_view);
- View* main_view_get_view(MainView* main_view);
- void main_view_set_lux(MainView* main_view, float val);
- void main_view_reset_lux(MainView* main_view);
- void main_view_set_EV(MainView* main_view_, float val);
- void main_view_set_response(MainView* main_view_, bool val);
- void main_view_set_iso(MainView* main_view, int val);
- void main_view_set_nd(MainView* main_view, int val);
- void main_view_set_aperture(MainView* main_view, int val);
- void main_view_set_speed(MainView* main_view, int val);
- void main_view_set_dome(MainView* main_view, bool val);
- void main_view_set_lux_only(MainView* main_view, bool val);
- void main_view_set_measurement_resolution(MainView* main_view, int val);
- void main_view_set_device_addr(MainView* main_view, int addr);
- void main_view_set_sensor_type(MainView* main_view, int sensor_type);
- bool main_view_get_dome(MainView* main_view);
- void draw_top_row(Canvas* canvas, MainViewModel* context);
- void draw_aperture(Canvas* canvas, MainViewModel* context);
- void draw_speed(Canvas* canvas, MainViewModel* context);
- void draw_mode_indicator(Canvas* canvas, MainViewModel* context);
- void draw_nd_number(Canvas* canvas, MainViewModel* context);
- void draw_EV_number(Canvas* canvas, MainViewModel* context);
- void draw_lux_only_mode(Canvas* canvas, MainViewModel* context);
|