From aaf57e5ee1e0cf74afdbdf56293f1afd7e79e6b0 Mon Sep 17 00:00:00 2001 From: Adam NAILI Date: Thu, 28 Dec 2017 16:22:43 +0100 Subject: Reworking signatures of pictureframe function, beginning of implementation, debug tests --- include/gui/pictureframe.h | 5 ++++- src/gui/pictureframe.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ test/gui/group.c | 2 +- test/gui/pictureframe.c | 40 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 src/gui/pictureframe.c create mode 100644 test/gui/pictureframe.c diff --git a/include/gui/pictureframe.h b/include/gui/pictureframe.h index de9ae1c..1f5407c 100644 --- a/include/gui/pictureframe.h +++ b/include/gui/pictureframe.h @@ -3,6 +3,7 @@ #include #include +#include "component.h" /** * File: pictureframe.h @@ -12,6 +13,7 @@ * Type of functions needed to split CartesianMapping and keep only the CartesianVector needed, related to the type of PictureFrame involved */ typedef CartesianVector (*CartesianMappingDivision)(const CartesianMapping *cartesianMapping); + /** * Struct: PictureFrame * Represents a component to print pictures. @@ -47,7 +49,8 @@ CartesianVector pictureframe_origin_split(const CartesianMapping *cartesianMappi */ CartesianVector pictureframe_target_split(const CartesianMapping *cartesianMapping); -void pictureframe_init(PictureFrame *pictureFrame, int width, int height, int x_pos, int y_pos, CartesianMappingDivision cartesianMappingDivision); +void pictureframe_init(PictureFrame *pictureFrame, int width, int height, int x_pos, int y_pos, + CartesianMappingDivision cartesianMappingDivision, Morphing *morphing, Canvas *canvas); void pictureframe_free(PictureFrame *pictureFrame); diff --git a/src/gui/pictureframe.c b/src/gui/pictureframe.c new file mode 100644 index 0000000..543ba4c --- /dev/null +++ b/src/gui/pictureframe.c @@ -0,0 +1,45 @@ +#include +#include +#include + +CartesianVector pictureframe_origin_split(const CartesianMapping *cartesianMapping) { + +} + +CartesianVector pictureframe_target_split(const CartesianMapping *cartesianMapping) { + +} + +void pictureframe_print(Component *parameterSelf) { + PictureFrame *self = (PictureFrame *) parameterSelf; + /*DEBUG*/ + MLV_draw_filled_rectangle(self->component.x_pos, self->component.y_pos, self->component.width, self->component.height, + MLV_COLOR_RED); + /**/ +} + +void pictureframe_click_handler(int x_pos, int y_pos, Component *parameterSelf) { + printf("ClickHandler pictureframe activated \n"); +} + +void pictureframe_init(PictureFrame *pictureFrame, int width, int height, int x_pos, int y_pos, + CartesianMappingDivision cartesianMappingDivision, Morphing *morphing, Canvas *canvas) { + assert(pictureFrame != NULL); + assert(width > 0); + assert(height > 0); + assert(x_pos >= 0); + assert(y_pos >= 0); + assert(cartesianMappingDivision != NULL); + assert(morphing != NULL); + assert(canvas != NULL); + pictureFrame->component.width = width; + pictureFrame->component.height = height; + pictureFrame->component.x_pos = x_pos; + pictureFrame->component.y_pos = y_pos; + pictureFrame->component.activated = true; + pictureFrame->component.print_method = pictureframe_print; + pictureFrame->component.click_handler = pictureframe_click_handler; + pictureFrame->morphing = morphing; + pictureFrame->canvas = canvas; + pictureFrame->cartesianMappingDivision = cartesianMappingDivision; +} \ No newline at end of file diff --git a/test/gui/group.c b/test/gui/group.c index 99a567e..5ec9194 100644 --- a/test/gui/group.c +++ b/test/gui/group.c @@ -4,7 +4,7 @@ static void test_group() { - Window window; + /*Window window; window_init(&window, 1000, 512, "Coucou"); window_create(&window); diff --git a/test/gui/pictureframe.c b/test/gui/pictureframe.c new file mode 100644 index 0000000..a47eaa0 --- /dev/null +++ b/test/gui/pictureframe.c @@ -0,0 +1,40 @@ +#include +#include +#include "MLV/MLV_all.h" + + +static void test_pictureframe() { + Window window; + window_init(&window, 1000, 512, "Coucou"); + window_create(&window); + + PictureFrame pictureFrame1; + PictureFrame pictureFrame2; + + Morphing *morphing = morphing_create(500,250); + Canvas canvas; + canvas_init(&canvas,500,250); + + pictureframe_init(&pictureFrame1,500,250,0,0,pictureframe_origin_split,morphing,&canvas); + pictureframe_init(&pictureFrame2,500,250,0,0,pictureframe_target_split,morphing,&canvas); + + window_add_pictureframe(&window,&pictureFrame1); + window_add_pictureframe(&window,&pictureFrame2); + + window_print_pictureframes(&window); + int mouse_x; + int mouse_y; + while(1){ + if (MLV_get_mouse_button_state(MLV_BUTTON_LEFT) == MLV_PRESSED) { + MLV_get_mouse_position(&mouse_x, &mouse_y); + group_click_handler(mouse_x,mouse_y,&(window.group_pictureframe->component)); + } + } + /*MLV_wait_seconds(15); + window_free(&window);*/ +} + +int main() { + test_pictureframe(); + return 0; +} \ No newline at end of file -- cgit v1.2.3