… | |
… | |
153 | strcat (val, id); |
153 | strcat (val, id); |
154 | display = XOpenDisplay (val); |
154 | display = XOpenDisplay (val); |
155 | free (val); |
155 | free (val); |
156 | } |
156 | } |
157 | else |
157 | else |
|
|
158 | #endif |
158 | display = 0; |
159 | display = 0; |
159 | #endif |
|
|
160 | |
160 | |
161 | if (!display) |
161 | if (!display) |
162 | display = XOpenDisplay (id); |
162 | display = XOpenDisplay (id); |
163 | |
163 | |
164 | if (!display) |
164 | if (!display) |
… | |
… | |
171 | depth = DefaultDepth (display, screen); |
171 | depth = DefaultDepth (display, screen); |
172 | |
172 | |
173 | int fd = XConnectionNumber (display); |
173 | int fd = XConnectionNumber (display); |
174 | |
174 | |
175 | #ifndef NO_SLOW_LINK_SUPPORT |
175 | #ifndef NO_SLOW_LINK_SUPPORT |
176 | // try to detetc wether we have a local connection. |
176 | // try to detect wether we have a local connection. |
177 | // assume unix domains socket == local, everything else not |
177 | // assume unix domains socket == local, everything else not |
178 | // TODO: might want to check for inet/127.0.0.1 |
178 | // TODO: might want to check for inet/127.0.0.1 |
179 | is_local = 0; |
179 | is_local = 0; |
180 | sockaddr_un sa; |
180 | sockaddr_un sa; |
181 | socklen_t sl = sizeof (sa); |
181 | socklen_t sl = sizeof (sa); |
… | |
… | |
227 | return true; |
227 | return true; |
228 | } |
228 | } |
229 | |
229 | |
230 | rxvt_display::~rxvt_display () |
230 | rxvt_display::~rxvt_display () |
231 | { |
231 | { |
|
|
232 | #ifdef POINTER_BLANK |
|
|
233 | XFreeCursor (display, blank_cursor); |
|
|
234 | #endif |
232 | x_ev.stop (); |
235 | x_ev.stop (); |
233 | #ifdef USE_XIM |
236 | #ifdef USE_XIM |
234 | xims.clear (); |
237 | xims.clear (); |
235 | #endif |
238 | #endif |
236 | |
239 | |
… | |
… | |
279 | XNextEvent (display, &xev); |
282 | XNextEvent (display, &xev); |
280 | |
283 | |
281 | #ifdef USE_XIM |
284 | #ifdef USE_XIM |
282 | if (!XFilterEvent (&xev, None)) |
285 | if (!XFilterEvent (&xev, None)) |
283 | { |
286 | { |
284 | |
|
|
285 | if (xev.type == PropertyNotify |
287 | if (xev.type == PropertyNotify |
286 | && xev.xany.window == root |
288 | && xev.xany.window == root |
287 | && xev.xproperty.atom == xa_xim_servers) |
289 | && xev.xproperty.atom == xa_xim_servers) |
288 | im_change_check (); |
290 | im_change_check (); |
289 | #endif |
291 | #endif |
… | |
… | |
474 | } |
476 | } |
475 | |
477 | |
476 | rxvt_color |
478 | rxvt_color |
477 | rxvt_color::fade (rxvt_display *display, int percent) |
479 | rxvt_color::fade (rxvt_display *display, int percent) |
478 | { |
480 | { |
|
|
481 | percent = 100 - percent; |
|
|
482 | |
479 | unsigned short cr, cg, cb; |
483 | unsigned short cr, cg, cb; |
480 | rxvt_color faded; |
484 | rxvt_color faded; |
481 | |
485 | |
482 | get (display, cr, cg, cb); |
486 | get (display, cr, cg, cb); |
|
|
487 | |
483 | faded.set (display, |
488 | faded.set ( |
|
|
489 | display, |
484 | cr * percent / 100, |
490 | cr * percent / 100, |
485 | cg * percent / 100, |
491 | cg * percent / 100, |
486 | cb * percent / 100); |
492 | cb * percent / 100 |
|
|
493 | ); |
487 | |
494 | |
488 | return faded; |
495 | return faded; |
489 | } |
496 | } |
490 | |
497 | |
|
|
498 | #define LERP(a,b,p) (a * p + b * (100 - p)) / 100 |
|
|
499 | |
|
|
500 | rxvt_color |
|
|
501 | rxvt_color::fade (rxvt_display *display, int percent, rxvt_color &fadeto) |
|
|
502 | { |
|
|
503 | percent = 100 - percent; |
|
|
504 | |
|
|
505 | unsigned short cr, cg, cb; |
|
|
506 | unsigned short fcr, fcg, fcb; |
|
|
507 | rxvt_color faded; |
|
|
508 | |
|
|
509 | get (display, cr, cg, cb); |
|
|
510 | fadeto.get(display, fcr, fcg, fcb); |
|
|
511 | |
|
|
512 | faded.set ( |
|
|
513 | display, |
|
|
514 | LERP (cr, fcr, percent), |
|
|
515 | LERP (cg, fcg, percent), |
|
|
516 | LERP (cb, fcb, percent) |
|
|
517 | ); |
|
|
518 | |
|
|
519 | return faded; |
|
|
520 | } |
|
|
521 | |