mirror of
https://codeberg.org/vyivel/dulcepan/
synced 2025-03-12 10:49:15 +02:00
Drop cairo
This commit is contained in:
parent
3d604a4380
commit
cc13becc46
60
main.c
60
main.c
@ -1,5 +1,4 @@
|
||||
#include <assert.h>
|
||||
#include <cairo.h>
|
||||
#include <fcntl.h>
|
||||
#include <linux/input-event-codes.h>
|
||||
#include <pixman.h>
|
||||
@ -24,8 +23,7 @@
|
||||
struct dp_swapchain_buffer {
|
||||
struct wl_buffer *buffer;
|
||||
void *data;
|
||||
cairo_surface_t *cairo_surface;
|
||||
cairo_t *cairo;
|
||||
pixman_image_t *image;
|
||||
bool used;
|
||||
};
|
||||
|
||||
@ -104,6 +102,10 @@ static int pointer_y = 0;
|
||||
|
||||
static bool quick = false;
|
||||
|
||||
static pixman_image_t *unselected_fill_image = NULL;
|
||||
static pixman_image_t *selected_fill_image = NULL;
|
||||
static pixman_image_t *border_fill_image = NULL;
|
||||
|
||||
static void die(const char *fmt, ...) {
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
@ -227,23 +229,29 @@ static void redraw(struct dp_output *output) {
|
||||
}
|
||||
sc_buffer->used = true;
|
||||
|
||||
cairo_set_operator(sc_buffer->cairo, CAIRO_OPERATOR_SOURCE);
|
||||
|
||||
cairo_set_source_rgba(sc_buffer->cairo, 0.5, 0.5, 0.5, 0.5);
|
||||
cairo_paint(sc_buffer->cairo);
|
||||
pixman_image_composite32(PIXMAN_OP_SRC, unselected_fill_image, NULL, sc_buffer->image, 0, 0, 0,
|
||||
0, 0, 0, output->px_width, output->px_height);
|
||||
|
||||
if (output == selected_output) {
|
||||
cairo_rectangle(sc_buffer->cairo, selected_x, selected_y, selected_width, selected_height);
|
||||
cairo_set_line_width(sc_buffer->cairo, 4);
|
||||
int border_size = 2;
|
||||
|
||||
cairo_set_source_rgba(sc_buffer->cairo, 1.0, 1.0, 1.0, 1.0);
|
||||
cairo_stroke_preserve(sc_buffer->cairo);
|
||||
cairo_set_source_rgba(sc_buffer->cairo, 0.0, 0.0, 0.0, 0.0);
|
||||
cairo_fill(sc_buffer->cairo);
|
||||
pixman_image_composite32(PIXMAN_OP_SRC, border_fill_image, NULL, sc_buffer->image, 0, 0, 0,
|
||||
0, selected_x - border_size, selected_y - border_size,
|
||||
selected_width + border_size * 2, border_size);
|
||||
pixman_image_composite32(PIXMAN_OP_SRC, border_fill_image, NULL, sc_buffer->image, 0, 0, 0,
|
||||
0, selected_x - border_size, selected_y + selected_height,
|
||||
selected_width + border_size * 2, border_size);
|
||||
pixman_image_composite32(PIXMAN_OP_SRC, border_fill_image, NULL, sc_buffer->image, 0, 0, 0,
|
||||
0, selected_x - border_size, selected_y, border_size, selected_height);
|
||||
pixman_image_composite32(PIXMAN_OP_SRC, border_fill_image, NULL, sc_buffer->image, 0, 0, 0,
|
||||
0, selected_x + selected_width, selected_y, border_size, selected_height);
|
||||
|
||||
pixman_image_composite32(PIXMAN_OP_SRC, selected_fill_image, NULL, sc_buffer->image, 0, 0,
|
||||
0, 0, selected_x, selected_y, selected_width, selected_height);
|
||||
}
|
||||
|
||||
wl_surface_attach(output->ui_surface, sc_buffer->buffer, 0, 0);
|
||||
wl_surface_damage(output->ui_surface, 0, 0, 200000000, 200000000);
|
||||
wl_surface_damage(output->ui_surface, 0, 0, output->px_width, output->px_height);
|
||||
wl_surface_commit(output->ui_surface);
|
||||
}
|
||||
|
||||
@ -734,9 +742,8 @@ int main(void) {
|
||||
int stride = output->frame_width * 4;
|
||||
sc_buffer->buffer = create_buffer(output->px_width, output->px_height, stride,
|
||||
WL_SHM_FORMAT_ARGB8888, &sc_buffer->data);
|
||||
sc_buffer->cairo_surface = cairo_image_surface_create_for_data(sc_buffer->data,
|
||||
CAIRO_FORMAT_ARGB32, output->px_width, output->px_height, stride);
|
||||
sc_buffer->cairo = cairo_create(sc_buffer->cairo_surface);
|
||||
sc_buffer->image = pixman_image_create_bits(
|
||||
PIXMAN_a8r8g8b8, output->px_width, output->px_height, sc_buffer->data, stride);
|
||||
|
||||
wl_buffer_add_listener(sc_buffer->buffer, &sc_buffer_listener, sc_buffer);
|
||||
}
|
||||
@ -750,6 +757,25 @@ int main(void) {
|
||||
}
|
||||
}
|
||||
|
||||
unselected_fill_image = pixman_image_create_solid_fill(&(pixman_color_t){
|
||||
.red = UINT16_MAX / 2,
|
||||
.green = UINT16_MAX / 2,
|
||||
.blue = UINT16_MAX / 2,
|
||||
.alpha = UINT16_MAX / 2,
|
||||
});
|
||||
selected_fill_image = pixman_image_create_solid_fill(&(pixman_color_t){
|
||||
.red = 0,
|
||||
.green = 0,
|
||||
.blue = 0,
|
||||
.alpha = 0,
|
||||
});
|
||||
border_fill_image = pixman_image_create_solid_fill(&(pixman_color_t){
|
||||
.red = UINT16_MAX,
|
||||
.green = UINT16_MAX,
|
||||
.blue = UINT16_MAX,
|
||||
.alpha = UINT16_MAX,
|
||||
});
|
||||
|
||||
// Select the "first" output, whatever that is
|
||||
selected_output = wl_container_of(outputs.next, selected_output, link);
|
||||
select_whole();
|
||||
|
@ -43,7 +43,6 @@ add_project_arguments(cc.get_supported_arguments([
|
||||
wayland_client = dependency('wayland-client')
|
||||
wayland_protos = dependency('wayland-protocols')
|
||||
|
||||
cairo = dependency('cairo')
|
||||
pixman = dependency('pixman-1')
|
||||
xkbcommon = dependency('xkbcommon')
|
||||
|
||||
@ -59,7 +58,6 @@ executable(
|
||||
dependencies: [
|
||||
client_protos,
|
||||
wayland_client,
|
||||
cairo,
|
||||
pixman,
|
||||
xkbcommon,
|
||||
],
|
||||
|
Loading…
x
Reference in New Issue
Block a user