| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- #include "../camera_suite.h"
- #include <furi.h>
- #include <furi_hal.h>
- #include <input/input.h>
- #include <gui/elements.h>
- void camera_suite_view_start_set_callback(
- CameraSuiteViewStart* instance,
- CameraSuiteViewStartCallback callback,
- void* context) {
- furi_assert(instance);
- furi_assert(callback);
- instance->callback = callback;
- instance->context = context;
- }
- void camera_suite_view_start_draw(Canvas* canvas, CameraSuiteViewStartModel* model) {
- UNUSED(model);
- canvas_clear(canvas);
- // Draw Camera Suite logo.
- canvas_draw_circle(canvas, 82, 28, 1);
- canvas_draw_circle(canvas, 85, 29, 11);
- canvas_draw_circle(canvas, 85, 29, 6);
- canvas_draw_circle(canvas, 85, 29, 9);
- canvas_draw_circle(canvas, 104, 17, 1);
- canvas_draw_line(canvas, 70, 14, 108, 14);
- canvas_draw_line(canvas, 70, 14, 74, 10);
- canvas_draw_line(canvas, 70, 15, 70, 37);
- canvas_draw_line(canvas, 70, 32, 74, 32);
- canvas_draw_line(canvas, 75, 9, 82, 9);
- canvas_draw_line(canvas, 78, 37, 70, 37);
- canvas_draw_line(canvas, 79, 20, 70, 20);
- canvas_draw_line(canvas, 81, 18, 85, 14);
- canvas_draw_line(canvas, 82, 14, 82, 8);
- canvas_draw_line(canvas, 82, 8, 86, 4);
- canvas_draw_line(canvas, 82, 8, 95, 8);
- canvas_draw_line(canvas, 83, 14, 85, 11);
- canvas_draw_line(canvas, 84, 15, 92, 15);
- canvas_draw_line(canvas, 86, 11, 92, 11);
- canvas_draw_line(canvas, 86, 23, 84, 24);
- canvas_draw_line(canvas, 86, 24, 82, 24);
- canvas_draw_line(canvas, 86, 25, 89, 27);
- canvas_draw_line(canvas, 86, 4, 98, 4);
- canvas_draw_line(canvas, 87, 24, 91, 28);
- canvas_draw_line(canvas, 87, 26, 89, 28);
- canvas_draw_line(canvas, 88, 26, 84, 25);
- canvas_draw_line(canvas, 88, 26, 86, 24);
- canvas_draw_line(canvas, 88, 28, 89, 31);
- canvas_draw_line(canvas, 89, 28, 89, 30);
- canvas_draw_line(canvas, 90, 28, 90, 31);
- canvas_draw_line(canvas, 90, 30, 89, 33);
- canvas_draw_line(canvas, 92, 11, 93, 14);
- canvas_draw_line(canvas, 93, 16, 97, 18);
- canvas_draw_line(canvas, 94, 8, 98, 4);
- canvas_draw_line(canvas, 95, 9, 95, 14);
- canvas_draw_line(canvas, 96, 32, 107, 32);
- canvas_draw_line(canvas, 98, 19, 100, 22);
- canvas_draw_line(canvas, 98, 5, 98, 9);
- canvas_draw_line(canvas, 98, 9, 111, 9);
- canvas_draw_line(canvas, 98, 9, 96, 14);
- canvas_draw_line(canvas, 99, 20, 108, 20);
- canvas_draw_line(canvas, 100, 23, 100, 27);
- canvas_draw_line(canvas, 100, 28, 93, 36);
- canvas_draw_line(canvas, 102, 23, 104, 23);
- canvas_draw_line(canvas, 104, 23, 106, 28);
- canvas_draw_line(canvas, 104, 24, 102, 28);
- canvas_draw_line(canvas, 107, 14, 112, 9);
- canvas_draw_line(canvas, 107, 28, 108, 27);
- canvas_draw_line(canvas, 107, 37, 92, 37);
- canvas_draw_line(canvas, 108, 15, 108, 37);
- canvas_draw_line(canvas, 108, 20, 112, 16);
- canvas_draw_line(canvas, 108, 32, 112, 28);
- canvas_draw_line(canvas, 108, 37, 112, 33);
- canvas_draw_line(canvas, 112, 10, 112, 33);
- // Draw "Start" button.
- canvas_set_font(canvas, FontSecondary);
- canvas_draw_str(canvas, 46, 57, "Start");
- canvas_draw_circle(canvas, 75, 53, 2);
- canvas_draw_dot(canvas, 72, 50);
- canvas_draw_dot(canvas, 72, 56);
- canvas_draw_dot(canvas, 78, 50);
- canvas_draw_dot(canvas, 78, 56);
- canvas_draw_line(canvas, 43, 47, 43, 59);
- canvas_draw_line(canvas, 44, 46, 81, 46);
- canvas_draw_line(canvas, 44, 60, 81, 60);
- canvas_draw_line(canvas, 71, 51, 71, 55);
- canvas_draw_line(canvas, 73, 49, 77, 49);
- canvas_draw_line(canvas, 73, 57, 77, 57);
- canvas_draw_line(canvas, 74, 52, 76, 52);
- canvas_draw_line(canvas, 74, 53, 76, 53);
- canvas_draw_line(canvas, 74, 54, 77, 54);
- canvas_draw_line(canvas, 79, 51, 79, 55);
- canvas_draw_line(canvas, 82, 47, 82, 59);
- // Draw "Camera Suite" text.
- canvas_set_font(canvas, FontPrimary);
- canvas_draw_str(canvas, 16, 23, "Camera");
- canvas_set_font(canvas, FontPrimary);
- canvas_draw_str(canvas, 23, 35, "Suite");
- }
- static void camera_suite_view_start_model_init(CameraSuiteViewStartModel* const model) {
- model->some_value = 1;
- }
- bool camera_suite_view_start_input(InputEvent* event, void* context) {
- furi_assert(context);
- CameraSuiteViewStart* instance = context;
- if(event->type == InputTypeRelease) {
- switch(event->key) {
- case InputKeyBack:
- // Exit application.
- with_view_model(
- instance->view,
- CameraSuiteViewStartModel * model,
- {
- UNUSED(model);
- instance->callback(CameraSuiteCustomEventStartBack, instance->context);
- },
- true);
- break;
- case InputKeyOk:
- // Start the application.
- with_view_model(
- instance->view,
- CameraSuiteViewStartModel * model,
- {
- UNUSED(model);
- instance->callback(CameraSuiteCustomEventStartOk, instance->context);
- },
- true);
- break;
- case InputKeyMAX:
- case InputKeyLeft:
- case InputKeyRight:
- case InputKeyUp:
- case InputKeyDown:
- // Do nothing.
- break;
- }
- }
- return true;
- }
- void camera_suite_view_start_exit(void* context) {
- furi_assert(context);
- }
- void camera_suite_view_start_enter(void* context) {
- furi_assert(context);
- CameraSuiteViewStart* instance = (CameraSuiteViewStart*)context;
- with_view_model(
- instance->view,
- CameraSuiteViewStartModel * model,
- { camera_suite_view_start_model_init(model); },
- true);
- }
- CameraSuiteViewStart* camera_suite_view_start_alloc() {
- // Allocate memory for the instance
- CameraSuiteViewStart* instance = malloc(sizeof(CameraSuiteViewStart));
- // Allocate the view object
- instance->view = view_alloc();
- // Allocate model
- view_allocate_model(instance->view, ViewModelTypeLocking, sizeof(CameraSuiteViewStartModel));
- // Set context for the view (furi_assert crashes in events without this)
- view_set_context(instance->view, instance);
- // Set draw callback
- view_set_draw_callback(instance->view, (ViewDrawCallback)camera_suite_view_start_draw);
- // Set input callback
- view_set_input_callback(instance->view, camera_suite_view_start_input);
- with_view_model(
- instance->view,
- CameraSuiteViewStartModel * model,
- { camera_suite_view_start_model_init(model); },
- true);
- return instance;
- }
- void camera_suite_view_start_free(CameraSuiteViewStart* instance) {
- furi_assert(instance);
- with_view_model(
- instance->view, CameraSuiteViewStartModel * model, { UNUSED(model); }, true);
- view_free(instance->view);
- free(instance);
- }
- View* camera_suite_view_start_get_view(CameraSuiteViewStart* instance) {
- furi_assert(instance);
- return instance->view;
- }
|