mirror of
https://github.com/yshui/picom.git
synced 2024-11-03 04:33:49 -05:00
Added various options for client-side shadows (offset, opacity,
blur-radius) based on the work of Thomas Luebking, along with the man entries and usage information to go along with them.
This commit is contained in:
parent
76e259ed57
commit
34c09f7b7f
3 changed files with 46 additions and 11 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2004-09-17 Dan Doel <dolio@case.edu>
|
||||||
|
|
||||||
|
* xcompmgr.c: (win_extents), (usage), (main):
|
||||||
|
Added various client-side shadow options (opacity, offset, radius)
|
||||||
|
based on the work of Thomas Luebking.
|
||||||
|
* xcompmgr.1:
|
||||||
|
Added descriptions of the options in the man page.
|
||||||
|
|
||||||
2004-09-17 Dan Doel <dolio@case.edu>
|
2004-09-17 Dan Doel <dolio@case.edu>
|
||||||
|
|
||||||
* xcompmgr.c: (usage):
|
* xcompmgr.c: (usage):
|
||||||
|
|
16
xcompmgr.1
16
xcompmgr.1
|
@ -4,7 +4,7 @@
|
||||||
xcompmgr \- sample X compositing manager
|
xcompmgr \- sample X compositing manager
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.nf
|
.nf
|
||||||
.B xcompmgr [\-d display] [\-acfnsCFS]
|
.B xcompmgr [\-d display] [\-r radius] [\-o opacity] [\-l left-offset] [\-t top-offset] [\-acCfFnsS]
|
||||||
.fi
|
.fi
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.B xcompmgr
|
.B xcompmgr
|
||||||
|
@ -15,6 +15,18 @@ and COMPOSITE extensions. It enables basic eye-candy effects.
|
||||||
.BI \-d\ display
|
.BI \-d\ display
|
||||||
Specifies the display to manage.
|
Specifies the display to manage.
|
||||||
.TP
|
.TP
|
||||||
|
.BI \-r\ radius
|
||||||
|
Specifies the blur radius for client-side shadows.
|
||||||
|
.TP
|
||||||
|
.BI \-o\ opacity
|
||||||
|
Specifies the opacity for client-side shadows.
|
||||||
|
.TP
|
||||||
|
.BI \-l\ left-offset
|
||||||
|
Specifies the left offset for client-side shadows.
|
||||||
|
.TP
|
||||||
|
.BI \-t\ top-offset
|
||||||
|
Specifies the top offset for client-side shadows.
|
||||||
|
.TP
|
||||||
.BI \-a
|
.BI \-a
|
||||||
Automatic server-side compositing. This instructs the server to use the
|
Automatic server-side compositing. This instructs the server to use the
|
||||||
standard composition rules. Useful for debugging.
|
standard composition rules. Useful for debugging.
|
||||||
|
@ -45,4 +57,4 @@ Enables synchronous operation. Useful for debugging.
|
||||||
Probably. Please report any you find to http://bugs.freedesktop.org/.
|
Probably. Please report any you find to http://bugs.freedesktop.org/.
|
||||||
.SH AUTHORS
|
.SH AUTHORS
|
||||||
Keith Packard, with contributions from Matthew Allum, Eric Anholt, Dan Doel,
|
Keith Packard, with contributions from Matthew Allum, Eric Anholt, Dan Doel,
|
||||||
Matthew Hawn, Ely Levy, Phil Blundell, and Carl Worth.
|
Thomas Luebking, Matthew Hawn, Ely Levy, Phil Blundell, and Carl Worth.
|
||||||
|
|
33
xcompmgr.c
33
xcompmgr.c
|
@ -178,6 +178,9 @@ win_extents (Display *dpy, win *w);
|
||||||
CompMode compMode = CompSimple;
|
CompMode compMode = CompSimple;
|
||||||
|
|
||||||
int shadowRadius = 12;
|
int shadowRadius = 12;
|
||||||
|
int shadowOffsetX = -15;
|
||||||
|
int shadowOffsetY = -15;
|
||||||
|
double shadowOpacity = .75;
|
||||||
|
|
||||||
double fade_in_step = 0.028;
|
double fade_in_step = 0.028;
|
||||||
double fade_out_step = 0.03;
|
double fade_out_step = 0.03;
|
||||||
|
@ -361,10 +364,6 @@ run_fades (Display *dpy)
|
||||||
fade_time = now + fade_delta;
|
fade_time = now + fade_delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SHADOW_OPACITY 0.75
|
|
||||||
#define SHADOW_OFFSET_X (-shadowRadius * 5 / 4)
|
|
||||||
#define SHADOW_OFFSET_Y (-shadowRadius * 5 / 4)
|
|
||||||
|
|
||||||
static double
|
static double
|
||||||
gaussian (double r, double x, double y)
|
gaussian (double r, double x, double y)
|
||||||
{
|
{
|
||||||
|
@ -779,11 +778,11 @@ win_extents (Display *dpy, win *w)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
w->shadow_dx = SHADOW_OFFSET_X;
|
w->shadow_dx = shadowOffsetX;
|
||||||
w->shadow_dy = SHADOW_OFFSET_Y;
|
w->shadow_dy = shadowOffsetY;
|
||||||
if (!w->shadow)
|
if (!w->shadow)
|
||||||
{
|
{
|
||||||
double opacity = SHADOW_OPACITY;
|
double opacity = shadowOpacity;
|
||||||
if (w->mode == WINDOW_TRANS)
|
if (w->mode == WINDOW_TRANS)
|
||||||
opacity = opacity * ((double)w->opacity)/((double)OPAQUE);
|
opacity = opacity * ((double)w->opacity)/((double)OPAQUE);
|
||||||
w->shadow = shadow_picture (dpy, opacity, w->alphaPict,
|
w->shadow = shadow_picture (dpy, opacity, w->alphaPict,
|
||||||
|
@ -1757,9 +1756,13 @@ ev_window (XEvent *ev)
|
||||||
void
|
void
|
||||||
usage (char *program)
|
usage (char *program)
|
||||||
{
|
{
|
||||||
fprintf (stderr, "usage: %s [-d display] [-acCfFnsS]\n", program);
|
fprintf (stderr, "usage: %s [options]\n", program);
|
||||||
fprintf (stderr, "Options\n");
|
fprintf (stderr, "Options\n");
|
||||||
fprintf (stderr, " -d display\n Specifies which display should be managed.\n");
|
fprintf (stderr, " -d display\n Specifies which display should be managed.\n");
|
||||||
|
fprintf (stderr, " -r radius\n Specifies the blur radius for client-side shadows. (default 12)\n");
|
||||||
|
fprintf (stderr, " -o opacity\n Specifies the translucency for client-side shadows. (default .75)\n");
|
||||||
|
fprintf (stderr, " -l left-offset\n Specifies the left offset for client-side shadows. (default -15)\n");
|
||||||
|
fprintf (stderr, " -t top-offset\n Specifies the top offset for clinet-side shadows. (default -15)\n");
|
||||||
fprintf (stderr, " -a\n Use automatic server-side compositing. Faster, but no special effects.\n");
|
fprintf (stderr, " -a\n Use automatic server-side compositing. Faster, but no special effects.\n");
|
||||||
fprintf (stderr, " -c\n Draw client-side shadows with fuzzy edges.\n");
|
fprintf (stderr, " -c\n Draw client-side shadows with fuzzy edges.\n");
|
||||||
fprintf (stderr, " -C\n Avoid drawing shadows on dock/panel windows.\n");
|
fprintf (stderr, " -C\n Avoid drawing shadows on dock/panel windows.\n");
|
||||||
|
@ -1795,7 +1798,7 @@ main (int argc, char **argv)
|
||||||
char *display = 0;
|
char *display = 0;
|
||||||
int o;
|
int o;
|
||||||
|
|
||||||
while ((o = getopt (argc, argv, "d:scnfFCaS")) != -1)
|
while ((o = getopt (argc, argv, "d:r:o:l:t:scnfFCaS")) != -1)
|
||||||
{
|
{
|
||||||
switch (o) {
|
switch (o) {
|
||||||
case 'd':
|
case 'd':
|
||||||
|
@ -1825,6 +1828,18 @@ main (int argc, char **argv)
|
||||||
case 'S':
|
case 'S':
|
||||||
synchronize = True;
|
synchronize = True;
|
||||||
break;
|
break;
|
||||||
|
case 'r':
|
||||||
|
shadowRadius = atoi (optarg);
|
||||||
|
break;
|
||||||
|
case 'o':
|
||||||
|
shadowOpacity = atof (optarg);
|
||||||
|
break;
|
||||||
|
case 'l':
|
||||||
|
shadowOffsetX = atoi (optarg);
|
||||||
|
break;
|
||||||
|
case 't':
|
||||||
|
shadowOffsetY = atoi (optarg);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
usage (argv[0]);
|
usage (argv[0]);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue