aboutsummaryrefslogtreecommitdiff
path: root/examples/tablet.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/tablet.c')
-rw-r--r--examples/tablet.c45
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);