1
0
Fork 0
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:
dolio 2004-09-18 00:13:15 +00:00
parent 76e259ed57
commit 34c09f7b7f
3 changed files with 46 additions and 11 deletions

View file

@ -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):

View file

@ -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.

View file

@ -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;