mirror of
https://github.com/yshui/picom.git
synced 2024-11-11 13:51:02 -05:00
e53ac7a6f9
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
102 lines
4.2 KiB
C
102 lines
4.2 KiB
C
#pragma once
|
|
#include <stdint.h>
|
|
|
|
typedef enum {
|
|
WINTYPE_UNKNOWN,
|
|
WINTYPE_DESKTOP,
|
|
WINTYPE_DOCK,
|
|
WINTYPE_TOOLBAR,
|
|
WINTYPE_MENU,
|
|
WINTYPE_UTILITY,
|
|
WINTYPE_SPLASH,
|
|
WINTYPE_DIALOG,
|
|
WINTYPE_NORMAL,
|
|
WINTYPE_DROPDOWN_MENU,
|
|
WINTYPE_POPUP_MENU,
|
|
WINTYPE_TOOLTIP,
|
|
WINTYPE_NOTIFICATION,
|
|
WINTYPE_COMBO,
|
|
WINTYPE_DND,
|
|
NUM_WINTYPES
|
|
} wintype_t;
|
|
|
|
/// Enumeration type of window painting mode.
|
|
typedef enum {
|
|
WMODE_TRANS, // The window body is (potentially) transparent
|
|
WMODE_FRAME_TRANS, // The window body is opaque, but the frame is not
|
|
WMODE_SOLID, // The window is opaque including the frame
|
|
} winmode_t;
|
|
|
|
/// Transition table:
|
|
/// (DESTROYED is when the win struct is destroyed and freed)
|
|
/// ('o' means in all other cases)
|
|
/// (Window is created in the UNMAPPED state)
|
|
/// +-------------+---------+----------+-------+-------+--------+--------+---------+
|
|
/// | |UNMAPPING|DESTROYING|MAPPING|FADING |UNMAPPED| MAPPED |DESTROYED|
|
|
/// +-------------+---------+----------+-------+-------+--------+--------+---------+
|
|
/// | UNMAPPING | o | Window |Window | - | Fading | - | - |
|
|
/// | | |destroyed |mapped | |finished| | |
|
|
/// +-------------+---------+----------+-------+-------+--------+--------+---------+
|
|
/// | DESTROYING | - | o | - | - | - | - | Fading |
|
|
/// | | | | | | | |finished |
|
|
/// +-------------+---------+----------+-------+-------+--------+--------+---------+
|
|
/// | MAPPING | Window | Window | o |Opacity| - | Fading | - |
|
|
/// | |unmapped |destroyed | |change | |finished| |
|
|
/// +-------------+---------+----------+-------+-------+--------+--------+---------+
|
|
/// | FADING | Window | Window | - | o | - | Fading | - |
|
|
/// | |unmapped |destroyed | | | |finished| |
|
|
/// +-------------+---------+----------+-------+-------+--------+--------+---------+
|
|
/// | UNMAPPED | - | - |Window | - | o | - | Window |
|
|
/// | | | |mapped | | | |destroyed|
|
|
/// +-------------+---------+----------+-------+-------+--------+--------+---------+
|
|
/// | MAPPED | Window | Window | - |Opacity| - | o | - |
|
|
/// | |unmapped |destroyed | |change | | | |
|
|
/// +-------------+---------+----------+-------+-------+--------+--------+---------+
|
|
typedef enum {
|
|
// The window is being faded out because it's unmapped.
|
|
WSTATE_UNMAPPING,
|
|
// The window is being faded out because it's destroyed,
|
|
WSTATE_DESTROYING,
|
|
// The window is being faded in
|
|
WSTATE_MAPPING,
|
|
// Window opacity is not at the target level
|
|
WSTATE_FADING,
|
|
// The window is mapped, no fading is in progress.
|
|
WSTATE_MAPPED,
|
|
// The window is unmapped, no fading is in progress.
|
|
WSTATE_UNMAPPED,
|
|
} winstate_t;
|
|
|
|
enum win_flags {
|
|
// Note: *_NONE flags are mostly redudant and meant for detecting logical errors
|
|
// in the code
|
|
|
|
/// pixmap is out of date, will be update in win_process_flags
|
|
WIN_FLAGS_PIXMAP_STALE = 1,
|
|
/// window does not have pixmap bound
|
|
WIN_FLAGS_PIXMAP_NONE = 2,
|
|
/// there was an error trying to bind the images
|
|
WIN_FLAGS_IMAGE_ERROR = 4,
|
|
/// shadow is out of date, will be updated in win_process_flags
|
|
WIN_FLAGS_SHADOW_STALE = 8,
|
|
/// shadow has not been generated
|
|
WIN_FLAGS_SHADOW_NONE = 16,
|
|
/// the client window needs to be updated
|
|
WIN_FLAGS_CLIENT_STALE = 32,
|
|
/// the window is mapped by X, we need to call map_win_start for it
|
|
WIN_FLAGS_MAPPED = 64,
|
|
/// this window has properties which needs to be updated
|
|
WIN_FLAGS_PROPERTY_STALE = 128,
|
|
// TODO(yshui) _maybe_ split SIZE_STALE into SIZE_STALE and SHAPE_STALE
|
|
/// this window has an unhandled size/shape change
|
|
WIN_FLAGS_SIZE_STALE = 256,
|
|
/// this window has an unhandled position (i.e. x and y) change
|
|
WIN_FLAGS_POSITION_STALE = 512,
|
|
/// need better name for this, is set when some aspects of the window changed
|
|
WIN_FLAGS_FACTOR_CHANGED = 1024,
|
|
};
|
|
|
|
static const uint64_t WIN_FLAGS_IMAGES_STALE =
|
|
WIN_FLAGS_PIXMAP_STALE | WIN_FLAGS_SHADOW_STALE;
|
|
|
|
#define WIN_FLAGS_IMAGES_NONE (WIN_FLAGS_PIXMAP_NONE | WIN_FLAGS_SHADOW_NONE)
|