📄 mode.h
字号:
#ifndef __XLOCK_MODE_H__#define __XLOCK_MODE_H__/*- * @(#)mode.h 4.00 97/01/01 xlockmore * * mode.h - mode management for xlock, the X Window System lockscreen. * * Copyright (c) 1991 by Patrick J. Naughton. * * See xlock.c for copying information. * * Revision History: * * Changes of David Bagley (bagleyd@bigfoot.com) * 18-Mar-96: Ron Hitchens <ron@idiom.com> * Extensive revision to define new data types for * the new mode calling scheme. * 02-Jun-95: Extracted out of resource.c. * *//* * Declare external interface routines for supported screen savers. *//* -------------------------------------------------------------------- */struct LockStruct_s;struct ModeInfo_s;typedef void (ModeHook) (struct ModeInfo_s *);typedef void (HookProc) (struct LockStruct_s *, struct ModeInfo_s *);typedef struct LockStruct_s { char *cmdline_arg; /* mode name */ ModeHook *init_hook; /* func to init a mode */ ModeHook *callback_hook; /* func to run (tick) a mode */ ModeHook *release_hook; /* func to shutdown a mode */ ModeHook *refresh_hook; /* tells mode to repaint */ ModeHook *change_hook; /* user wants mode to change */ ModeHook *unused_hook; /* for future expansion */ ModeSpecOpt *msopt; /* this mode's def resources */ int def_delay; /* default delay for mode */ int def_batchcount; int def_cycles; int def_size; float def_saturation; char *desc; /* text description of mode */ unsigned int flags; /* state flags for this mode */ void *userdata; /* for use by the mode */} LockStruct;#define LS_FLAG_INITED 1typedef struct { Display *display; /* handle to X display */ Screen *screenptr; /* ptr to screen info */ int screen; /* number of current screen */ int real_screen; /* for debugging */ int num_screens; /* number screens locked */ int max_screens; /* max # active screens */ Window window; /* handle to current window */ int win_width; /* width of current window */ int win_height; /* height of current window */ int win_depth; /* depth of current window */ Visual *visual; /* visual of current window */ Colormap colormap; /* default colormap of current window */ unsigned long black_pixel; /* pixel value for black */ unsigned long white_pixel; /* pixel value for white */ unsigned int flags; /* xlock window flags */ float delta3d;} WindowInfo;#define WI_FLAG_INFO_INITTED 0x001 /* private state flag */#define WI_FLAG_ICONIC 0x002#define WI_FLAG_MONO 0x004#define WI_FLAG_INWINDOW 0x008#define WI_FLAG_INROOT 0x010#define WI_FLAG_NOLOCK 0x020#define WI_FLAG_INSTALL 0x040#define WI_FLAG_DEBUG 0x080#define WI_FLAG_USE3D 0x100#define WI_FLAG_VERBOSE 0x200#define WI_FLAG_FULLRANDOM 0x400#define WI_FLAG_WIREFRAME 0x800#define WI_FLAG_JUST_INITTED 0x1000 /* private state flag */typedef struct { long pause; /* output, set by mode */ long delay; /* inputs, current settings */ long batchcount; long cycles; long size; float saturation;} RunInfo;typedef struct ModeInfo_s { WindowInfo windowinfo; perscreen *screeninfo; RunInfo runinfo; struct LockStruct_s *lockstruct;} ModeInfo;/* -------------------------------------------------------------------- *//* * These are the public interfaces that a mode should use to obtain * information about the display and other environmental parameters. * Everything hangs off a ModeInfo pointer. A mode should NOT cache * a ModeInfo pointer, the struct it points to is volatile. The mode * can safely make a copy of the data it points to, however. But it * is recommended the mode make use of the passed-in pointer and pass * it along to functions it calls. * Use these macros, don't look at the fields directly. The insides * of the ModeInfo struct are certain to change in the future. */#define MODE_IS_INITED(ls) ((ls)->flags & LS_FLAG_INITED)#define MODE_NOT_INITED(ls) ( ! MODE_IS_INITED(ls))#define MI_DISPLAY(mi) ((mi)->windowinfo.display)#define MI_SCREEN(mi) ((mi)->windowinfo.screen)#define MI_SCREENPTR(mi) ((mi)->windowinfo.screenptr)#define MI_REAL_SCREEN(mi) ((mi)->windowinfo.real_screen)#define MI_NUM_SCREENS(mi) ((mi)->windowinfo.num_screens)#define MI_MAX_SCREENS(mi) ((mi)->windowinfo.max_screens)#define MI_WINDOW(mi) ((mi)->windowinfo.window)#define MI_WIN_WIDTH(mi) ((mi)->windowinfo.win_width)#define MI_WIN_HEIGHT(mi) ((mi)->windowinfo.win_height)#define MI_WIN_DEPTH(mi) ((mi)->windowinfo.win_depth)#define MI_VISUAL(mi) ((mi)->windowinfo.visual)#define MI_COLORMAP(mi) ((mi)->windowinfo.colormap)#define MI_WIN_BLACK_PIXEL(mi) ((mi)->windowinfo.black_pixel)#define MI_WIN_WHITE_PIXEL(mi) ((mi)->windowinfo.white_pixel)#define MI_DELTA3D(mi) ((mi)->windowinfo.delta3d)#define MI_WIN_FLAGS(mi) ((mi)->windowinfo.flags)#define MI_WIN_SET_FLAG_STATE(mi,f,bool) ((mi)->windowinfo.flags = \ (bool) ? (mi)->windowinfo.flags | f \ : (mi)->windowinfo.flags & ~(f))#define MI_WIN_FLAG_IS_SET(mi,f) ((mi)->windowinfo.flags & f)#define MI_WIN_FLAG_NOT_SET(mi,f) ( ! MI_WIN_FLAG_IS_SET(mi,f))#define MI_WIN_IS_ICONIC(mi) (MI_WIN_FLAG_IS_SET (mi, WI_FLAG_ICONIC))#define MI_WIN_IS_MONO(mi) (MI_WIN_FLAG_IS_SET (mi, WI_FLAG_MONO))#define MI_WIN_IS_INWINDOW(mi) (MI_WIN_FLAG_IS_SET (mi, WI_FLAG_INWINDOW))#define MI_WIN_IS_INROOT(mi) (MI_WIN_FLAG_IS_SET (mi, WI_FLAG_INROOT))#define MI_WIN_IS_NOLOCK(mi) (MI_WIN_FLAG_IS_SET (mi, WI_FLAG_NOLOCK))#define MI_WIN_IS_INSTALL(mi) (MI_WIN_FLAG_IS_SET (mi, WI_FLAG_INSTALL))#define MI_WIN_IS_DEBUG(mi) (MI_WIN_FLAG_IS_SET (mi, WI_FLAG_DEBUG))#define MI_WIN_IS_USE3D(mi) (MI_WIN_FLAG_IS_SET (mi, WI_FLAG_USE3D))#define MI_WIN_IS_VERBOSE(mi) (MI_WIN_FLAG_IS_SET (mi, WI_FLAG_VERBOSE))#define MI_WIN_IS_FULLRANDOM(mi) (MI_WIN_FLAG_IS_SET (mi, WI_FLAG_FULLRANDOM))#define MI_WIN_IS_WIREFRAME(mi) (MI_WIN_FLAG_IS_SET (mi, WI_FLAG_WIREFRAME))#define MI_PERSCREEN(mi) ((mi)->screeninfo)#define MI_GC(mi) ((mi)->screeninfo->gc)#define MI_NPIXELS(mi) ((mi)->screeninfo->npixels)#define MI_CMAP(mi) ((mi)->screeninfo->cmap)#define MI_PIXELS(mi) ((mi)->screeninfo->pixels)#define MI_PIXEL(mi,n) ((mi)->screeninfo->pixels[n])/* are these of interest to modes? */#define MI_BG_COLOR(mi) ((mi)->screeninfo->bgcol)#define MI_FG_COLOR(mi) ((mi)->screeninfo->fgcol)#define MI_NONE_COLOR(mi) ((mi)->screeninfo->nonecol) /* -install */#define MI_RIGHT_COLOR(mi) ((mi)->screeninfo->rightcol)#define MI_LEFT_COLOR(mi) ((mi)->screeninfo->leftcol)#define MI_PAUSE(mi) ((mi)->runinfo.pause)#define MI_DELAY(mi) ((mi)->runinfo.delay)#define MI_BATCHCOUNT(mi) ((mi)->runinfo.batchcount)#define MI_CYCLES(mi) ((mi)->runinfo.cycles)#define MI_SIZE(mi) ((mi)->runinfo.size)#define MI_SATURATION(mi) ((mi)->runinfo.saturation)#define MI_LOCKSTRUCT(mi) ((mi)->lockstruct)#define MI_DEFDELAY(mi) ((mi)->lockstruct->def_delay)#define MI_DEFBATCHCOUNT(mi) ((mi)->lockstruct->def_batchcount)#define MI_DEFCYCLES(mi) ((mi)->lockstruct->def_cycles)#define MI_DEFSIZE(mi) ((mi)->lockstruct->def_size)#define MI_DEFSATURATION(mi) ((mi)->lockstruct->def_saturation)#define MI_NAME(mi) ((mi)->lockstruct->cmdline_arg)#define MI_DESC(mi) ((mi)->lockstruct->desc)#define MI_USERDATA(mi) ((mi)->lockstruct->userdata)/* -------------------------------------------------------------------- */extern HookProc call_init_hook;extern HookProc call_callback_hook;extern HookProc call_release_hook;extern HookProc call_refresh_hook;extern HookProc call_change_hook;extern void set_default_mode(LockStruct *);extern void release_last_mode(ModeInfo *);/* -------------------------------------------------------------------- */extern ModeHook init_ant;extern ModeHook draw_ant;extern ModeHook release_ant;extern ModeHook refresh_ant;extern ModeSpecOpt ant_opts;extern ModeHook init_ball;extern ModeHook draw_ball;extern ModeHook release_ball;extern ModeHook refresh_ball;extern ModeSpecOpt ball_opts;extern ModeHook init_bat;extern ModeHook draw_bat;extern ModeHook release_bat;extern ModeHook refresh_bat;extern ModeSpecOpt bat_opts;extern ModeHook init_blot;extern ModeHook draw_blot;extern ModeHook release_blot;extern ModeHook refresh_blot;extern ModeSpecOpt blot_opts;extern ModeHook init_bouboule;extern ModeHook draw_bouboule;extern ModeHook release_bouboule;extern ModeHook refresh_bouboule;extern ModeSpecOpt bouboule_opts;extern ModeHook init_bounce;extern ModeHook draw_bounce;extern ModeHook release_bounce;extern ModeHook refresh_bounce;extern ModeSpecOpt bounce_opts;extern ModeHook init_braid;extern ModeHook draw_braid;extern ModeHook release_braid;extern ModeHook refresh_braid;extern ModeSpecOpt braid_opts;extern ModeHook init_bug;extern ModeHook draw_bug;extern ModeHook release_bug;extern ModeHook refresh_bug;extern ModeSpecOpt bug_opts;extern ModeHook init_clock;extern ModeHook draw_clock;extern ModeHook release_clock;extern ModeHook refresh_clock;extern ModeSpecOpt clock_opts;extern ModeHook init_daisy;extern ModeHook draw_daisy;extern ModeHook release_daisy;extern ModeHook refresh_daisy;extern ModeSpecOpt daisy_opts;extern ModeHook init_dclock;extern ModeHook draw_dclock;extern ModeHook release_dclock;extern ModeHook refresh_dclock;extern ModeSpecOpt dclock_opts;extern ModeHook init_demon;extern ModeHook draw_demon;extern ModeHook release_demon;extern ModeHook refresh_demon;extern ModeSpecOpt demon_opts;extern ModeHook init_drift;extern ModeHook draw_drift;extern ModeHook release_drift;extern ModeHook refresh_drift;extern ModeSpecOpt drift_opts;extern ModeHook init_eyes;extern ModeHook draw_eyes;extern ModeHook release_eyes;extern ModeHook refresh_eyes;extern ModeSpecOpt eyes_opts;extern ModeHook init_flag;extern ModeHook draw_flag;extern ModeHook release_flag;extern ModeHook refresh_flag;extern ModeSpecOpt flag_opts;extern ModeHook init_flame;extern ModeHook draw_flame;extern ModeHook release_flame;extern ModeHook refresh_flame;extern ModeSpecOpt flame_opts;extern ModeHook init_forest;extern ModeHook draw_forest;extern ModeHook release_forest;extern ModeHook refresh_forest;extern ModeHook refresh_forest;extern ModeSpecOpt forest_opts;extern ModeHook init_fract;extern ModeHook draw_fract;extern ModeHook release_fract;extern ModeHook refresh_fract;extern ModeSpecOpt fract_opts;extern ModeHook init_galaxy;extern ModeHook draw_galaxy;extern ModeHook release_galaxy;extern ModeHook refresh_galaxy;extern ModeSpecOpt galaxy_opts;extern ModeHook init_geometry;extern ModeHook draw_geometry;extern ModeHook release_geometry;extern ModeHook refresh_geometry;extern ModeSpecOpt geometry_opts;extern ModeHook init_grav;extern ModeHook draw_grav;extern ModeHook release_grav;extern ModeHook refresh_grav;extern ModeSpecOpt grav_opts;extern ModeHook init_helix;extern ModeHook draw_helix;extern ModeHook release_helix;extern ModeHook refresh_helix;extern ModeSpecOpt helix_opts;extern ModeHook init_hop;extern ModeHook draw_hop;extern ModeHook release_hop;extern ModeHook refresh_hop;extern ModeSpecOpt hop_opts;extern ModeHook init_hyper;extern ModeHook draw_hyper;extern ModeHook release_hyper;extern ModeHook refresh_hyper;extern ModeSpecOpt hyper_opts;extern ModeHook init_ico;extern ModeHook draw_ico;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -