⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 screenhack.c

📁 编译后直接运行的MP3播放器全部C语言源代码 一个包含FAT文件系统、系统引导 Boot、FLASH Driver等内容的
💻 C
📖 第 1 页 / 共 2 页
字号:
      break;    default:      break;    case ClientMessage:      {          if (event->xclient.message_type != XA_WM_PROTOCOLS) {              char *s = XGetAtomName(dpy, event->xclient.message_type);              if (!s) s = "(null)";              fprintf (stderr, "%s: unknown ClientMessage %s received!\n",                       progname, s);          }          else if (event->xclient.data.l[0] != (int)XA_WM_DELETE_WINDOW) {              char *s1 = XGetAtomName(dpy, event->xclient.message_type);              char *s2 = XGetAtomName(dpy, event->xclient.data.l[0]);              if (!s1) s1 = "(null)";              if (!s2) s2 = "(null)";              fprintf (stderr, "%s: unknown ClientMessage %s[%s] received!\n",                       progname, s1, s2);          }          else {              exit (0);          }      }      break;    }    return key;}int screenhack_handle_events(bool *release, bool *repeat){    int key=0;    if(XPending(dpy))    {        XEvent event;        XNextEvent(dpy, &event);        key=screenhack_handle_event(dpy, &event, release, repeat);    }    return key;}static Visual *pick_visual (Screen *screen){#ifdef USE_GL    /* If we're linking against GL (that is, this is the version of        screenhack.o that the GL hacks will use, which is different from the        one that the non-GL hacks will use) then try to pick the "best" visual        by interrogating the GL library instead of by asking Xlib.  GL knows        better.    */    Visual *v = 0;    char *string = get_string_resource ("visualID", "VisualID");    char *s;    if (string)        for (s = string; *s; s++)            if (isupper (*s)) *s = _tolower (*s);    if (!string || !*string ||        !strcmp (string, "gl") ||        !strcmp (string, "best") ||        !strcmp (string, "color") ||        !strcmp (string, "default"))        v = get_gl_visual (screen);		/* from ../utils/visual-gl.c */    if (string)        free (string);    if (v)        return v;#endif /* USE_GL */    return get_visual_resource (screen, "visualID", "VisualID", False);}int main (int argc, char **argv){    Widget toplevel;    Display *dpy;    Window window;    Screen *screen;    Visual *visual;    Colormap cmap;    XEvent event;    char version[255];    sprintf(version,"rockboxui %s",ROCKBOXUI_VERSION);#ifdef HAVE_LCD_BITMAP    display_zoom=2;    {      char *env=getenv("RECORDER_ZOOM");      if (env) {        display_zoom=atoi(env);      }    }#else    display_zoom=1;    {      char *env=getenv("PLAYER_ZOOM");      if (env) {        display_zoom=atoi(env);      }    }#endif    if (argc > 1)    {      int x;      for (x=1; x<argc; x++) {	if (!strcmp("--old_lcd", argv[x])) {	  having_new_lcd=FALSE;	  printf("Using old LCD layout.\n");	} else if (!strcmp("--recorder_zoom", argv[x])) {          x++;#ifdef HAVE_LCD_BITMAP	  display_zoom=atoi(argv[x]);          printf("Window zoom is %d\n", display_zoom);#endif	} else if (!strcmp("--player_zoom", argv[x])) {          x++;#ifndef HAVE_LCD_BITMAP	  display_zoom=atoi(argv[x]);          printf("Window zoom is %d\n", display_zoom);#endif	} else {	  printf("rockboxui\n");	  printf("Arguments:\n");	  printf("  --old_lcd \t [Player] simulate old playermodel (ROM version<4.51)\n");	  printf("  --player_zoom \t [Player] window zoom\n");	  printf("  --recorder_zoom \t [Recorder] window zoom\n");          printf(KEYBOARD_GENERIC KEYBOARD_SPECIFIC);	  exit(0);	}      }    }    {      static char geometry[40];#ifdef HAVE_LCD_BITMAP      snprintf(geometry, 40, "*geometry: %dx%d", 120*display_zoom, 68*display_zoom);#else      snprintf(geometry, 40, "*geometry: %dx%d", 280*display_zoom, 132*display_zoom);#endif      default_defaults[GEOMETRY_POSITION]=geometry;    }    printf(KEYBOARD_GENERIC KEYBOARD_SPECIFIC);    merge_options ();#ifdef __sgi    /* We have to do this on SGI to prevent the background color from being       overridden by the current desktop color scheme (we'd like our        backgrounds to be black, thanks.)  This should be the same as setting        the "*useSchemes: none" resource, but it's not -- if that resource is       present in the `default_defaults' above, it doesn't work, though it       does work when passed as an -xrm arg on the command line.  So screw it,       turn them off from C instead.    */    SgiUseSchemes ("none"); #endif /* __sgi */    toplevel = XtAppInitialize (&app, progclass, merged_options,                                merged_options_size, &argc, argv,                                merged_defaults, 0, 0);    dpy = XtDisplay (toplevel);    screen = XtScreen (toplevel);    db = XtDatabase (dpy);    XtGetApplicationNameAndClass (dpy, &progname, &progclass);    /* half-assed way of avoiding buffer-overrun attacks. */    if (strlen (progname) >= 100) progname[100] = 0;    XSetErrorHandler (screenhack_ehandler);    XA_WM_PROTOCOLS = XInternAtom (dpy, "WM_PROTOCOLS", False);    XA_WM_DELETE_WINDOW = XInternAtom (dpy, "WM_DELETE_WINDOW", False);    if (CellsOfScreen (DefaultScreenOfDisplay (dpy)) <= 2)        mono_p = True;    {        Boolean def_visual_p;        visual = pick_visual (screen);        if (toplevel->core.width <= 0)            toplevel->core.width = 600;        if (toplevel->core.height <= 0)            toplevel->core.height = 480;        def_visual_p = (visual == DefaultVisualOfScreen (screen));        if (!def_visual_p)        {            unsigned int bg, bd;            Widget new;            cmap = XCreateColormap (dpy, RootWindowOfScreen(screen),                                    visual, AllocNone);            bg = get_pixel_resource ("background", "Background", dpy, cmap);            bd = get_pixel_resource ("borderColor", "Foreground", dpy, cmap);            new = XtVaAppCreateShell (progname, progclass,                                      topLevelShellWidgetClass, dpy,                                      XtNmappedWhenManaged, False,                                      XtNvisual, visual,                                      XtNdepth, visual_depth (screen, visual),                                      XtNwidth, toplevel->core.width,                                      XtNheight, toplevel->core.height,                                      XtNcolormap, cmap,                                      XtNbackground, (Pixel) bg,                                      XtNborderColor, (Pixel) bd,                                      XtNinput, True,  /* for WM_HINTS */                                      0);            XtDestroyWidget (toplevel);            toplevel = new;            XtRealizeWidget (toplevel);            window = XtWindow (toplevel);        }        else        {            XtVaSetValues (toplevel,                           XtNmappedWhenManaged, False,                           XtNinput, True,  /* for WM_HINTS */                           0);            XtRealizeWidget (toplevel);            window = XtWindow (toplevel);            if (get_boolean_resource ("installColormap", "InstallColormap"))            {                cmap = XCreateColormap (dpy, window,                                        DefaultVisualOfScreen (XtScreen                                                                (toplevel)),                                        AllocNone);                XSetWindowColormap (dpy, window, cmap);            }            else            {                cmap = DefaultColormap (dpy, DefaultScreen (dpy));            }        }        XtPopup (toplevel, XtGrabNone);        XtVaSetValues(toplevel, XtNtitle, version, 0);        /* For screenhack_handle_events(): select KeyPress, and           announce that we accept WM_DELETE_WINDOW. */        {            XWindowAttributes xgwa;            XGetWindowAttributes (dpy, window, &xgwa);            XSelectInput (dpy, window,                           xgwa.your_event_mask | KeyPressMask | KeyRelease |                          ButtonPressMask | ExposureMask);            XChangeProperty (dpy, window, XA_WM_PROTOCOLS, XA_ATOM, 32,                             PropModeReplace,                             (unsigned char *) &XA_WM_DELETE_WINDOW, 1);        }    }    XSetWindowBackground (dpy, window,                          get_pixel_resource ("background", "Background",                                              dpy, cmap));    XClearWindow (dpy, window);    /* wait for it to be mapped */    XIfEvent (dpy, &event, MapNotify_event_p, (XPointer) window);    XSync (dpy, False);    screenhack (dpy, window); /* doesn't return */    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -