… | |
… | |
143 | { |
143 | { |
144 | } |
144 | } |
145 | |
145 | |
146 | bool rxvt_display::init () |
146 | bool rxvt_display::init () |
147 | { |
147 | { |
|
|
148 | #ifdef LOCAL_X_IS_UNIX |
|
|
149 | if (id[0] == ':') |
|
|
150 | { |
|
|
151 | val = rxvt_malloc (5 + strlen (id) + 1); |
|
|
152 | strcpy (val, "unix/"); |
|
|
153 | strcat (val, id); |
|
|
154 | display = XOpenDisplay (val); |
|
|
155 | free (val); |
|
|
156 | } |
|
|
157 | else |
|
|
158 | #endif |
|
|
159 | display = 0; |
|
|
160 | |
|
|
161 | if (!display) |
148 | display = XOpenDisplay (id); |
162 | display = XOpenDisplay (id); |
149 | |
163 | |
150 | if (!display) |
164 | if (!display) |
151 | return false; |
165 | return false; |
152 | |
166 | |
153 | screen = DefaultScreen (display); |
167 | screen = DefaultScreen (display); |
… | |
… | |
157 | depth = DefaultDepth (display, screen); |
171 | depth = DefaultDepth (display, screen); |
158 | |
172 | |
159 | int fd = XConnectionNumber (display); |
173 | int fd = XConnectionNumber (display); |
160 | |
174 | |
161 | #ifndef NO_SLOW_LINK_SUPPORT |
175 | #ifndef NO_SLOW_LINK_SUPPORT |
162 | // try to detetc wether we have a local connection. |
176 | // try to detect wether we have a local connection. |
163 | // assume unix domains socket == local, everything else not |
177 | // assume unix domains socket == local, everything else not |
164 | // TODO: might want to check for inet/127.0.0.1 |
178 | // TODO: might want to check for inet/127.0.0.1 |
165 | is_local = 0; |
179 | is_local = 0; |
166 | sockaddr_un sa; |
180 | sockaddr_un sa; |
167 | socklen_t sl = sizeof (sa); |
181 | socklen_t sl = sizeof (sa); |
… | |
… | |
265 | XNextEvent (display, &xev); |
279 | XNextEvent (display, &xev); |
266 | |
280 | |
267 | #ifdef USE_XIM |
281 | #ifdef USE_XIM |
268 | if (!XFilterEvent (&xev, None)) |
282 | if (!XFilterEvent (&xev, None)) |
269 | { |
283 | { |
270 | |
|
|
271 | if (xev.type == PropertyNotify |
284 | if (xev.type == PropertyNotify |
272 | && xev.xany.window == root |
285 | && xev.xany.window == root |
273 | && xev.xproperty.atom == xa_xim_servers) |
286 | && xev.xproperty.atom == xa_xim_servers) |
274 | im_change_check (); |
287 | im_change_check (); |
275 | #endif |
288 | #endif |
… | |
… | |
460 | } |
473 | } |
461 | |
474 | |
462 | rxvt_color |
475 | rxvt_color |
463 | rxvt_color::fade (rxvt_display *display, int percent) |
476 | rxvt_color::fade (rxvt_display *display, int percent) |
464 | { |
477 | { |
|
|
478 | percent = 100 - percent; |
|
|
479 | |
465 | unsigned short cr, cg, cb; |
480 | unsigned short cr, cg, cb; |
466 | rxvt_color faded; |
481 | rxvt_color faded; |
467 | |
482 | |
468 | get (display, cr, cg, cb); |
483 | get (display, cr, cg, cb); |
|
|
484 | |
469 | faded.set (display, |
485 | faded.set ( |
|
|
486 | display, |
470 | cr * percent / 100, |
487 | cr * percent / 100, |
471 | cg * percent / 100, |
488 | cg * percent / 100, |
472 | cb * percent / 100); |
489 | cb * percent / 100 |
|
|
490 | ); |
473 | |
491 | |
474 | return faded; |
492 | return faded; |
475 | } |
493 | } |
476 | |
494 | |
|
|
495 | #define LERP(a,b,p) (a * p + b * (100 - p)) / 100 |
|
|
496 | |
|
|
497 | rxvt_color |
|
|
498 | rxvt_color::fade (rxvt_display *display, int percent, rxvt_color &fadeto) |
|
|
499 | { |
|
|
500 | percent = 100 - percent; |
|
|
501 | |
|
|
502 | unsigned short cr, cg, cb; |
|
|
503 | unsigned short fcr, fcg, fcb; |
|
|
504 | rxvt_color faded; |
|
|
505 | |
|
|
506 | get (display, cr, cg, cb); |
|
|
507 | fadeto.get(display, fcr, fcg, fcb); |
|
|
508 | |
|
|
509 | faded.set ( |
|
|
510 | display, |
|
|
511 | LERP (cr, fcr, percent), |
|
|
512 | LERP (cg, fcg, percent), |
|
|
513 | LERP (cb, fcb, percent) |
|
|
514 | ); |
|
|
515 | |
|
|
516 | return faded; |
|
|
517 | } |
|
|
518 | |