labwc/include/common/scaled-img-buffer.h
tokyo4j 45f73b58a1 img: remove padding_x from lab_img_render()
padding_x in lab_img_render() was just to make sure window icons in the
titlebar doesn't get too close to adjacent buttons and it didn't felt
clean. To remove it from lab_img, this commit changes the size of window
icon buffers from (window.button.width)x(window.button.height) to
(window.button.width * 0.8)x(window.button.height) and horizontally
slide it by (window.button.width * 0.1) to keep the horizontal padding.

Note that the size of the hitbox for a window icon is kept the same and
nothing is changed from user's perspective.
2025-01-25 07:27:21 +09:00

76 lines
3.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef LABWC_SCALED_IMG_BUFFER_H
#define LABWC_SCALED_IMG_BUFFER_H
#include <stdbool.h>
struct wlr_scene_tree;
struct wlr_scene_node;
struct wlr_scene_buffer;
struct lab_img;
struct scaled_img_buffer {
struct scaled_scene_buffer *scaled_buffer;
struct wlr_scene_buffer *scene_buffer;
struct lab_img *img;
int width;
int height;
};
/*
* | |
* .------------------. .------------.
* scaled_img_buffer | new_output_scale | | set_buffer |
* architecture ´------------------` ´------------`
* | ^
* .--------------------------------|----------------|-------------.
* | v | |
* | .-------------------. .-------------------------. |
* | | scaled_img_buffer |----| wlr_buffer LRU cache(2) |<----, |
* | ´-------------------` ´-------------------------` | |
* | | | | |
* | | .--------------------------. | |
* | | | wlr_buffer LRU cache of | | |
* .-------. | | | other scaled_img_buffers | | |
* | theme | | | | with lab_img_equal() | | |
* ´-------` | | ´--------------------------` | |
* | | | / | | |
* | | | not found found | |
* .---------. | .---------. .----------. .------------. | |
* | lab_img |-img_copy-->| lab_img |-----| render() |--->| wlr_buffer |-----` |
* ´---------` | ´---------` ´----------` ´------------` |
* \ | / |
* \ ´----------/----------------------------------------------------`
* \ /
* .----------------. lab_img provides:
* | lab_img_data | - render function
* | refcount=2 | - list of modification functions
* | `-----------------. to apply on top of lib_img_data
* | | when rendering
* | provides (depending on backend): | - lab_img_equal() comparing the
* | - librsvg handle | lab_img_data reference and
* | - cairo surface | modification function pointers
* ´----------------------------------` of two given lab_img instances
*
*/
/*
* Create an auto scaling image buffer, providing a wlr_scene_buffer node for
* display. It gets destroyed automatically when the backing scaled_scene_buffer
* is being destroyed which in turn happens automatically when the backing
* wlr_scene_buffer (or one of its parents) is being destroyed.
*
* This function clones the lab_img passed as the image source, so callers are
* free to destroy it.
*/
struct scaled_img_buffer *scaled_img_buffer_create(struct wlr_scene_tree *parent,
struct lab_img *img, int width, int height);
/* Update image, width and height of the scaled_img_buffer */
void scaled_img_buffer_update(struct scaled_img_buffer *self,
struct lab_img *img, int width, int height);
/* Obtain scaled_img_buffer from wlr_scene_node */
struct scaled_img_buffer *scaled_img_buffer_from_node(struct wlr_scene_node *node);
#endif /* LABWC_SCALED_IMG_BUFFER_H */