X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fxmatrix.c;h=9f97bb773205cde19267a905b0d2170b35ea0f4b;hb=39809ded547bdbb08207d3e514950425215b4410;hp=ba467049c5ba3f61b8a5428a5268deb73cdb6271;hpb=f8cf5ac7b2f53510f80a0eaf286a25298be17bfe;p=xscreensaver diff --git a/hacks/xmatrix.c b/hacks/xmatrix.c index ba467049..9f97bb77 100644 --- a/hacks/xmatrix.c +++ b/hacks/xmatrix.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1999-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 1999-2017 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -59,13 +59,13 @@ #include #include -#ifdef HAVE_COCOA +#ifdef HAVE_JWXYZ # define HAVE_XPM #else # define DO_XBM /* only do mono bitmaps under real X11 */ #endif -#ifndef HAVE_COCOA +#ifndef HAVE_JWXYZ # include #endif @@ -335,11 +335,14 @@ fill_input (m_state *s) if (!s->tc) return; - if (loadBytes > 0){ - char c = textclient_getc (s->tc); - n = (c > 0 ? 1 : -1); - s->buf [s->buf_pos] = c; - } + if (loadBytes > 0) + { + int c = textclient_getc (s->tc); + n = (c > 0 ? 1 : -1); + s->buf [s->buf_pos] = (char) c; + } + + if (n > 0) { s->do_fill_buff = False; @@ -458,25 +461,22 @@ static void init_trace (m_state *state) { char *s = get_string_resource (state->dpy, "tracePhone", "TracePhone"); - char *s2, *s3; - int i; + const char *s2; + signed char *s3; if (!s) goto FAIL; state->tracing = (signed char *) malloc (strlen (s) + 1); - s3 = (char *) state->tracing; + s3 = state->tracing; for (s2 = s; *s2; s2++) if (*s2 >= '0' && *s2 <= '9') - *s3++ = *s2; + *s3++ = -*s2; *s3 = 0; - if (s3 == (char *) state->tracing) + if (s3 == state->tracing) goto FAIL; - for (i = 0; i < strlen((char *) state->tracing); i++) - state->tracing[i] = -state->tracing[i]; - state->glyph_map = decimal_encoding; state->nglyphs = countof(decimal_encoding); @@ -1331,6 +1331,33 @@ hack_text (m_state *state) state->typing_delay = state->typing_char_delay; if (state->typing_cursor_p) set_cursor (state, True); + +# ifdef USE_IPHONE + /* Stupid iPhone X bezel. + #### This is the worst of all possible ways to do this! But how else? + */ + if (state->xgwa.width == 2436 || state->xgwa.height == 2436) + switch (state->mode) + { + case TRACE_TEXT_A: + case TRACE_TEXT_B: + case KNOCK: + case NMAP: + { + int off = 5 * (state->small_p ? 2 : 1); + if (state->xgwa.width > state->xgwa.height) + { + state->typing_left_margin += off; + state->cursor_x += off; + } + else + { + state->cursor_y += off; + } + } + default: break; + } +# endif } else { @@ -1341,7 +1368,7 @@ hack_text (m_state *state) AGAIN: c = ((unsigned char *) state->typing)[0]; - c1 = ((unsigned char *) state->typing)[1]; + c1 = c ? ((unsigned char *) state->typing)[1] : 0; state->typing_delay = (!c || c1 == '\n' ? state->typing_line_delay @@ -1709,7 +1736,8 @@ xmatrix_reshape (Display *dpy, Window window, void *closure, state->xgwa.width, state->xgwa.height, state->grid_width - 2, - state->grid_height - 1); + state->grid_height - 1, + 0); } static Bool @@ -1779,10 +1807,16 @@ xmatrix_event (Display *dpy, Window window, void *closure, XEvent *event) return True; default: - return False; + break; } } + if (screenhack_event_helper (dpy, window, event)) + { + set_mode (state, DRAIN_MATRIX); + return True; + } + return False; } @@ -1815,8 +1849,8 @@ static const char *xmatrix_defaults [] = { "*knockKnock: True", "*usePipe: False", "*usePty: False", - "*program: xscreensaver-text", - "*geometry: 800x600", + "*program: xscreensaver-text --latin1", + "*geometry: 960x720", 0 };