diff options
Diffstat (limited to 'examples/tablet.c')
-rw-r--r-- | examples/tablet.c | 45 |
1 files changed, 22 insertions, 23 deletions
diff --git a/examples/tablet.c b/examples/tablet.c index 5bfa1271..9379fac3 100644 --- a/examples/tablet.c +++ b/examples/tablet.c @@ -1,27 +1,27 @@ #define _POSIX_C_SOURCE 199309L #define _XOPEN_SOURCE 500 +#include <GLES2/gl2.h> +#include <math.h> #include <stdio.h> #include <stdlib.h> -#include <time.h> #include <string.h> +#include <time.h> #include <unistd.h> -#include <wayland-server.h> #include <wayland-server-protocol.h> -#include <xkbcommon/xkbcommon.h> -#include <GLES2/gl2.h> -#include <wlr/render/matrix.h> -#include <wlr/render/gles2.h> -#include <wlr/render.h> +#include <wayland-server.h> #include <wlr/backend.h> #include <wlr/backend/session.h> +#include <wlr/render/gles2.h> +#include <wlr/render/wlr_renderer.h> #include <wlr/types/wlr_box.h> +#include <wlr/types/wlr_matrix.h> #include <wlr/types/wlr_output.h> -#include <wlr/types/wlr_tablet_tool.h> #include <wlr/types/wlr_tablet_pad.h> +#include <wlr/types/wlr_tablet_tool.h> #include <wlr/util/log.h> -#include <math.h> -#include "support/shared.h" +#include <xkbcommon/xkbcommon.h> #include "support/cat.h" +#include "support/shared.h" struct sample_state { struct wlr_renderer *renderer; @@ -46,10 +46,9 @@ static void handle_output_frame(struct output_state *output, struct timespec *ts wlr_output_effective_resolution(wlr_output, &width, &height); wlr_output_make_current(wlr_output, NULL); - wlr_renderer_begin(sample->renderer, wlr_output); - wlr_renderer_clear(sample->renderer, &(float[]){0.25f, 0.25f, 0.25f, 1}); + wlr_renderer_begin(sample->renderer, wlr_output->width, wlr_output->height); + wlr_renderer_clear(sample->renderer, (float[]){0.25f, 0.25f, 0.25f, 1}); - float matrix[16]; float distance = 0.8f * (1 - sample->distance); float tool_color[4] = { distance, distance, distance, 1 }; for (size_t i = 0; sample->button && i < 4; ++i) { @@ -61,13 +60,12 @@ static void handle_output_frame(struct output_state *output, struct timespec *ts float pad_height = sample->height_mm * scale; float left = width / 2.0f - pad_width / 2.0f; float top = height / 2.0f - pad_height / 2.0f; - struct wlr_box box = { + const struct wlr_box box = { .x = left, .y = top, .width = pad_width, .height = pad_height, }; - wlr_matrix_project_box(&matrix, &box, 0, 0, - &wlr_output->transform_matrix); - wlr_render_colored_quad(sample->renderer, &sample->pad_color, &matrix); + wlr_render_rect(sample->renderer, &box, sample->pad_color, + wlr_output->transform_matrix); if (sample->proximity) { struct wlr_box box = { @@ -76,16 +74,17 @@ static void handle_output_frame(struct output_state *output, struct timespec *ts .width = 16 * (sample->pressure + 1), .height = 16 * (sample->pressure + 1), }; - wlr_matrix_project_box(&matrix, &box, 0, sample->ring, - &wlr_output->transform_matrix); - wlr_render_colored_quad(sample->renderer, &tool_color, &matrix); + float matrix[9]; + wlr_matrix_project_box(matrix, &box, WL_OUTPUT_TRANSFORM_NORMAL, + sample->ring, wlr_output->transform_matrix); + wlr_render_quad_with_matrix(sample->renderer, tool_color, matrix); + box.x += sample->x_tilt; box.y += sample->y_tilt; box.width /= 2; box.height /= 2; - wlr_matrix_project_box(&matrix, &box, 0, 0, - &wlr_output->transform_matrix); - wlr_render_colored_quad(sample->renderer, &tool_color, &matrix); + wlr_render_rect(sample->renderer, &box, tool_color, + wlr_output->transform_matrix); } wlr_renderer_end(sample->renderer); |