From 26b6e4255d4b9ff79a6dca10de5bec7bfc8691f9 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 6 Apr 2021 14:23:46 +0200 Subject: xscreensaver 6.00 --- hacks/Makefile.in | 359 +- hacks/README | 3 + hacks/abstractile.man | 2 +- hacks/analogtv-cli.c | 257 +- hacks/analogtv.c | 62 +- hacks/analogtv.h | 2 +- hacks/anemone.man | 2 +- hacks/anemotaxis.man | 2 +- hacks/ant.man | 2 +- hacks/apollonian.c | 141 +- hacks/apollonian.man | 2 +- hacks/apple2-main.c | 17 +- hacks/apple2.man | 53 +- hacks/asm6502.c | 25 +- hacks/attraction.man | 24 +- hacks/barcode.c | 6 + hacks/barcode.man | 2 +- hacks/binaryring.man | 2 +- hacks/blaster.man | 2 +- hacks/blitspin.man | 8 +- hacks/bouboule.man | 2 +- hacks/boxfit.man | 8 +- hacks/braid.man | 2 +- hacks/bsod.c | 857 +- hacks/bsod.man | 15 +- hacks/bubbles.c | 16 +- hacks/bubbles.h | 9 - hacks/bubbles.man | 15 +- hacks/bumps.man | 8 +- hacks/ccurve.man | 2 +- hacks/celtic.man | 2 +- hacks/check-configs.pl | 63 +- hacks/cloudlife.man | 2 +- hacks/compass.c | 1 - hacks/compass.man | 2 +- hacks/config/README | 11 +- hacks/config/antinspect.xml | 2 +- hacks/config/antmaze.xml | 2 +- hacks/config/antspotlight.xml | 2 +- hacks/config/apple2.xml | 2 +- hacks/config/beats.xml | 42 + hacks/config/binaryring.xml | 2 +- hacks/config/blinkbox.xml | 2 +- hacks/config/blitspin.xml | 2 +- hacks/config/blocktube.xml | 2 +- hacks/config/bouncingcow.xml | 2 +- hacks/config/boxfit.xml | 2 +- hacks/config/bsod.xml | 33 +- hacks/config/bubble3d.xml | 2 +- hacks/config/cage.xml | 4 +- hacks/config/ccurve.xml | 2 +- hacks/config/cityflow.xml | 2 +- hacks/config/cloudlife.xml | 2 +- hacks/config/co____9.xml | 38 + hacks/config/companioncube.xml | 2 +- hacks/config/covid19.xml | 38 + hacks/config/cube21.xml | 2 +- hacks/config/cubestack.xml | 2 +- hacks/config/cubestorm.xml | 2 +- hacks/config/cubetwist.xml | 2 +- hacks/config/cubicgrid.xml | 8 +- hacks/config/cwaves.xml | 2 +- hacks/config/dangerball.xml | 2 +- hacks/config/decayscreen.xml | 2 +- hacks/config/deepstars.xml | 2 +- hacks/config/dymaxionmap.xml | 2 +- hacks/config/energystream.xml | 2 +- hacks/config/epicycle.xml | 11 + hacks/config/etruscanvenus.xml | 4 +- hacks/config/euler2d.xml | 2 +- hacks/config/fadeplot.xml | 2 +- hacks/config/fiberlamp.xml | 2 +- hacks/config/filmleader.xml | 2 +- hacks/config/flipflop.xml | 2 +- hacks/config/flipscreen3d.xml | 2 +- hacks/config/fliptext.xml | 2 +- hacks/config/fluidballs.xml | 2 +- hacks/config/flyingtoasters.xml | 2 +- hacks/config/fontglide.xml | 2 +- hacks/config/fuzzyflakes.xml | 2 +- hacks/config/gears.xml | 4 +- hacks/config/geodesicgears.xml | 2 +- hacks/config/glblur.xml | 2 +- hacks/config/glcells.xml | 2 +- hacks/config/glforestfire.xml | 2 +- hacks/config/glhanoi.xml | 2 +- hacks/config/glknots.xml | 2 +- hacks/config/glmatrix.xml | 2 +- hacks/config/glplanet.xml | 2 +- hacks/config/glschool.xml | 2 +- hacks/config/glslideshow.xml | 2 +- hacks/config/glsnake.xml | 2 +- hacks/config/gltext.xml | 2 +- hacks/config/gravitywell.xml | 2 +- hacks/config/headroom.xml | 48 + hacks/config/hexstrut.xml | 2 +- hacks/config/hyperball.xml | 2 +- hacks/config/hypercube.xml | 2 +- hacks/config/hypnowheel.xml | 2 +- hacks/config/imsmap.xml | 2 +- hacks/config/jigglypuff.xml | 2 +- hacks/config/juggler3d.xml | 2 +- hacks/config/klein.xml | 6 +- hacks/config/lcdscrub.xml | 2 +- hacks/config/maze3d.xml | 2 +- hacks/config/memscroller.xml | 2 +- hacks/config/menger.xml | 2 +- hacks/config/metaballs.xml | 8 +- hacks/config/mirrorblob.xml | 2 +- hacks/config/moebius.xml | 8 +- hacks/config/moebiusgears.xml | 6 +- hacks/config/moire.xml | 6 +- hacks/config/moire2.xml | 4 +- hacks/config/morph3d.xml | 2 +- hacks/config/nerverot.xml | 2 +- hacks/config/noseguy.xml | 2 +- hacks/config/pacman.xml | 2 +- hacks/config/photopile.xml | 2 +- hacks/config/pinion.xml | 4 +- hacks/config/popsquares.xml | 2 +- hacks/config/projectiveplane.xml | 4 +- hacks/config/quasicrystal.xml | 2 +- hacks/config/raverhoop.xml | 2 +- hacks/config/razzledazzle.xml | 2 +- hacks/config/rd-bomb.xml | 2 +- hacks/config/romanboy.xml | 4 +- hacks/config/rotzoomer.xml | 2 +- hacks/config/rubikblocks.xml | 2 +- hacks/config/shadebobs.xml | 2 +- hacks/config/sierpinski3d.xml | 2 +- hacks/config/skytentacles.xml | 2 +- hacks/config/slidescreen.xml | 2 +- hacks/config/speedmine.xml | 2 +- hacks/config/sphereeversion.xml | 98 + hacks/config/spheremonics.xml | 2 +- hacks/config/spiral.xml | 4 +- hacks/config/splitflap.xml | 2 +- hacks/config/starwars.xml | 2 +- hacks/config/stonerview.xml | 2 +- hacks/config/surfaces.xml | 4 +- hacks/config/testx11.xml | 2 +- hacks/config/timetunnel.xml | 2 +- hacks/config/topblock.xml | 2 +- hacks/config/tronbit.xml | 2 +- hacks/config/unknownpleasures.xml | 2 +- hacks/config/vidwhacker.xml | 2 +- hacks/config/webcollage.xml | 2 +- hacks/config/whirlwindwarp.xml | 2 +- hacks/config/winduprobot.xml | 2 +- hacks/coral.man | 2 +- hacks/critical.man | 6 +- hacks/crystal.c | 3 +- hacks/crystal.man | 2 +- hacks/cwaves.c | 7 +- hacks/cwaves.man | 2 +- hacks/cynosure.man | 2 +- hacks/decayscreen.man | 8 +- hacks/deco.man | 2 +- hacks/delaunay.c | 2 + hacks/delaunay.h | 4 - hacks/deluxe.c | 1 - hacks/deluxe.man | 2 +- hacks/demon.man | 2 +- hacks/discrete.man | 2 +- hacks/distort.man | 6 +- hacks/drift.man | 2 +- hacks/epicycle.man | 39 +- hacks/euler2d.man | 2 +- hacks/fadeplot.man | 2 +- hacks/fiberlamp.man | 2 +- hacks/filmleader.c | 40 +- hacks/filmleader.man | 2 +- hacks/fireworkx.man | 2 +- hacks/flag.c | 4 +- hacks/flag.man | 2 +- hacks/flame.man | 2 +- hacks/flow.man | 2 +- hacks/fluidballs.c | 46 +- hacks/fluidballs.man | 2 +- hacks/fontglide.c | 112 +- hacks/fontglide.man | 6 +- hacks/fonts/Makefile.in | 96 + hacks/fonts/OCRAStd.otf | Bin 0 -> 30636 bytes hacks/fonts/SpecialElite.ttf | Bin 0 -> 166224 bytes hacks/fonts/clacon.ttf | Bin 0 -> 103892 bytes hacks/fonts/gallant12x22.ttf | Bin 0 -> 25644 bytes hacks/fonts/luximr.ttf | Bin 0 -> 71784 bytes hacks/forest.c | 4 - hacks/forest.man | 2 +- hacks/fps.c | 125 +- hacks/fps.h | 4 - hacks/fpsI.h | 12 +- hacks/fuzzyflakes.c | 3 + hacks/fuzzyflakes.man | 2 +- hacks/galaxy.man | 2 +- hacks/glitchpeg.c | 46 +- hacks/glitchpeg.man | 2 +- hacks/glx/Makefile.in | 1416 +- hacks/glx/README | 5 +- hacks/glx/antinspect.c | 23 +- hacks/glx/antinspect.man | 4 +- hacks/glx/antmaze.c | 14 +- hacks/glx/antmaze.man | 4 +- hacks/glx/antspotlight.c | 12 - hacks/glx/antspotlight.man | 4 +- hacks/glx/atlantis.h | 19 +- hacks/glx/atlantis.man | 2 +- hacks/glx/atunnel.c | 3 - hacks/glx/atunnel.man | 15 +- hacks/glx/b_lockglue.c | 17 +- hacks/glx/beats.c | 439 + hacks/glx/beats.man | 75 + hacks/glx/blinkbox.c | 19 +- hacks/glx/blocktube.c | 11 +- hacks/glx/blocktube.man | 2 +- hacks/glx/boing.c | 2 - hacks/glx/boing.man | 2 +- hacks/glx/bouncingcow.c | 15 +- hacks/glx/bouncingcow.man | 2 +- hacks/glx/boxed.c | 14 +- hacks/glx/boxed.man | 2 +- hacks/glx/bubble3d.h | 16 +- hacks/glx/bubble3d.man | 2 +- hacks/glx/buildlwo.c | 4 +- hacks/glx/buildlwo.h | 19 - hacks/glx/cage.c | 12 + hacks/glx/cage.man | 2 +- hacks/glx/carousel.c | 38 +- hacks/glx/carousel.man | 8 +- hacks/glx/chessmodels.c | 22 +- hacks/glx/circuit.c | 21 +- hacks/glx/circuit.man | 2 +- hacks/glx/cityflow.c | 2 - hacks/glx/cityflow.man | 2 +- hacks/glx/companion.c | 12 +- hacks/glx/companioncube.man | 8 +- hacks/glx/covid19.c | 656 + hacks/glx/covid19.man | 72 + hacks/glx/crackberg.c | 2 - hacks/glx/crackberg.man | 2 +- hacks/glx/crumbler.c | 109 +- hacks/glx/crumbler.man | 2 +- hacks/glx/cube21.c | 13 +- hacks/glx/cube21.man | 2 +- hacks/glx/cubenetic.c | 11 +- hacks/glx/cubenetic.man | 2 +- hacks/glx/cubestack.c | 11 +- hacks/glx/cubestack.man | 2 +- hacks/glx/cubestorm.c | 11 +- hacks/glx/cubestorm.man | 2 +- hacks/glx/cubetwist.c | 11 +- hacks/glx/cubetwist.man | 2 +- hacks/glx/cubicgrid.c | 81 +- hacks/glx/cubicgrid.man | 7 +- hacks/glx/dangerball.c | 11 +- hacks/glx/dangerball.man | 2 +- hacks/glx/deepstars.c | 3 - hacks/glx/deepstars.man | 2 +- hacks/glx/discoball.c | 11 +- hacks/glx/discoball.man | 2 +- hacks/glx/dnalogo.c | 32 +- hacks/glx/dropshadow.c | 7 +- hacks/glx/dropshadow.h | 6 - hacks/glx/dymaxionmap-coords.c | 2 +- hacks/glx/dymaxionmap.c | 16 +- hacks/glx/dymaxionmap.man | 4 +- hacks/glx/endgame.c | 3 - hacks/glx/endgame.man | 4 +- hacks/glx/energystream.c | 2 - hacks/glx/energystream.man | 2 +- hacks/glx/engine.c | 15 +- hacks/glx/engine.man | 2 +- hacks/glx/esper.c | 100 +- hacks/glx/esper.man | 2 +- hacks/glx/etruscanvenus.c | 1899 +- hacks/glx/etruscanvenus.man | 2 +- hacks/glx/extrusion.c | 15 - hacks/glx/extrusion.h | 10 +- hacks/glx/extrusion.man | 2 +- hacks/glx/flipflop.c | 1168 +- hacks/glx/flipflop.man | 2 +- hacks/glx/flipscreen3d.c | 4 - hacks/glx/flipscreen3d.man | 2 +- hacks/glx/fliptext.c | 8 +- hacks/glx/fliptext.man | 6 +- hacks/glx/flurry.h | 24 +- hacks/glx/flurry.man | 2 +- hacks/glx/flyingtoasters.c | 11 +- hacks/glx/flyingtoasters.man | 2 +- hacks/glx/fps-gl.c | 17 - hacks/glx/gears.c | 11 +- hacks/glx/gears.man | 2 +- hacks/glx/geodesic.c | 11 +- hacks/glx/geodesic.man | 2 +- hacks/glx/geodesicgears.c | 32 +- hacks/glx/geodesicgears.man | 6 +- hacks/glx/gflux.c | 25 +- hacks/glx/gflux.man | 6 +- hacks/glx/gibson.c | 38 +- hacks/glx/gibson.man | 2 +- hacks/glx/glblur.c | 11 +- hacks/glx/glblur.man | 2 +- hacks/glx/glcells.c | 7 - hacks/glx/glcells.man | 4 +- hacks/glx/gleidescope.c | 10 +- hacks/glx/gleidescope.man | 2 +- hacks/glx/glforestfire.c | 14 - hacks/glx/glforestfire.man | 15 +- hacks/glx/glhanoi.c | 13 +- hacks/glx/glhanoi.man | 2 +- hacks/glx/glknots.c | 11 +- hacks/glx/glknots.man | 2 +- hacks/glx/gllist.h | 19 +- hacks/glx/glmatrix.c | 2 - hacks/glx/glmatrix.man | 2 +- hacks/glx/glplanet.c | 11 - hacks/glx/glplanet.man | 4 +- hacks/glx/glschool.c | 3 - hacks/glx/glschool.man | 2 +- hacks/glx/glschool_alg.c | 2 +- hacks/glx/glschool_gl.h | 27 +- hacks/glx/glsl-utils.c | 391 + hacks/glx/glsl-utils.h | 73 + hacks/glx/glslideshow.c | 136 +- hacks/glx/glslideshow.man | 8 +- hacks/glx/glsnake.c | 38 +- hacks/glx/glsnake.man | 18 +- hacks/glx/gltext.c | 142 +- hacks/glx/gltext.man | 33 +- hacks/glx/gltrackball.c | 25 +- hacks/glx/gltrackball.h | 2 +- hacks/glx/glut_stroke.c | 19 +- hacks/glx/glut_swidth.c | 14 +- hacks/glx/grab-ximage.c | 468 +- hacks/glx/grab-ximage.h | 51 + hacks/glx/gravitywell.c | 4 - hacks/glx/gravitywell.man | 2 +- hacks/glx/handsy.c | 2 - hacks/glx/handsy.man | 2 +- hacks/glx/headroom.c | 559 + hacks/glx/headroom.dxf | 259600 +++++++++++++++++++++++++++++++ hacks/glx/headroom.man | 72 + hacks/glx/headroom_model.c | 26005 ++++ hacks/glx/hexstrut.c | 11 +- hacks/glx/hexstrut.man | 2 +- hacks/glx/hilbert.c | 11 +- hacks/glx/hilbert.man | 2 +- hacks/glx/hydrostat.c | 11 +- hacks/glx/hydrostat.man | 2 +- hacks/glx/hypertorus.c | 990 +- hacks/glx/hypertorus.man | 2 +- hacks/glx/hypnowheel.c | 11 +- hacks/glx/hypnowheel.man | 2 +- hacks/glx/involute.c | 22 - hacks/glx/jigglypuff.c | 18 +- hacks/glx/jigglypuff.man | 2 +- hacks/glx/jigsaw.c | 25 +- hacks/glx/jigsaw.man | 8 +- hacks/glx/juggler3d.c | 6 +- hacks/glx/juggler3d.man | 2 +- hacks/glx/kaleidocycle.c | 11 +- hacks/glx/kaleidocycle.man | 15 +- hacks/glx/klein.c | 2572 +- hacks/glx/klein.man | 2 +- hacks/glx/lament.c | 2 - hacks/glx/lament.man | 2 +- hacks/glx/lavalite.c | 7 +- hacks/glx/lavalite.man | 15 +- hacks/glx/lockward.c | 3 - hacks/glx/lockward.man | 2 +- hacks/glx/marching.c | 23 +- hacks/glx/maze3d.c | 3 - hacks/glx/maze3d.man | 2 +- hacks/glx/menger.c | 11 +- hacks/glx/menger.man | 4 +- hacks/glx/mirrorblob.c | 15 +- hacks/glx/mirrorblob.man | 2 +- hacks/glx/moebius.c | 21 +- hacks/glx/moebius.man | 2 +- hacks/glx/moebiusgears.c | 11 +- hacks/glx/moebiusgears.man | 2 +- hacks/glx/molecule.c | 30 +- hacks/glx/molecule.man | 2 +- hacks/glx/morph3d.c | 10 +- hacks/glx/morph3d.man | 2 +- hacks/glx/noof.man | 2 +- hacks/glx/normals.c | 5 +- hacks/glx/normals.h | 18 +- hacks/glx/peepers.c | 7 +- hacks/glx/peepers.man | 2 +- hacks/glx/photopile.c | 30 +- hacks/glx/photopile.man | 8 +- hacks/glx/pinion.c | 10 +- hacks/glx/pinion.man | 2 +- hacks/glx/pipeobjs.c | 4 +- hacks/glx/pipes.c | 12 - hacks/glx/pipes.man | 2 +- hacks/glx/polyhedra-gl.c | 47 +- hacks/glx/polyhedra.man | 2 +- hacks/glx/polytopes.c | 2 + hacks/glx/polytopes.man | 6 +- hacks/glx/projectiveplane.c | 1381 +- hacks/glx/projectiveplane.man | 2 +- hacks/glx/providence.c | 12 +- hacks/glx/providence.man | 6 +- hacks/glx/pulsar.c | 11 - hacks/glx/pulsar.man | 2 +- hacks/glx/quasicrystal.c | 2 - hacks/glx/quasicrystal.man | 2 +- hacks/glx/queens.c | 16 - hacks/glx/queens.man | 4 +- hacks/glx/quickhull.c | 104 +- hacks/glx/quickhull.h | 1 + hacks/glx/raverhoop.c | 11 +- hacks/glx/raverhoop.man | 2 +- hacks/glx/razzledazzle.c | 12 +- hacks/glx/razzledazzle.man | 2 +- hacks/glx/romanboy.c | 1611 +- hacks/glx/romanboy.man | 6 +- hacks/glx/rubik.c | 10 + hacks/glx/rubik.man | 2 +- hacks/glx/rubikblocks.c | 13 +- hacks/glx/rubikblocks.man | 2 +- hacks/glx/sballs.c | 30 +- hacks/glx/sballs.man | 15 +- hacks/glx/sierpinski3d.c | 12 +- hacks/glx/sierpinski3d.man | 2 +- hacks/glx/skytentacles.c | 2 - hacks/glx/skytentacles.man | 2 +- hacks/glx/sonar-icmp.c | 61 +- hacks/glx/sonar.c | 18 +- hacks/glx/sonar.man | 57 +- hacks/glx/sphere.c | 20 +- hacks/glx/sphereeversion.c | 3339 + hacks/glx/sphereeversion.man | 256 + hacks/glx/spheremonics.c | 145 +- hacks/glx/spheremonics.man | 2 +- hacks/glx/splitflap.c | 66 +- hacks/glx/splitflap.man | 2 +- hacks/glx/splodesic.c | 11 +- hacks/glx/splodesic.man | 2 +- hacks/glx/sproingies.c | 6 +- hacks/glx/sproingies.man | 4 +- hacks/glx/sproingiewrap.c | 5 +- hacks/glx/stairs.c | 10 + hacks/glx/stairs.man | 2 +- hacks/glx/starwars.c | 25 +- hacks/glx/starwars.man | 35 +- hacks/glx/starwars.txt | 51 + hacks/glx/stonerview-view.c | 19 +- hacks/glx/stonerview.c | 2 - hacks/glx/stonerview.h | 6 +- hacks/glx/stonerview.man | 2 +- hacks/glx/superquadrics.c | 14 +- hacks/glx/superquadrics.man | 2 +- hacks/glx/surfaces.c | 13 +- hacks/glx/surfaces.man | 2 +- hacks/glx/swim.c | 2 +- hacks/glx/tangram.c | 12 +- hacks/glx/tangram.man | 2 +- hacks/glx/tangram_shapes.c | 17 +- hacks/glx/teapot.c | 16 +- hacks/glx/texfont.c | 949 +- hacks/glx/texfont.h | 16 +- hacks/glx/timetunnel.c | 4 - hacks/glx/timetunnel.man | 2 +- hacks/glx/topblock.c | 17 +- hacks/glx/topblock.man | 2 +- hacks/glx/trackball.h | 2 +- hacks/glx/tronbit.c | 13 +- hacks/glx/tronbit.man | 2 +- hacks/glx/tube.c | 22 +- hacks/glx/tunnel_draw.c | 23 +- hacks/glx/unicrud.c | 33 +- hacks/glx/unicrud.man | 2 +- hacks/glx/unknownpleasures.c | 2 - hacks/glx/unknownpleasures.man | 2 +- hacks/glx/vigilance.c | 14 +- hacks/glx/vigilance.man | 2 +- hacks/glx/voronoi.c | 4 +- hacks/glx/voronoi.man | 2 +- hacks/glx/winduprobot.c | 71 +- hacks/glx/winduprobot.man | 4 +- hacks/glx/xlock-gl-utils.c | 158 +- hacks/glx/xscreensaver-gl-visual.c | 87 + hacks/glx/xscreensaver-gl-visual.man | 33 + hacks/goop.man | 2 +- hacks/grav.man | 2 +- hacks/greynetic.man | 2 +- hacks/halftone.man | 2 +- hacks/halo.man | 2 +- hacks/helix.man | 2 +- hacks/hexadrop.c | 1 - hacks/hexadrop.man | 2 +- hacks/hopalong.man | 2 +- hacks/hyperball.man | 2 +- hacks/hypercube.man | 2 +- hacks/ifs.c | 10 +- hacks/ifs.man | 2 +- hacks/images/Makefile | 43 +- hacks/images/Makefile.in | 43 +- hacks/images/gnome1.png | Bin 0 -> 17901 bytes hacks/images/gnome2.png | Bin 0 -> 1867 bytes hacks/images/logo-360.png | Bin 0 -> 27394 bytes hacks/imsmap.man | 2 +- hacks/interaggregate.man | 2 +- hacks/interference.c | 12 +- hacks/interference.man | 2 +- hacks/intermomentary.man | 2 +- hacks/juggle.man | 2 +- hacks/julia.man | 2 +- hacks/kaleidescope.man | 15 +- hacks/kumppa.c | 3 - hacks/kumppa.man | 2 +- hacks/laser.man | 2 +- hacks/lcdscrub.c | 3 - hacks/lcdscrub.man | 2 +- hacks/lightning.man | 2 +- hacks/lisa.man | 2 +- hacks/lissie.man | 2 +- hacks/lmorph.c | 2 +- hacks/loop.man | 2 +- hacks/m6502.c | 21 +- hacks/maze.c | 11 +- hacks/memscroller.c | 61 +- hacks/memscroller.man | 2 +- hacks/metaballs.man | 2 +- hacks/moire.man | 2 +- hacks/moire2.man | 2 +- hacks/mountain.man | 2 +- hacks/munch.c | 19 +- hacks/munch.man | 56 +- hacks/munge-ad.pl | 33 +- hacks/nerverot.man | 2 +- hacks/noseguy.c | 17 +- hacks/noseguy.man | 6 +- hacks/pacman.c | 7 +- hacks/pacman.h | 8 - hacks/pacman.man | 2 +- hacks/pacman_ai.c | 6 +- hacks/pacman_level.c | 3 +- hacks/pedal.man | 2 +- hacks/penetrate.c | 96 +- hacks/penetrate.man | 15 +- hacks/penrose.c | 11 - hacks/penrose.man | 4 +- hacks/petri.man | 2 +- hacks/phosphor.c | 149 +- hacks/phosphor.man | 64 +- hacks/piecewise.man | 2 +- hacks/polyominoes.c | 7 +- hacks/polyominoes.man | 2 +- hacks/pong.c | 2 +- hacks/pong.man | 2 +- hacks/pyro.man | 2 +- hacks/qix.man | 2 +- hacks/rd-bomb.man | 2 +- hacks/recanim.c | 51 +- hacks/recanim.h | 6 +- hacks/ripples.man | 2 +- hacks/rocks.man | 2 +- hacks/rorschach.man | 2 +- hacks/rotor.man | 2 +- hacks/rotzoomer.man | 8 +- hacks/scooter.man | 6 +- hacks/screenhack.c | 47 +- hacks/screenhackI.h | 65 +- hacks/shadebobs.man | 2 +- hacks/sierpinski.man | 2 +- hacks/slidescreen.man | 8 +- hacks/slip.man | 8 +- hacks/speedmine.man | 40 +- hacks/sphere.man | 2 +- hacks/spiral.man | 2 +- hacks/spotlight.c | 15 +- hacks/spotlight.man | 8 +- hacks/squiral.man | 2 +- hacks/starfish.man | 2 +- hacks/strange.man | 2 +- hacks/substrate.man | 2 +- hacks/swirl.man | 2 +- hacks/tessellimage.c | 5 +- hacks/tessellimage.man | 2 +- hacks/testx11.c | 5 +- hacks/thornbird.man | 2 +- hacks/triangle.man | 2 +- hacks/truchet.man | 2 +- hacks/twang.man | 2 +- hacks/vermiculate.c | 5 +- hacks/vermiculate.man | 2 +- hacks/vfeedback.c | 9 - hacks/vfeedback.man | 2 +- hacks/vidwhacker | 77 +- hacks/vidwhacker.man | 10 +- hacks/vines.man | 2 +- hacks/wander.man | 2 +- hacks/webcollage-cocoa.m | 4 +- hacks/webcollage-helper.c | 14 +- hacks/webcollage.man | 47 +- hacks/whirlwindwarp.man | 2 +- hacks/worm.man | 2 +- hacks/wormhole.man | 2 +- hacks/xanalogtv.c | 14 +- hacks/xanalogtv.man | 8 +- hacks/xflame.c | 3 - hacks/xflame.man | 2 +- hacks/ximage-loader.c | 36 +- hacks/xjack.c | 83 +- hacks/xjack.man | 2 +- hacks/xlockmore.c | 42 +- hacks/xlockmore.h | 9 +- hacks/xlockmoreI.h | 79 +- hacks/xlyap.c | 3 - hacks/xmatrix.c | 72 +- hacks/xmatrix.man | 30 +- hacks/xml2man.pl | 4 +- hacks/xrayswarm.c | 8 +- hacks/xrayswarm.man | 2 +- hacks/xscreensaver-getimage-file | 1342 + hacks/xscreensaver-getimage-file.man | 63 + hacks/xscreensaver-getimage-video | 141 + hacks/xscreensaver-getimage-video.man | 51 + hacks/xscreensaver-getimage.c | 2068 + hacks/xscreensaver-getimage.man | 76 + hacks/xscreensaver-text | 1000 + hacks/xscreensaver-text.man | 88 + hacks/xspirograph.man | 2 +- hacks/xsublim.c | 5 + hacks/xsublim.man | 2 +- hacks/zoom.man | 8 +- 630 files changed, 310591 insertions(+), 6801 deletions(-) create mode 100644 hacks/config/beats.xml create mode 100644 hacks/config/co____9.xml create mode 100644 hacks/config/covid19.xml create mode 100644 hacks/config/headroom.xml create mode 100644 hacks/config/sphereeversion.xml create mode 100644 hacks/fonts/Makefile.in create mode 100644 hacks/fonts/OCRAStd.otf create mode 100644 hacks/fonts/SpecialElite.ttf create mode 100644 hacks/fonts/clacon.ttf create mode 100644 hacks/fonts/gallant12x22.ttf create mode 100644 hacks/fonts/luximr.ttf create mode 100644 hacks/glx/beats.c create mode 100644 hacks/glx/beats.man create mode 100644 hacks/glx/covid19.c create mode 100644 hacks/glx/covid19.man create mode 100644 hacks/glx/glsl-utils.c create mode 100644 hacks/glx/glsl-utils.h create mode 100644 hacks/glx/headroom.c create mode 100644 hacks/glx/headroom.dxf create mode 100644 hacks/glx/headroom.man create mode 100644 hacks/glx/headroom_model.c create mode 100644 hacks/glx/sphereeversion.c create mode 100644 hacks/glx/sphereeversion.man create mode 100644 hacks/glx/xscreensaver-gl-visual.c create mode 100644 hacks/glx/xscreensaver-gl-visual.man create mode 100644 hacks/images/gnome1.png create mode 100644 hacks/images/gnome2.png create mode 100644 hacks/images/logo-360.png create mode 100755 hacks/xscreensaver-getimage-file create mode 100644 hacks/xscreensaver-getimage-file.man create mode 100755 hacks/xscreensaver-getimage-video create mode 100644 hacks/xscreensaver-getimage-video.man create mode 100644 hacks/xscreensaver-getimage.c create mode 100644 hacks/xscreensaver-getimage.man create mode 100755 hacks/xscreensaver-text create mode 100644 hacks/xscreensaver-text.man (limited to 'hacks') diff --git a/hacks/Makefile.in b/hacks/Makefile.in index 7acaeb3..ef6ee5c 100644 --- a/hacks/Makefile.in +++ b/hacks/Makefile.in @@ -1,4 +1,4 @@ -# hacks/Makefile.in --- xscreensaver, Copyright (c) 1997-2015 Jamie Zawinski. +# hacks/Makefile.in --- xscreensaver, Copyright © 1997-2021 Jamie Zawinski. # the `../configure' script generates `hacks/Makefile' from this file. @SET_MAKE@ @@ -49,13 +49,12 @@ X_CFLAGS = @X_CFLAGS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ -XMU_LIBS = @XMU_LIBS@ XFT_LIBS = @XFT_LIBS@ # Note: see comment in ../driver/Makefile.in for explanation of X_LIBS, etc. # HACK_PRE = $(LIBS) $(X_LIBS) -HACK_POST = $(X_PRE_LIBS) $(XFT_LIBS) -lXt -lX11 $(XMU_LIBS) -lXext $(X_EXTRA_LIBS) -lm +HACK_POST = $(X_PRE_LIBS) $(XFT_LIBS) -lXt -lX11 -lXext $(X_EXTRA_LIBS) -lm HACK_LIBS = $(HACK_PRE) @ANIM_LIBS@ @HACK_LIBS@ $(HACK_POST) PNG_LIBS = $(HACK_PRE) @PNG_LIBS@ @HACK_LIBS@ $(HACK_POST) JPEG_LIBS = @JPEG_LIBS@ @@ -90,9 +89,10 @@ UTIL_OBJS = $(UTILS_BIN)/alpha.o $(UTILS_BIN)/colors.o \ $(UTILS_BIN)/textclient.o $(UTILS_BIN)/aligned_malloc.o \ $(UTILS_BIN)/thread_util.o $(UTILS_BIN)/pow2.o \ $(UTILS_BIN)/xft.o $(UTILS_BIN)/utf8wc.o \ - $(UTILS_BIN)/font-retry-xft.o + $(UTILS_BIN)/font-retry.o -SRCS = attraction.c blitspin.c bouboule.c braid.c bubbles.c \ +SRCS = xscreensaver-getimage.c \ + attraction.c blitspin.c bouboule.c braid.c bubbles.c \ bubbles-default.c decayscreen.c deco.c drift.c flag.c \ flame.c forest.c vines.c galaxy.c grav.c greynetic.c \ halo.c helix.c hopalong.c hypercube.c ifs.c imsmap.c \ @@ -102,7 +102,7 @@ SRCS = attraction.c blitspin.c bouboule.c braid.c bubbles.c \ slip.c sphere.c spiral.c strange.c swirl.c xlockmore.c \ fps.c goop.c starfish.c munch.c fadeplot.c \ rd-bomb.c coral.c mountain.c triangle.c lissie.c worm.c \ - rotor.c ant.c xjack.c xlyap.c xscreensaver-sgigl.c \ + rotor.c ant.c xjack.c xlyap.c \ cynosure.c moire2.c flow.c epicycle.c interference.c \ truchet.c bsod.c crystal.c discrete.c distort.c kumppa.c \ demon.c loop.c t3d.c penetrate.c deluxe.c compass.c \ @@ -124,15 +124,12 @@ SRCS = attraction.c blitspin.c bouboule.c braid.c bubbles.c \ tessellimage.c delaunay.c recanim.c binaryring.c \ glitchpeg.c vfeedback.c scooter.c webcollage-cocoa.m \ webcollage-helper-cocoa.m testx11.c -SCRIPTS = vidwhacker webcollage ljlatest +SCRIPTS = xscreensaver-getimage-file xscreensaver-getimage-video \ + xscreensaver-text vidwhacker webcollage # Programs that are mentioned in XScreenSaver.ad, and that have XML files, # but that are not shipped with xscreensaver itself. # -EXTERNALS = cosmos electricsheep fireflies goban \ - sphereeversion ssystem xaos xdaliclock xearth xfishtank \ - xmountains xplanet xsnow - OBJS = attraction.o blitspin.o bouboule.o braid.o bubbles.o \ bubbles-default.o decayscreen.o deco.o drift.o flag.o \ flame.o forest.o vines.o galaxy.o grav.o greynetic.o \ @@ -143,7 +140,7 @@ OBJS = attraction.o blitspin.o bouboule.o braid.o bubbles.o \ slip.o sphere.o spiral.o strange.o swirl.o xlockmore.o \ fps.o goop.o starfish.o munch.o fadeplot.o \ rd-bomb.o coral.o mountain.o triangle.o lissie.o worm.o \ - rotor.o ant.o xjack.o xlyap.o xscreensaver-sgigl.o \ + rotor.o ant.o xjack.o xlyap.o xscreensaver-getimage.o \ cynosure.o moire2.o flow.o epicycle.o interference.o \ truchet.o bsod.o crystal.o discrete.o distort.o kumppa.o \ demon.o loop.o t3d.o penetrate.o deluxe.o compass.o \ @@ -187,27 +184,26 @@ EXES = attraction blitspin bouboule braid decayscreen deco \ intermomentary fireworkx fiberlamp boxfit interaggregate \ celtic cwaves m6502 abstractile lcdscrub hexadrop \ tessellimage binaryring glitchpeg vfeedback scooter \ - @JPEG_EXES@ + xscreensaver-getimage @JPEG_EXES@ JPEG_EXES = webcollage-helper RETIRED_EXES = ant bubbles critical flag forest hyperball hypercube laser \ lightning lisa lissie lmorph rotor sphere spiral t3d vines \ - whirlygig worm xsublim juggle testx11 + whirlygig worm xsublim juggle HACK_OBJS_1 = fps.o $(UTILS_BIN)/resources.o $(UTILS_BIN)/visual.o \ $(UTILS_BIN)/usleep.o $(UTILS_BIN)/yarandom.o \ - $(UTILS_BIN)/utf8wc.o $(UTILS_BIN)/font-retry-xft.o \ - @XMU_OBJS@ @XFT_OBJS@ @ANIM_OBJS@ + $(UTILS_BIN)/utf8wc.o $(UTILS_BIN)/font-retry.o \ + $(UTILS_BIN)/xmu.o @XFT_OBJS@ @ANIM_OBJS@ HACK_OBJS = screenhack.o $(HACK_OBJS_1) XLOCK_OBJS = screenhack.o xlockmore.o $(COLOR_OBJS) $(HACK_OBJS_1) \ $(ERASE) COLOR_OBJS = $(UTILS_BIN)/hsv.o $(UTILS_BIN)/colors.o GRAB_OBJS = $(UTILS_BIN)/grabclient.o -XSHM_OBJS = $(UTILS_BIN)/xshm.o +XSHM_OBJS = $(UTILS_BIN)/xshm.o $(UTILS_BIN)/aligned_malloc.o XDBE_OBJS = $(UTILS_BIN)/xdbe.o ANIM_OBJS = recanim.o ANIM_LIBS = @PNG_LIBS@ -THREAD_OBJS = $(UTILS_BIN)/aligned_malloc.o $(UTILS_BIN)/thread_util.o HDRS = screenhack.h screenhackI.h fps.h fpsI.h xlockmore.h \ xlockmoreI.h automata.h bubbles.h ximage-loader.h \ @@ -238,14 +234,18 @@ MEN = anemone.man apollonian.man attraction.man \ xflame.man xjack.man xlyap.man xmatrix.man \ xrayswarm.man xspirograph.man \ zoom.man halftone.man eruption.man metaballs.man \ - barcode.man piecewise.man cloudlife.man ljlatest.man \ + barcode.man piecewise.man cloudlife.man \ fontglide.man apple2.man xanalogtv.man filmleader.man \ pong.man wormhole.man pacman.man fuzzyflakes.man \ anemotaxis.man memscroller.man substrate.man \ intermomentary.man fireworkx.man fiberlamp.man boxfit.man \ interaggregate.man celtic.man cwaves.man abstractile.man \ lcdscrub.man hexadrop.man tessellimage.man binaryring.man \ - glitchpeg.man vfeedback.man scooter.man + glitchpeg.man vfeedback.man scooter.man \ + xscreensaver-text.man \ + xscreensaver-getimage.man \ + xscreensaver-getimage-file.man \ + xscreensaver-getimage-video.man RETIRED_MEN = ant.man bubbles.man critical.man flag.man forest.man \ laser.man lightning.man lisa.man lissie.man lmorph.man \ @@ -261,11 +261,7 @@ EXTRAS = README Makefile.in xml2man.pl m6502.sh .gdbinit \ config/$(STAR).dtd \ config/$(STAR).xsd \ -VMSFILES = compile_axp.com compile_decc.com link_axp.com link_decc.com \ - vms_axp.opt vms_axp_12.opt vms_decc.opt vms_decc_12.opt - -TARFILES = $(SRCS) $(HDRS) $(SCRIPTS) $(MEN) $(RETIRED_MEN) \ - $(EXTRAS) $(VMSFILES) +TARFILES = $(SRCS) $(HDRS) $(SCRIPTS) $(MEN) $(RETIRED_MEN) $(EXTRAS) default: all @@ -330,7 +326,8 @@ munge-scripts: $(SCRIPTS) install-man: $(MEN) @men="$(MEN)" ; \ U=$(UTILS_SRC)/version.h ; \ - V=`sed -n 's/.*xscreensaver \([0-9]\.[^)]*)\).*/\1/p' < $$U` ; \ + V=`sed -n 's/.*xscreensaver \([0-9]\.[^)]*)\).*/\1/p' < $$U | \ + head -1`; \ T=/tmp/xs$$$$.$(mansuffix) ; \ TH=".TH XScreenSaver $(mansuffix) \"$$V\" \"X Version 11\"" ; \ echo "installing man pages: $$TH" ; \ @@ -359,7 +356,7 @@ install-xml: $(INSTALL_DIRS) $$dest ; \ fi ; \ src=$(srcdir)/config ; \ - for file in $(EXES) $(SCRIPTS) $(EXTERNALS) ; do \ + for file in $(EXES) $(SCRIPTS) ; do \ if [ -f $$src/$$file.xml ]; then \ echo $(INSTALL_DATA) $$src/$$file.xml $$dest/$$file.xml ; \ $(INSTALL_DATA) $$src/$$file.xml $$dest/$$file.xml ; \ @@ -382,13 +379,13 @@ uninstall-man: uninstall-xml: @dest=$(install_prefix)$(HACK_CONF_DIR) ; \ - for file in $(EXES) $(RETIRED_EXES) $(SCRIPTS) $(EXTERNALS) ; do \ + for file in $(EXES) $(RETIRED_EXES) $(SCRIPTS) ; do \ echo rm -f $$dest/$$file.xml ; \ rm -f $$dest/$$file.xml ; \ done clean:: - -rm -f *.o a.out core $(EXES) $(RETIRED_EXES) m6502.h + -rm -f *.o a.out core $(EXES) $(RETIRED_EXES) m6502.h testx11 distclean: clean -rm -f Makefile TAGS *~ "#"* @@ -429,8 +426,9 @@ TAGS: tags tags: find $(srcdir) -name '*.[chly]' -print | xargs etags -a -echo_tarfiles: - @echo $(TARFILES) +list_tarfiles: + @find $(TARFILES) -type f -print | sort + check_men: @badmen="" ; \ @@ -457,55 +455,6 @@ munge_ad_file: @echo "Updating hack list in XScreenSaver.ad.in..." ; \ cd $(srcdir) ; ./munge-ad.pl ../driver/XScreenSaver.ad.in - -# Rules for generating the VMS makefiles on Unix, so that it doesn't have to -# be done by hand... -# -VMS_AXP_COMPILE_1=$$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE -VMS_AXP_COMPILE_2=)/INCL=([],[-],[-.UTILS]) - -compile_axp.com: Makefile.in - @echo generating $@ from $<... ; \ - ( for c in $(SRCS) ; do \ - c=`echo $$c | tr a-z A-Z` ; \ - echo "$(VMS_AXP_COMPILE_1)$(VMS_AXP_COMPILE_2) $$c" ; \ - done ; \ - ) | sort -d > $@ - -compile_decc.com: compile_axp.com - @echo generating $@ from $<... ; \ - sed 's/axp/decc/g' < $< > $@ - -#### TODO: generating link_axp.com is kinda tricky... - -link_decc.com: link_axp.com - @echo generating $@ from $<... ; \ - sed 's/axp/decc/g' < $< > $@ - -$(srcdir)/../setup.com: Makefile.in - @echo generating $@ from $<... ; \ - ( echo '$$! Xscreensaver - definition of various DCL symbols' ; \ - echo '$$ set NOON' ; \ - echo '$$ set def [.HACKS]' ; \ - echo '$$ mydisk = f$$trnlmn("SYS$$DISK")' ; \ - echo '$$ mydir = mydisk+f$$directory()' ; \ - ( for c in $(EXES) ; do \ - c2="$${c} " ; \ - c2=`echo "$${c2}" | sed 's/^\(........*\) $$/\1/'` ; \ - echo '$$' "$${c2}:== $$'mydir'$${c}" ; \ - done ; \ - ) | sort -d ; \ - echo '$$ set def [-.DRIVER]' ; \ - echo '$$ mydir = mydisk+f$$directory()' ; \ - echo "$$ xscreensaver :== $$'mydir'xscreensaver" ; \ - echo "$$ xscreen*command :== $$'mydir'xscreensaver-command" ; \ - echo '$$ set def [-]' ; \ - echo '$$ exit' ; \ - ) > $@ - -distdepend:: compile_axp.com compile_decc.com -distdepend:: link_axp.com link_decc.com -distdepend:: $(srcdir)/../setup.com distdepend:: check_men validate_xml munge_ad_file @@ -532,12 +481,19 @@ $(UTILS_BIN)/textclient.o: $(UTILS_SRC)/textclient.c $(UTILS_BIN)/aligned_malloc.o: $(UTILS_SRC)/aligned_malloc.c $(UTILS_BIN)/thread_util.o: $(UTILS_SRC)/thread_util.c $(UTILS_BIN)/pow2.o: $(UTILS_SRC)/pow2.c -$(UTILS_BIN)/font-retry-xft.o: $(UTILS_SRC)/font-retry.c +$(UTILS_BIN)/font-retry.o: $(UTILS_SRC)/font-retry.c $(UTIL_OBJS): cd $(UTILS_BIN) ; \ $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" +# For xscreensaver-getimage +$(srcdir)/../driver/prefs.o: $(srcdir)/../driver/prefs.c +$(srcdir)/../driver/prefs.o: + cd $(srcdir)/../driver ; \ + $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" + + # How we build object files in this directory. HACK_CFLAGS_BASE=$(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS) .c.o: @@ -555,30 +511,44 @@ SPL = $(UTILS_BIN)/spline.o GRAB = $(GRAB_OBJS) ERASE = $(UTILS_BIN)/erase.o COL = $(COLOR_OBJS) -SHM = $(XSHM_OBJS) $(THREAD_OBJS) +SHM = $(XSHM_OBJS) DBE = $(XDBE_OBJS) BARS = $(UTILS_BIN)/colorbars.o -THRO = $(THREAD_OBJS) +THRO = $(UTILS_BIN)/thread_util.o THRL = $(THREAD_CFLAGS) $(THREAD_LIBS) -ATV = analogtv.o $(SHM) +ATV = analogtv.o $(SHM) $(THRO) APPLE2 = apple2.o $(ATV) TEXT = $(UTILS_BIN)/textclient.o CC_HACK = $(CC) $(LDFLAGS) -xscreensaver-sgigl: xscreensaver-sgigl.c - $(CC) $(LDFLAGS) -o $@ $< -I$(UTILS_SRC) $(HACK_PRE) \ - $(XMU_LIBS) -lX11 -lXext $(X_EXTRA_LIBS) -lm - test-utf8wc: $(UTILS_SRC)/utf8wc.c - $(CC) $(HACK_CFLAGS_BASE) $(LDFLAGS)\ - -o $@ -DSELFTEST $< + $(CC) $(HACK_CFLAGS_BASE) $(LDFLAGS) -o $@ -DSELFTEST $< -# Make sure the images have been packaged. This is the first one hit: -images/gen/som_png.h: - cd $(srcdir)/images && $(MAKE) -images/gen/6x10font_png.h: +# Make sure the images have been packaged. These are the first ones hit. +# +images/gen/som_png.h images/gen/6x10font_png.h: cd $(srcdir)/images && $(MAKE) + @if ! [ -f "$@" ]; then \ + echo; echo $@ "wasn't built -- try 'gmake' instead?"; echo; exit 1; \ + fi + +GETIMG_OBJS = xscreensaver-getimage.o \ + $(UTILS_BIN)/colorbars.o $(UTILS_BIN)/resources.o \ + $(UTILS_BIN)/yarandom.o $(UTILS_BIN)/visual.o \ + $(UTILS_BIN)/usleep.o $(UTILS_BIN)/hsv.o \ + $(UTILS_BIN)/colors.o $(UTILS_BIN)/grabscreen.o \ + $(UTILS_BIN)/logo.o $(UTILS_BIN)/minixpm.o \ + $(UTILS_BIN)/xmu.o \ + $(srcdir)/../driver/prefs.o +GETIMG_LIBS = $(LIBS) $(X_LIBS) $(PNG_LIBS) $(JPEG_LIBS) \ + $(X_PRE_LIBS) -lXt -lX11 -lXext $(X_EXTRA_LIBS) + +# xscreensaver-getimage.o: XScreenSaver_ad.h +xscreensaver-getimage: $(GETIMG_OBJS) + $(CC) $(LDFLAGS) -o $@ $(GETIMG_OBJS) $(GETIMG_LIBS) -lm + + # The rules for those hacks which follow the `screenhack.c' API. # If make wasn't such an utter abomination, these could all be combined @@ -665,7 +635,7 @@ starfish: starfish.o $(HACK_OBJS) $(COL) $(SPL) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(SPL) $(HACK_LIBS) munch: munch.o $(HACK_OBJS) $(COL) $(SPL) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(SPL) $(HACK_LIBS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(SPL) $(UTILS_BIN)/pow2.o $(HACK_LIBS) rd-bomb: rd-bomb.o $(HACK_OBJS) $(COL) $(SHM) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(SHM) $(HACK_LIBS) $(THRL) @@ -685,8 +655,8 @@ cynosure: cynosure.o $(HACK_OBJS) $(COL) epicycle: epicycle.o $(HACK_OBJS) $(COL) $(ERASE) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(ERASE) $(HACK_LIBS) -interference: interference.o $(HACK_OBJS) $(COL) $(SHM) $(DBE) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(SHM) $(DBE) $(HACK_LIBS) $(THRL) +interference: interference.o $(HACK_OBJS) $(COL) $(SHM) $(THRO) $(DBE) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(SHM) $(THRO) $(DBE) $(HACK_LIBS) $(THRL) truchet: truchet.o $(HACK_OBJS) $(COL) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(COL) $(HACK_LIBS) @@ -709,7 +679,8 @@ analogtv2.o: $(srcdir)/analogtv.c analogtv-cli.o: $(srcdir)/analogtv-cli.c $(CC) -o $@ -c $(ATVCLI_CFLAGS) $< -ATVCLI=analogtv2.o $(UTILS_BIN)/yarandom.o $(THRO) $(PNG) +ATVCLI = analogtv2.o $(UTILS_BIN)/yarandom.o \ + $(UTILS_BIN)/aligned_malloc.o $(THRO) $(PNG) @ANIM_OBJS@ analogtv-cli: analogtv-cli.o $(ATVCLI) $(CC_HACK) -o $@ $@.o $(ATVCLI) $(THRL) $(PNG_LIBS) -lpng clean:: @@ -972,8 +943,8 @@ sphere: sphere.o $(XLOCK_OBJS) spiral: spiral.o $(XLOCK_OBJS) $(CC_HACK) -o $@ $@.o $(XLOCK_OBJS) $(HACK_LIBS) -strange: strange.o $(XLOCK_OBJS) $(SHM) $(UTILS_BIN)/pow2.o - $(CC_HACK) -o $@ $@.o $(XLOCK_OBJS) $(SHM) $(UTILS_BIN)/pow2.o $(HACK_LIBS) $(THRL) +strange: strange.o $(XLOCK_OBJS) $(SHM) $(THRO) $(UTILS_BIN)/pow2.o + $(CC_HACK) -o $@ $@.o $(XLOCK_OBJS) $(SHM) $(THRO) $(UTILS_BIN)/pow2.o $(HACK_LIBS) $(THRL) swirl: swirl.o $(XLOCK_OBJS) $(SHM) $(CC_HACK) -o $@ $@.o $(XLOCK_OBJS) $(SHM) $(HACK_LIBS) $(THRL) @@ -1061,14 +1032,23 @@ abstractile.o: $(UTILS_SRC)/hsv.h abstractile.o: $(UTILS_SRC)/resources.h abstractile.o: $(UTILS_SRC)/usleep.h abstractile.o: $(UTILS_SRC)/visual.h +abstractile.o: $(UTILS_SRC)/xft.h abstractile.o: $(UTILS_SRC)/yarandom.h analogtv-cli.o: $(srcdir)/analogtv.h analogtv-cli.o: ../config.h +analogtv-cli.o: $(srcdir)/fps.h +analogtv-cli.o: $(srcdir)/recanim.h +analogtv-cli.o: $(srcdir)/screenhackI.h analogtv-cli.o: $(UTILS_SRC)/aligned_malloc.h +analogtv-cli.o: $(UTILS_SRC)/colors.h analogtv-cli.o: $(UTILS_SRC)/font-retry.h +analogtv-cli.o: $(UTILS_SRC)/grabscreen.h +analogtv-cli.o: $(UTILS_SRC)/hsv.h analogtv-cli.o: $(UTILS_SRC)/resources.h analogtv-cli.o: $(UTILS_SRC)/thread_util.h +analogtv-cli.o: $(UTILS_SRC)/usleep.h analogtv-cli.o: $(UTILS_SRC)/visual.h +analogtv-cli.o: $(UTILS_SRC)/xft.h analogtv-cli.o: $(UTILS_SRC)/xshm.h analogtv-cli.o: $(UTILS_SRC)/yarandom.h analogtv-cli.o: $(srcdir)/ximage-loader.h @@ -1082,6 +1062,7 @@ analogtv.o: $(UTILS_SRC)/resources.h analogtv.o: $(UTILS_SRC)/thread_util.h analogtv.o: $(UTILS_SRC)/utils.h analogtv.o: $(UTILS_SRC)/visual.h +analogtv.o: $(UTILS_SRC)/xft.h analogtv.o: $(UTILS_SRC)/xshm.h analogtv.o: $(UTILS_SRC)/yarandom.h analogtv.o: $(srcdir)/ximage-loader.h @@ -1098,6 +1079,7 @@ anemone.o: $(UTILS_SRC)/resources.h anemone.o: $(UTILS_SRC)/usleep.h anemone.o: $(UTILS_SRC)/visual.h anemone.o: $(UTILS_SRC)/xdbe.h +anemone.o: $(UTILS_SRC)/xft.h anemone.o: $(UTILS_SRC)/yarandom.h anemotaxis.o: ../config.h anemotaxis.o: $(srcdir)/fps.h @@ -1112,6 +1094,7 @@ anemotaxis.o: $(UTILS_SRC)/resources.h anemotaxis.o: $(UTILS_SRC)/usleep.h anemotaxis.o: $(UTILS_SRC)/visual.h anemotaxis.o: $(UTILS_SRC)/xdbe.h +anemotaxis.o: $(UTILS_SRC)/xft.h anemotaxis.o: $(UTILS_SRC)/yarandom.h ant.o: $(srcdir)/automata.h ant.o: ../config.h @@ -1126,6 +1109,7 @@ ant.o: $(UTILS_SRC)/hsv.h ant.o: $(UTILS_SRC)/resources.h ant.o: $(UTILS_SRC)/usleep.h ant.o: $(UTILS_SRC)/visual.h +ant.o: $(UTILS_SRC)/xft.h ant.o: $(UTILS_SRC)/yarandom.h ant.o: $(srcdir)/xlockmoreI.h ant.o: $(srcdir)/xlockmore.h @@ -1141,6 +1125,7 @@ apollonian.o: $(UTILS_SRC)/hsv.h apollonian.o: $(UTILS_SRC)/resources.h apollonian.o: $(UTILS_SRC)/usleep.h apollonian.o: $(UTILS_SRC)/visual.h +apollonian.o: $(UTILS_SRC)/xft.h apollonian.o: $(UTILS_SRC)/yarandom.h apollonian.o: $(srcdir)/xlockmoreI.h apollonian.o: $(srcdir)/xlockmore.h @@ -1162,6 +1147,7 @@ apple2-main.o: $(UTILS_SRC)/thread_util.h apple2-main.o: $(UTILS_SRC)/usleep.h apple2-main.o: $(UTILS_SRC)/utf8wc.h apple2-main.o: $(UTILS_SRC)/visual.h +apple2-main.o: $(UTILS_SRC)/xft.h apple2-main.o: $(UTILS_SRC)/xshm.h apple2-main.o: $(UTILS_SRC)/yarandom.h apple2.o: $(srcdir)/analogtv.h @@ -1180,6 +1166,7 @@ apple2.o: $(UTILS_SRC)/resources.h apple2.o: $(UTILS_SRC)/thread_util.h apple2.o: $(UTILS_SRC)/usleep.h apple2.o: $(UTILS_SRC)/visual.h +apple2.o: $(UTILS_SRC)/xft.h apple2.o: $(UTILS_SRC)/xshm.h apple2.o: $(UTILS_SRC)/yarandom.h apple2.o: $(srcdir)/ximage-loader.h @@ -1199,6 +1186,7 @@ attraction.o: $(UTILS_SRC)/resources.h attraction.o: $(UTILS_SRC)/spline.h attraction.o: $(UTILS_SRC)/usleep.h attraction.o: $(UTILS_SRC)/visual.h +attraction.o: $(UTILS_SRC)/xft.h attraction.o: $(UTILS_SRC)/yarandom.h barcode.o: ../config.h barcode.o: $(srcdir)/fps.h @@ -1212,6 +1200,7 @@ barcode.o: $(UTILS_SRC)/hsv.h barcode.o: $(UTILS_SRC)/resources.h barcode.o: $(UTILS_SRC)/usleep.h barcode.o: $(UTILS_SRC)/visual.h +barcode.o: $(UTILS_SRC)/xft.h barcode.o: $(UTILS_SRC)/yarandom.h binaryring.o: ../config.h binaryring.o: $(srcdir)/fps.h @@ -1225,6 +1214,7 @@ binaryring.o: $(UTILS_SRC)/hsv.h binaryring.o: $(UTILS_SRC)/resources.h binaryring.o: $(UTILS_SRC)/usleep.h binaryring.o: $(UTILS_SRC)/visual.h +binaryring.o: $(UTILS_SRC)/xft.h binaryring.o: $(UTILS_SRC)/yarandom.h blaster.o: ../config.h blaster.o: $(srcdir)/fps.h @@ -1238,6 +1228,7 @@ blaster.o: $(UTILS_SRC)/hsv.h blaster.o: $(UTILS_SRC)/resources.h blaster.o: $(UTILS_SRC)/usleep.h blaster.o: $(UTILS_SRC)/visual.h +blaster.o: $(UTILS_SRC)/xft.h blaster.o: $(UTILS_SRC)/yarandom.h blitspin.o: ../config.h blitspin.o: $(srcdir)/fps.h @@ -1253,6 +1244,7 @@ blitspin.o: $(UTILS_SRC)/pow2.h blitspin.o: $(UTILS_SRC)/resources.h blitspin.o: $(UTILS_SRC)/usleep.h blitspin.o: $(UTILS_SRC)/visual.h +blitspin.o: $(UTILS_SRC)/xft.h blitspin.o: $(UTILS_SRC)/yarandom.h blitspin.o: $(srcdir)/ximage-loader.h bouboule.o: ../config.h @@ -1267,6 +1259,7 @@ bouboule.o: $(UTILS_SRC)/hsv.h bouboule.o: $(UTILS_SRC)/resources.h bouboule.o: $(UTILS_SRC)/usleep.h bouboule.o: $(UTILS_SRC)/visual.h +bouboule.o: $(UTILS_SRC)/xft.h bouboule.o: $(UTILS_SRC)/yarandom.h bouboule.o: $(srcdir)/xlockmoreI.h bouboule.o: $(srcdir)/xlockmore.h @@ -1282,6 +1275,7 @@ boxfit.o: $(UTILS_SRC)/hsv.h boxfit.o: $(UTILS_SRC)/resources.h boxfit.o: $(UTILS_SRC)/usleep.h boxfit.o: $(UTILS_SRC)/visual.h +boxfit.o: $(UTILS_SRC)/xft.h boxfit.o: $(UTILS_SRC)/yarandom.h boxfit.o: $(srcdir)/ximage-loader.h braid.o: ../config.h @@ -1296,6 +1290,7 @@ braid.o: $(UTILS_SRC)/hsv.h braid.o: $(UTILS_SRC)/resources.h braid.o: $(UTILS_SRC)/usleep.h braid.o: $(UTILS_SRC)/visual.h +braid.o: $(UTILS_SRC)/xft.h braid.o: $(UTILS_SRC)/yarandom.h braid.o: $(srcdir)/xlockmoreI.h braid.o: $(srcdir)/xlockmore.h @@ -1309,6 +1304,8 @@ bsod.o: images/gen/apple_png.h bsod.o: images/gen/atari_png.h bsod.o: images/gen/atm_png.h bsod.o: images/gen/dvd_png.h +bsod.o: images/gen/gnome1_png.h +bsod.o: images/gen/gnome2_png.h bsod.o: images/gen/hmac_png.h bsod.o: images/gen/macbomb_png.h bsod.o: images/gen/mac_png.h @@ -1328,6 +1325,7 @@ bsod.o: $(UTILS_SRC)/resources.h bsod.o: $(UTILS_SRC)/thread_util.h bsod.o: $(UTILS_SRC)/usleep.h bsod.o: $(UTILS_SRC)/visual.h +bsod.o: $(UTILS_SRC)/xft.h bsod.o: $(UTILS_SRC)/xshm.h bsod.o: $(UTILS_SRC)/yarandom.h bsod.o: $(srcdir)/ximage-loader.h @@ -1391,6 +1389,7 @@ bubbles.o: $(UTILS_SRC)/hsv.h bubbles.o: $(UTILS_SRC)/resources.h bubbles.o: $(UTILS_SRC)/usleep.h bubbles.o: $(UTILS_SRC)/visual.h +bubbles.o: $(UTILS_SRC)/xft.h bubbles.o: $(UTILS_SRC)/yarandom.h bubbles.o: $(srcdir)/ximage-loader.h bumps.o: ../config.h @@ -1405,6 +1404,7 @@ bumps.o: $(UTILS_SRC)/hsv.h bumps.o: $(UTILS_SRC)/resources.h bumps.o: $(UTILS_SRC)/usleep.h bumps.o: $(UTILS_SRC)/visual.h +bumps.o: $(UTILS_SRC)/xft.h bumps.o: $(UTILS_SRC)/xshm.h bumps.o: $(UTILS_SRC)/yarandom.h ccurve.o: ../config.h @@ -1420,6 +1420,7 @@ ccurve.o: $(UTILS_SRC)/hsv.h ccurve.o: $(UTILS_SRC)/resources.h ccurve.o: $(UTILS_SRC)/usleep.h ccurve.o: $(UTILS_SRC)/visual.h +ccurve.o: $(UTILS_SRC)/xft.h ccurve.o: $(UTILS_SRC)/yarandom.h celtic.o: ../config.h celtic.o: $(srcdir)/fps.h @@ -1434,6 +1435,7 @@ celtic.o: $(UTILS_SRC)/hsv.h celtic.o: $(UTILS_SRC)/resources.h celtic.o: $(UTILS_SRC)/usleep.h celtic.o: $(UTILS_SRC)/visual.h +celtic.o: $(UTILS_SRC)/xft.h celtic.o: $(UTILS_SRC)/yarandom.h cloudlife.o: ../config.h cloudlife.o: $(srcdir)/fps.h @@ -1447,6 +1449,7 @@ cloudlife.o: $(UTILS_SRC)/hsv.h cloudlife.o: $(UTILS_SRC)/resources.h cloudlife.o: $(UTILS_SRC)/usleep.h cloudlife.o: $(UTILS_SRC)/visual.h +cloudlife.o: $(UTILS_SRC)/xft.h cloudlife.o: $(UTILS_SRC)/yarandom.h compass.o: ../config.h compass.o: $(srcdir)/fps.h @@ -1461,6 +1464,7 @@ compass.o: $(UTILS_SRC)/resources.h compass.o: $(UTILS_SRC)/usleep.h compass.o: $(UTILS_SRC)/visual.h compass.o: $(UTILS_SRC)/xdbe.h +compass.o: $(UTILS_SRC)/xft.h compass.o: $(UTILS_SRC)/yarandom.h coral.o: ../config.h coral.o: $(srcdir)/fps.h @@ -1475,6 +1479,7 @@ coral.o: $(UTILS_SRC)/hsv.h coral.o: $(UTILS_SRC)/resources.h coral.o: $(UTILS_SRC)/usleep.h coral.o: $(UTILS_SRC)/visual.h +coral.o: $(UTILS_SRC)/xft.h coral.o: $(UTILS_SRC)/yarandom.h critical.o: ../config.h critical.o: $(srcdir)/fps.h @@ -1489,6 +1494,7 @@ critical.o: $(UTILS_SRC)/hsv.h critical.o: $(UTILS_SRC)/resources.h critical.o: $(UTILS_SRC)/usleep.h critical.o: $(UTILS_SRC)/visual.h +critical.o: $(UTILS_SRC)/xft.h critical.o: $(UTILS_SRC)/yarandom.h crystal.o: ../config.h crystal.o: $(srcdir)/fps.h @@ -1502,6 +1508,7 @@ crystal.o: $(UTILS_SRC)/hsv.h crystal.o: $(UTILS_SRC)/resources.h crystal.o: $(UTILS_SRC)/usleep.h crystal.o: $(UTILS_SRC)/visual.h +crystal.o: $(UTILS_SRC)/xft.h crystal.o: $(UTILS_SRC)/yarandom.h crystal.o: $(srcdir)/xlockmoreI.h crystal.o: $(srcdir)/xlockmore.h @@ -1517,6 +1524,7 @@ cwaves.o: $(UTILS_SRC)/hsv.h cwaves.o: $(UTILS_SRC)/resources.h cwaves.o: $(UTILS_SRC)/usleep.h cwaves.o: $(UTILS_SRC)/visual.h +cwaves.o: $(UTILS_SRC)/xft.h cwaves.o: $(UTILS_SRC)/yarandom.h cwaves.o: $(srcdir)/ximage-loader.h cynosure.o: ../config.h @@ -1531,6 +1539,7 @@ cynosure.o: $(UTILS_SRC)/hsv.h cynosure.o: $(UTILS_SRC)/resources.h cynosure.o: $(UTILS_SRC)/usleep.h cynosure.o: $(UTILS_SRC)/visual.h +cynosure.o: $(UTILS_SRC)/xft.h cynosure.o: $(UTILS_SRC)/yarandom.h decayscreen.o: ../config.h decayscreen.o: $(srcdir)/fps.h @@ -1544,6 +1553,7 @@ decayscreen.o: $(UTILS_SRC)/hsv.h decayscreen.o: $(UTILS_SRC)/resources.h decayscreen.o: $(UTILS_SRC)/usleep.h decayscreen.o: $(UTILS_SRC)/visual.h +decayscreen.o: $(UTILS_SRC)/xft.h decayscreen.o: $(UTILS_SRC)/yarandom.h deco.o: ../config.h deco.o: $(srcdir)/fps.h @@ -1557,8 +1567,8 @@ deco.o: $(UTILS_SRC)/hsv.h deco.o: $(UTILS_SRC)/resources.h deco.o: $(UTILS_SRC)/usleep.h deco.o: $(UTILS_SRC)/visual.h +deco.o: $(UTILS_SRC)/xft.h deco.o: $(UTILS_SRC)/yarandom.h -delaunay.o: ../config.h delaunay.o: $(srcdir)/delaunay.h deluxe.o: ../config.h deluxe.o: $(srcdir)/fps.h @@ -1574,6 +1584,7 @@ deluxe.o: $(UTILS_SRC)/resources.h deluxe.o: $(UTILS_SRC)/usleep.h deluxe.o: $(UTILS_SRC)/visual.h deluxe.o: $(UTILS_SRC)/xdbe.h +deluxe.o: $(UTILS_SRC)/xft.h deluxe.o: $(UTILS_SRC)/yarandom.h demon.o: $(srcdir)/automata.h demon.o: ../config.h @@ -1588,6 +1599,7 @@ demon.o: $(UTILS_SRC)/hsv.h demon.o: $(UTILS_SRC)/resources.h demon.o: $(UTILS_SRC)/usleep.h demon.o: $(UTILS_SRC)/visual.h +demon.o: $(UTILS_SRC)/xft.h demon.o: $(UTILS_SRC)/yarandom.h demon.o: $(srcdir)/xlockmoreI.h demon.o: $(srcdir)/xlockmore.h @@ -1603,6 +1615,7 @@ discrete.o: $(UTILS_SRC)/hsv.h discrete.o: $(UTILS_SRC)/resources.h discrete.o: $(UTILS_SRC)/usleep.h discrete.o: $(UTILS_SRC)/visual.h +discrete.o: $(UTILS_SRC)/xft.h discrete.o: $(UTILS_SRC)/yarandom.h discrete.o: $(srcdir)/xlockmoreI.h discrete.o: $(srcdir)/xlockmore.h @@ -1618,6 +1631,7 @@ distort.o: $(UTILS_SRC)/hsv.h distort.o: $(UTILS_SRC)/resources.h distort.o: $(UTILS_SRC)/usleep.h distort.o: $(UTILS_SRC)/visual.h +distort.o: $(UTILS_SRC)/xft.h distort.o: $(UTILS_SRC)/xshm.h distort.o: $(UTILS_SRC)/yarandom.h drift.o: ../config.h @@ -1632,6 +1646,7 @@ drift.o: $(UTILS_SRC)/hsv.h drift.o: $(UTILS_SRC)/resources.h drift.o: $(UTILS_SRC)/usleep.h drift.o: $(UTILS_SRC)/visual.h +drift.o: $(UTILS_SRC)/xft.h drift.o: $(UTILS_SRC)/yarandom.h drift.o: $(srcdir)/xlockmoreI.h drift.o: $(srcdir)/xlockmore.h @@ -1648,6 +1663,7 @@ epicycle.o: $(UTILS_SRC)/hsv.h epicycle.o: $(UTILS_SRC)/resources.h epicycle.o: $(UTILS_SRC)/usleep.h epicycle.o: $(UTILS_SRC)/visual.h +epicycle.o: $(UTILS_SRC)/xft.h epicycle.o: $(UTILS_SRC)/yarandom.h eruption.o: ../config.h eruption.o: $(srcdir)/fps.h @@ -1661,6 +1677,7 @@ eruption.o: $(UTILS_SRC)/hsv.h eruption.o: $(UTILS_SRC)/resources.h eruption.o: $(UTILS_SRC)/usleep.h eruption.o: $(UTILS_SRC)/visual.h +eruption.o: $(UTILS_SRC)/xft.h eruption.o: $(UTILS_SRC)/xshm.h eruption.o: $(UTILS_SRC)/yarandom.h euler2d.o: ../config.h @@ -1675,6 +1692,7 @@ euler2d.o: $(UTILS_SRC)/hsv.h euler2d.o: $(UTILS_SRC)/resources.h euler2d.o: $(UTILS_SRC)/usleep.h euler2d.o: $(UTILS_SRC)/visual.h +euler2d.o: $(UTILS_SRC)/xft.h euler2d.o: $(UTILS_SRC)/yarandom.h euler2d.o: $(srcdir)/xlockmoreI.h euler2d.o: $(srcdir)/xlockmore.h @@ -1690,6 +1708,7 @@ fadeplot.o: $(UTILS_SRC)/hsv.h fadeplot.o: $(UTILS_SRC)/resources.h fadeplot.o: $(UTILS_SRC)/usleep.h fadeplot.o: $(UTILS_SRC)/visual.h +fadeplot.o: $(UTILS_SRC)/xft.h fadeplot.o: $(UTILS_SRC)/yarandom.h fadeplot.o: $(srcdir)/xlockmoreI.h fadeplot.o: $(srcdir)/xlockmore.h @@ -1705,6 +1724,7 @@ fiberlamp.o: $(UTILS_SRC)/hsv.h fiberlamp.o: $(UTILS_SRC)/resources.h fiberlamp.o: $(UTILS_SRC)/usleep.h fiberlamp.o: $(UTILS_SRC)/visual.h +fiberlamp.o: $(UTILS_SRC)/xft.h fiberlamp.o: $(UTILS_SRC)/yarandom.h fiberlamp.o: $(srcdir)/xlockmoreI.h fiberlamp.o: $(srcdir)/xlockmore.h @@ -1738,6 +1758,7 @@ fireworkx.o: $(UTILS_SRC)/hsv.h fireworkx.o: $(UTILS_SRC)/resources.h fireworkx.o: $(UTILS_SRC)/usleep.h fireworkx.o: $(UTILS_SRC)/visual.h +fireworkx.o: $(UTILS_SRC)/xft.h fireworkx.o: $(UTILS_SRC)/yarandom.h flag.o: ../config.h flag.o: $(srcdir)/fps.h @@ -1752,6 +1773,7 @@ flag.o: $(UTILS_SRC)/hsv.h flag.o: $(UTILS_SRC)/resources.h flag.o: $(UTILS_SRC)/usleep.h flag.o: $(UTILS_SRC)/visual.h +flag.o: $(UTILS_SRC)/xft.h flag.o: $(UTILS_SRC)/yarandom.h flag.o: $(srcdir)/ximage-loader.h flag.o: $(srcdir)/xlockmoreI.h @@ -1768,6 +1790,7 @@ flame.o: $(UTILS_SRC)/hsv.h flame.o: $(UTILS_SRC)/resources.h flame.o: $(UTILS_SRC)/usleep.h flame.o: $(UTILS_SRC)/visual.h +flame.o: $(UTILS_SRC)/xft.h flame.o: $(UTILS_SRC)/yarandom.h flow.o: ../config.h flow.o: $(srcdir)/fps.h @@ -1781,6 +1804,7 @@ flow.o: $(UTILS_SRC)/hsv.h flow.o: $(UTILS_SRC)/resources.h flow.o: $(UTILS_SRC)/usleep.h flow.o: $(UTILS_SRC)/visual.h +flow.o: $(UTILS_SRC)/xft.h flow.o: $(UTILS_SRC)/yarandom.h flow.o: $(srcdir)/xlockmoreI.h flow.o: $(srcdir)/xlockmore.h @@ -1797,6 +1821,7 @@ fluidballs.o: $(UTILS_SRC)/resources.h fluidballs.o: $(UTILS_SRC)/usleep.h fluidballs.o: $(UTILS_SRC)/visual.h fluidballs.o: $(UTILS_SRC)/xdbe.h +fluidballs.o: $(UTILS_SRC)/xft.h fluidballs.o: $(UTILS_SRC)/yarandom.h fontglide.o: ../config.h fontglide.o: $(srcdir)/fps.h @@ -1827,6 +1852,7 @@ forest.o: $(UTILS_SRC)/hsv.h forest.o: $(UTILS_SRC)/resources.h forest.o: $(UTILS_SRC)/usleep.h forest.o: $(UTILS_SRC)/visual.h +forest.o: $(UTILS_SRC)/xft.h forest.o: $(UTILS_SRC)/yarandom.h forest.o: $(srcdir)/xlockmoreI.h forest.o: $(srcdir)/xlockmore.h @@ -1842,6 +1868,7 @@ fps.o: $(UTILS_SRC)/hsv.h fps.o: $(UTILS_SRC)/resources.h fps.o: $(UTILS_SRC)/usleep.h fps.o: $(UTILS_SRC)/visual.h +fps.o: $(UTILS_SRC)/xft.h fps.o: $(UTILS_SRC)/yarandom.h fuzzyflakes.o: ../config.h fuzzyflakes.o: $(srcdir)/fps.h @@ -1855,6 +1882,7 @@ fuzzyflakes.o: $(UTILS_SRC)/hsv.h fuzzyflakes.o: $(UTILS_SRC)/resources.h fuzzyflakes.o: $(UTILS_SRC)/usleep.h fuzzyflakes.o: $(UTILS_SRC)/visual.h +fuzzyflakes.o: $(UTILS_SRC)/xft.h fuzzyflakes.o: $(UTILS_SRC)/yarandom.h galaxy.o: ../config.h galaxy.o: $(srcdir)/fps.h @@ -1868,6 +1896,7 @@ galaxy.o: $(UTILS_SRC)/hsv.h galaxy.o: $(UTILS_SRC)/resources.h galaxy.o: $(UTILS_SRC)/usleep.h galaxy.o: $(UTILS_SRC)/visual.h +galaxy.o: $(UTILS_SRC)/xft.h galaxy.o: $(UTILS_SRC)/yarandom.h galaxy.o: $(srcdir)/xlockmoreI.h galaxy.o: $(srcdir)/xlockmore.h @@ -1883,6 +1912,7 @@ glitchpeg.o: $(UTILS_SRC)/hsv.h glitchpeg.o: $(UTILS_SRC)/resources.h glitchpeg.o: $(UTILS_SRC)/usleep.h glitchpeg.o: $(UTILS_SRC)/visual.h +glitchpeg.o: $(UTILS_SRC)/xft.h glitchpeg.o: $(UTILS_SRC)/yarandom.h glitchpeg.o: $(srcdir)/ximage-loader.h goop.o: ../config.h @@ -1899,6 +1929,7 @@ goop.o: $(UTILS_SRC)/resources.h goop.o: $(UTILS_SRC)/spline.h goop.o: $(UTILS_SRC)/usleep.h goop.o: $(UTILS_SRC)/visual.h +goop.o: $(UTILS_SRC)/xft.h goop.o: $(UTILS_SRC)/yarandom.h grav.o: ../config.h grav.o: $(srcdir)/fps.h @@ -1912,6 +1943,7 @@ grav.o: $(UTILS_SRC)/hsv.h grav.o: $(UTILS_SRC)/resources.h grav.o: $(UTILS_SRC)/usleep.h grav.o: $(UTILS_SRC)/visual.h +grav.o: $(UTILS_SRC)/xft.h grav.o: $(UTILS_SRC)/yarandom.h grav.o: $(srcdir)/xlockmoreI.h grav.o: $(srcdir)/xlockmore.h @@ -1927,6 +1959,7 @@ greynetic.o: $(UTILS_SRC)/hsv.h greynetic.o: $(UTILS_SRC)/resources.h greynetic.o: $(UTILS_SRC)/usleep.h greynetic.o: $(UTILS_SRC)/visual.h +greynetic.o: $(UTILS_SRC)/xft.h greynetic.o: $(UTILS_SRC)/yarandom.h halftone.o: ../config.h halftone.o: $(srcdir)/fps.h @@ -1940,6 +1973,7 @@ halftone.o: $(UTILS_SRC)/hsv.h halftone.o: $(UTILS_SRC)/resources.h halftone.o: $(UTILS_SRC)/usleep.h halftone.o: $(UTILS_SRC)/visual.h +halftone.o: $(UTILS_SRC)/xft.h halftone.o: $(UTILS_SRC)/yarandom.h halo.o: ../config.h halo.o: $(srcdir)/fps.h @@ -1953,6 +1987,7 @@ halo.o: $(UTILS_SRC)/hsv.h halo.o: $(UTILS_SRC)/resources.h halo.o: $(UTILS_SRC)/usleep.h halo.o: $(UTILS_SRC)/visual.h +halo.o: $(UTILS_SRC)/xft.h halo.o: $(UTILS_SRC)/yarandom.h helix.o: ../config.h helix.o: $(srcdir)/fps.h @@ -1967,6 +2002,7 @@ helix.o: $(UTILS_SRC)/hsv.h helix.o: $(UTILS_SRC)/resources.h helix.o: $(UTILS_SRC)/usleep.h helix.o: $(UTILS_SRC)/visual.h +helix.o: $(UTILS_SRC)/xft.h helix.o: $(UTILS_SRC)/yarandom.h hexadrop.o: ../config.h hexadrop.o: $(srcdir)/fps.h @@ -1980,6 +2016,7 @@ hexadrop.o: $(UTILS_SRC)/hsv.h hexadrop.o: $(UTILS_SRC)/resources.h hexadrop.o: $(UTILS_SRC)/usleep.h hexadrop.o: $(UTILS_SRC)/visual.h +hexadrop.o: $(UTILS_SRC)/xft.h hexadrop.o: $(UTILS_SRC)/yarandom.h hopalong.o: ../config.h hopalong.o: $(srcdir)/fps.h @@ -1993,6 +2030,7 @@ hopalong.o: $(UTILS_SRC)/hsv.h hopalong.o: $(UTILS_SRC)/resources.h hopalong.o: $(UTILS_SRC)/usleep.h hopalong.o: $(UTILS_SRC)/visual.h +hopalong.o: $(UTILS_SRC)/xft.h hopalong.o: $(UTILS_SRC)/yarandom.h hopalong.o: $(srcdir)/xlockmoreI.h hopalong.o: $(srcdir)/xlockmore.h @@ -2008,6 +2046,7 @@ hyperball.o: $(UTILS_SRC)/hsv.h hyperball.o: $(UTILS_SRC)/resources.h hyperball.o: $(UTILS_SRC)/usleep.h hyperball.o: $(UTILS_SRC)/visual.h +hyperball.o: $(UTILS_SRC)/xft.h hyperball.o: $(UTILS_SRC)/yarandom.h hypercube.o: ../config.h hypercube.o: $(srcdir)/fps.h @@ -2021,6 +2060,7 @@ hypercube.o: $(UTILS_SRC)/hsv.h hypercube.o: $(UTILS_SRC)/resources.h hypercube.o: $(UTILS_SRC)/usleep.h hypercube.o: $(UTILS_SRC)/visual.h +hypercube.o: $(UTILS_SRC)/xft.h hypercube.o: $(UTILS_SRC)/yarandom.h ifs.o: ../config.h ifs.o: $(srcdir)/fps.h @@ -2034,6 +2074,7 @@ ifs.o: $(UTILS_SRC)/hsv.h ifs.o: $(UTILS_SRC)/resources.h ifs.o: $(UTILS_SRC)/usleep.h ifs.o: $(UTILS_SRC)/visual.h +ifs.o: $(UTILS_SRC)/xft.h ifs.o: $(UTILS_SRC)/yarandom.h imsmap.o: ../config.h imsmap.o: $(srcdir)/fps.h @@ -2047,6 +2088,7 @@ imsmap.o: $(UTILS_SRC)/hsv.h imsmap.o: $(UTILS_SRC)/resources.h imsmap.o: $(UTILS_SRC)/usleep.h imsmap.o: $(UTILS_SRC)/visual.h +imsmap.o: $(UTILS_SRC)/xft.h imsmap.o: $(UTILS_SRC)/yarandom.h interaggregate.o: ../config.h interaggregate.o: $(srcdir)/fps.h @@ -2060,6 +2102,7 @@ interaggregate.o: $(UTILS_SRC)/hsv.h interaggregate.o: $(UTILS_SRC)/resources.h interaggregate.o: $(UTILS_SRC)/usleep.h interaggregate.o: $(UTILS_SRC)/visual.h +interaggregate.o: $(UTILS_SRC)/xft.h interaggregate.o: $(UTILS_SRC)/yarandom.h interference.o: ../config.h interference.o: $(srcdir)/fps.h @@ -2076,6 +2119,7 @@ interference.o: $(UTILS_SRC)/thread_util.h interference.o: $(UTILS_SRC)/usleep.h interference.o: $(UTILS_SRC)/visual.h interference.o: $(UTILS_SRC)/xdbe.h +interference.o: $(UTILS_SRC)/xft.h interference.o: $(UTILS_SRC)/xshm.h interference.o: $(UTILS_SRC)/yarandom.h intermomentary.o: ../config.h @@ -2090,6 +2134,7 @@ intermomentary.o: $(UTILS_SRC)/hsv.h intermomentary.o: $(UTILS_SRC)/resources.h intermomentary.o: $(UTILS_SRC)/usleep.h intermomentary.o: $(UTILS_SRC)/visual.h +intermomentary.o: $(UTILS_SRC)/xft.h intermomentary.o: $(UTILS_SRC)/yarandom.h juggle.o: ../config.h juggle.o: $(srcdir)/fps.h @@ -2103,6 +2148,7 @@ juggle.o: $(UTILS_SRC)/hsv.h juggle.o: $(UTILS_SRC)/resources.h juggle.o: $(UTILS_SRC)/usleep.h juggle.o: $(UTILS_SRC)/visual.h +juggle.o: $(UTILS_SRC)/xft.h juggle.o: $(UTILS_SRC)/yarandom.h juggle.o: $(srcdir)/xlockmoreI.h juggle.o: $(srcdir)/xlockmore.h @@ -2118,6 +2164,7 @@ julia.o: $(UTILS_SRC)/hsv.h julia.o: $(UTILS_SRC)/resources.h julia.o: $(UTILS_SRC)/usleep.h julia.o: $(UTILS_SRC)/visual.h +julia.o: $(UTILS_SRC)/xft.h julia.o: $(UTILS_SRC)/yarandom.h julia.o: $(srcdir)/xlockmoreI.h julia.o: $(srcdir)/xlockmore.h @@ -2134,6 +2181,7 @@ kaleidescope.o: $(UTILS_SRC)/resources.h kaleidescope.o: $(UTILS_SRC)/spline.h kaleidescope.o: $(UTILS_SRC)/usleep.h kaleidescope.o: $(UTILS_SRC)/visual.h +kaleidescope.o: $(UTILS_SRC)/xft.h kaleidescope.o: $(UTILS_SRC)/yarandom.h kumppa.o: ../config.h kumppa.o: $(srcdir)/fps.h @@ -2148,6 +2196,7 @@ kumppa.o: $(UTILS_SRC)/resources.h kumppa.o: $(UTILS_SRC)/usleep.h kumppa.o: $(UTILS_SRC)/visual.h kumppa.o: $(UTILS_SRC)/xdbe.h +kumppa.o: $(UTILS_SRC)/xft.h kumppa.o: $(UTILS_SRC)/yarandom.h laser.o: ../config.h laser.o: $(srcdir)/fps.h @@ -2161,6 +2210,7 @@ laser.o: $(UTILS_SRC)/hsv.h laser.o: $(UTILS_SRC)/resources.h laser.o: $(UTILS_SRC)/usleep.h laser.o: $(UTILS_SRC)/visual.h +laser.o: $(UTILS_SRC)/xft.h laser.o: $(UTILS_SRC)/yarandom.h laser.o: $(srcdir)/xlockmoreI.h laser.o: $(srcdir)/xlockmore.h @@ -2176,6 +2226,7 @@ lcdscrub.o: $(UTILS_SRC)/hsv.h lcdscrub.o: $(UTILS_SRC)/resources.h lcdscrub.o: $(UTILS_SRC)/usleep.h lcdscrub.o: $(UTILS_SRC)/visual.h +lcdscrub.o: $(UTILS_SRC)/xft.h lcdscrub.o: $(UTILS_SRC)/yarandom.h lightning.o: ../config.h lightning.o: $(srcdir)/fps.h @@ -2189,6 +2240,7 @@ lightning.o: $(UTILS_SRC)/hsv.h lightning.o: $(UTILS_SRC)/resources.h lightning.o: $(UTILS_SRC)/usleep.h lightning.o: $(UTILS_SRC)/visual.h +lightning.o: $(UTILS_SRC)/xft.h lightning.o: $(UTILS_SRC)/yarandom.h lightning.o: $(srcdir)/xlockmoreI.h lightning.o: $(srcdir)/xlockmore.h @@ -2204,6 +2256,7 @@ lisa.o: $(UTILS_SRC)/hsv.h lisa.o: $(UTILS_SRC)/resources.h lisa.o: $(UTILS_SRC)/usleep.h lisa.o: $(UTILS_SRC)/visual.h +lisa.o: $(UTILS_SRC)/xft.h lisa.o: $(UTILS_SRC)/yarandom.h lisa.o: $(srcdir)/xlockmoreI.h lisa.o: $(srcdir)/xlockmore.h @@ -2219,6 +2272,7 @@ lissie.o: $(UTILS_SRC)/hsv.h lissie.o: $(UTILS_SRC)/resources.h lissie.o: $(UTILS_SRC)/usleep.h lissie.o: $(UTILS_SRC)/visual.h +lissie.o: $(UTILS_SRC)/xft.h lissie.o: $(UTILS_SRC)/yarandom.h lissie.o: $(srcdir)/xlockmoreI.h lissie.o: $(srcdir)/xlockmore.h @@ -2234,6 +2288,7 @@ lmorph.o: $(UTILS_SRC)/hsv.h lmorph.o: $(UTILS_SRC)/resources.h lmorph.o: $(UTILS_SRC)/usleep.h lmorph.o: $(UTILS_SRC)/visual.h +lmorph.o: $(UTILS_SRC)/xft.h lmorph.o: $(UTILS_SRC)/yarandom.h loop.o: $(srcdir)/automata.h loop.o: ../config.h @@ -2248,6 +2303,7 @@ loop.o: $(UTILS_SRC)/hsv.h loop.o: $(UTILS_SRC)/resources.h loop.o: $(UTILS_SRC)/usleep.h loop.o: $(UTILS_SRC)/visual.h +loop.o: $(UTILS_SRC)/xft.h loop.o: $(UTILS_SRC)/yarandom.h loop.o: $(srcdir)/xlockmoreI.h loop.o: $(srcdir)/xlockmore.h @@ -2268,11 +2324,13 @@ m6502.o: $(UTILS_SRC)/resources.h m6502.o: $(UTILS_SRC)/thread_util.h m6502.o: $(UTILS_SRC)/usleep.h m6502.o: $(UTILS_SRC)/visual.h +m6502.o: $(UTILS_SRC)/xft.h m6502.o: $(UTILS_SRC)/xshm.h m6502.o: $(UTILS_SRC)/yarandom.h maze.o: ../config.h maze.o: $(srcdir)/fps.h maze.o: images/gen/logo-180_png.h +maze.o: images/gen/logo-360_png.h maze.o: images/gen/logo-50_png.h maze.o: $(srcdir)/recanim.h maze.o: $(srcdir)/screenhackI.h @@ -2285,6 +2343,7 @@ maze.o: $(UTILS_SRC)/hsv.h maze.o: $(UTILS_SRC)/resources.h maze.o: $(UTILS_SRC)/usleep.h maze.o: $(UTILS_SRC)/visual.h +maze.o: $(UTILS_SRC)/xft.h maze.o: $(UTILS_SRC)/yarandom.h maze.o: $(srcdir)/ximage-loader.h memscroller.o: ../config.h @@ -2299,6 +2358,7 @@ memscroller.o: $(UTILS_SRC)/hsv.h memscroller.o: $(UTILS_SRC)/resources.h memscroller.o: $(UTILS_SRC)/usleep.h memscroller.o: $(UTILS_SRC)/visual.h +memscroller.o: $(UTILS_SRC)/xft.h memscroller.o: $(UTILS_SRC)/xshm.h memscroller.o: $(UTILS_SRC)/yarandom.h metaballs.o: ../config.h @@ -2313,6 +2373,7 @@ metaballs.o: $(UTILS_SRC)/hsv.h metaballs.o: $(UTILS_SRC)/resources.h metaballs.o: $(UTILS_SRC)/usleep.h metaballs.o: $(UTILS_SRC)/visual.h +metaballs.o: $(UTILS_SRC)/xft.h metaballs.o: $(UTILS_SRC)/yarandom.h moire2.o: ../config.h moire2.o: $(srcdir)/fps.h @@ -2327,6 +2388,7 @@ moire2.o: $(UTILS_SRC)/resources.h moire2.o: $(UTILS_SRC)/usleep.h moire2.o: $(UTILS_SRC)/visual.h moire2.o: $(UTILS_SRC)/xdbe.h +moire2.o: $(UTILS_SRC)/xft.h moire2.o: $(UTILS_SRC)/yarandom.h moire.o: ../config.h moire.o: $(srcdir)/fps.h @@ -2340,6 +2402,7 @@ moire.o: $(UTILS_SRC)/hsv.h moire.o: $(UTILS_SRC)/resources.h moire.o: $(UTILS_SRC)/usleep.h moire.o: $(UTILS_SRC)/visual.h +moire.o: $(UTILS_SRC)/xft.h moire.o: $(UTILS_SRC)/xshm.h moire.o: $(UTILS_SRC)/yarandom.h mountain.o: ../config.h @@ -2354,6 +2417,7 @@ mountain.o: $(UTILS_SRC)/hsv.h mountain.o: $(UTILS_SRC)/resources.h mountain.o: $(UTILS_SRC)/usleep.h mountain.o: $(UTILS_SRC)/visual.h +mountain.o: $(UTILS_SRC)/xft.h mountain.o: $(UTILS_SRC)/yarandom.h mountain.o: $(srcdir)/xlockmoreI.h mountain.o: $(srcdir)/xlockmore.h @@ -2366,9 +2430,11 @@ munch.o: $(UTILS_SRC)/colors.h munch.o: $(UTILS_SRC)/font-retry.h munch.o: $(UTILS_SRC)/grabscreen.h munch.o: $(UTILS_SRC)/hsv.h +munch.o: $(UTILS_SRC)/pow2.h munch.o: $(UTILS_SRC)/resources.h munch.o: $(UTILS_SRC)/usleep.h munch.o: $(UTILS_SRC)/visual.h +munch.o: $(UTILS_SRC)/xft.h munch.o: $(UTILS_SRC)/yarandom.h nerverot.o: ../config.h nerverot.o: $(srcdir)/fps.h @@ -2382,6 +2448,7 @@ nerverot.o: $(UTILS_SRC)/hsv.h nerverot.o: $(UTILS_SRC)/resources.h nerverot.o: $(UTILS_SRC)/usleep.h nerverot.o: $(UTILS_SRC)/visual.h +nerverot.o: $(UTILS_SRC)/xft.h nerverot.o: $(UTILS_SRC)/yarandom.h noseguy.o: ../config.h noseguy.o: $(srcdir)/fps.h @@ -2422,8 +2489,8 @@ pacman_ai.o: $(UTILS_SRC)/hsv.h pacman_ai.o: $(UTILS_SRC)/resources.h pacman_ai.o: $(UTILS_SRC)/usleep.h pacman_ai.o: $(UTILS_SRC)/visual.h +pacman_ai.o: $(UTILS_SRC)/xft.h pacman_ai.o: $(UTILS_SRC)/yarandom.h -pacman_ai.o: $(srcdir)/ximage-loader.h pacman_ai.o: $(srcdir)/xlockmoreI.h pacman_level.o: ../config.h pacman_level.o: $(srcdir)/fps.h @@ -2432,16 +2499,14 @@ pacman_level.o: $(srcdir)/pacman_level.h pacman_level.o: $(srcdir)/recanim.h pacman_level.o: $(srcdir)/screenhackI.h pacman_level.o: $(UTILS_SRC)/colors.h -pacman_level.o: $(UTILS_SRC)/erase.h pacman_level.o: $(UTILS_SRC)/font-retry.h pacman_level.o: $(UTILS_SRC)/grabscreen.h pacman_level.o: $(UTILS_SRC)/hsv.h pacman_level.o: $(UTILS_SRC)/resources.h pacman_level.o: $(UTILS_SRC)/usleep.h pacman_level.o: $(UTILS_SRC)/visual.h +pacman_level.o: $(UTILS_SRC)/xft.h pacman_level.o: $(UTILS_SRC)/yarandom.h -pacman_level.o: $(srcdir)/ximage-loader.h -pacman_level.o: $(srcdir)/xlockmoreI.h pacman.o: ../config.h pacman.o: $(srcdir)/fps.h pacman.o: images/gen/pacman_png.h @@ -2458,6 +2523,7 @@ pacman.o: $(UTILS_SRC)/hsv.h pacman.o: $(UTILS_SRC)/resources.h pacman.o: $(UTILS_SRC)/usleep.h pacman.o: $(UTILS_SRC)/visual.h +pacman.o: $(UTILS_SRC)/xft.h pacman.o: $(UTILS_SRC)/yarandom.h pacman.o: $(srcdir)/ximage-loader.h pacman.o: $(srcdir)/xlockmoreI.h @@ -2475,6 +2541,7 @@ pedal.o: $(UTILS_SRC)/hsv.h pedal.o: $(UTILS_SRC)/resources.h pedal.o: $(UTILS_SRC)/usleep.h pedal.o: $(UTILS_SRC)/visual.h +pedal.o: $(UTILS_SRC)/xft.h pedal.o: $(UTILS_SRC)/yarandom.h penetrate.o: ../config.h penetrate.o: $(srcdir)/fps.h @@ -2488,6 +2555,7 @@ penetrate.o: $(UTILS_SRC)/hsv.h penetrate.o: $(UTILS_SRC)/resources.h penetrate.o: $(UTILS_SRC)/usleep.h penetrate.o: $(UTILS_SRC)/visual.h +penetrate.o: $(UTILS_SRC)/xft.h penetrate.o: $(UTILS_SRC)/yarandom.h penrose.o: ../config.h penrose.o: $(srcdir)/fps.h @@ -2501,6 +2569,7 @@ penrose.o: $(UTILS_SRC)/hsv.h penrose.o: $(UTILS_SRC)/resources.h penrose.o: $(UTILS_SRC)/usleep.h penrose.o: $(UTILS_SRC)/visual.h +penrose.o: $(UTILS_SRC)/xft.h penrose.o: $(UTILS_SRC)/yarandom.h penrose.o: $(srcdir)/xlockmoreI.h penrose.o: $(srcdir)/xlockmore.h @@ -2517,6 +2586,7 @@ petri.o: $(UTILS_SRC)/resources.h petri.o: $(UTILS_SRC)/spline.h petri.o: $(UTILS_SRC)/usleep.h petri.o: $(UTILS_SRC)/visual.h +petri.o: $(UTILS_SRC)/xft.h petri.o: $(UTILS_SRC)/yarandom.h phosphor.o: ../config.h phosphor.o: $(srcdir)/fps.h @@ -2533,6 +2603,7 @@ phosphor.o: $(UTILS_SRC)/textclient.h phosphor.o: $(UTILS_SRC)/usleep.h phosphor.o: $(UTILS_SRC)/utf8wc.h phosphor.o: $(UTILS_SRC)/visual.h +phosphor.o: $(UTILS_SRC)/xft.h phosphor.o: $(UTILS_SRC)/yarandom.h phosphor.o: $(srcdir)/ximage-loader.h piecewise.o: ../config.h @@ -2548,6 +2619,7 @@ piecewise.o: $(UTILS_SRC)/resources.h piecewise.o: $(UTILS_SRC)/usleep.h piecewise.o: $(UTILS_SRC)/visual.h piecewise.o: $(UTILS_SRC)/xdbe.h +piecewise.o: $(UTILS_SRC)/xft.h piecewise.o: $(UTILS_SRC)/yarandom.h polyominoes.o: ../config.h polyominoes.o: $(srcdir)/fps.h @@ -2561,6 +2633,7 @@ polyominoes.o: $(UTILS_SRC)/hsv.h polyominoes.o: $(UTILS_SRC)/resources.h polyominoes.o: $(UTILS_SRC)/usleep.h polyominoes.o: $(UTILS_SRC)/visual.h +polyominoes.o: $(UTILS_SRC)/xft.h polyominoes.o: $(UTILS_SRC)/yarandom.h polyominoes.o: $(srcdir)/xlockmoreI.h polyominoes.o: $(srcdir)/xlockmore.h @@ -2579,6 +2652,7 @@ pong.o: $(UTILS_SRC)/resources.h pong.o: $(UTILS_SRC)/thread_util.h pong.o: $(UTILS_SRC)/usleep.h pong.o: $(UTILS_SRC)/visual.h +pong.o: $(UTILS_SRC)/xft.h pong.o: $(UTILS_SRC)/xshm.h pong.o: $(UTILS_SRC)/yarandom.h popsquares.o: ../config.h @@ -2594,6 +2668,7 @@ popsquares.o: $(UTILS_SRC)/resources.h popsquares.o: $(UTILS_SRC)/usleep.h popsquares.o: $(UTILS_SRC)/visual.h popsquares.o: $(UTILS_SRC)/xdbe.h +popsquares.o: $(UTILS_SRC)/xft.h popsquares.o: $(UTILS_SRC)/yarandom.h pyro.o: ../config.h pyro.o: $(srcdir)/fps.h @@ -2607,6 +2682,7 @@ pyro.o: $(UTILS_SRC)/hsv.h pyro.o: $(UTILS_SRC)/resources.h pyro.o: $(UTILS_SRC)/usleep.h pyro.o: $(UTILS_SRC)/visual.h +pyro.o: $(UTILS_SRC)/xft.h pyro.o: $(UTILS_SRC)/yarandom.h qix.o: ../config.h qix.o: $(srcdir)/fps.h @@ -2621,6 +2697,7 @@ qix.o: $(UTILS_SRC)/hsv.h qix.o: $(UTILS_SRC)/resources.h qix.o: $(UTILS_SRC)/usleep.h qix.o: $(UTILS_SRC)/visual.h +qix.o: $(UTILS_SRC)/xft.h qix.o: $(UTILS_SRC)/yarandom.h rd-bomb.o: ../config.h rd-bomb.o: $(srcdir)/fps.h @@ -2634,6 +2711,7 @@ rd-bomb.o: $(UTILS_SRC)/hsv.h rd-bomb.o: $(UTILS_SRC)/resources.h rd-bomb.o: $(UTILS_SRC)/usleep.h rd-bomb.o: $(UTILS_SRC)/visual.h +rd-bomb.o: $(UTILS_SRC)/xft.h rd-bomb.o: $(UTILS_SRC)/xshm.h rd-bomb.o: $(UTILS_SRC)/yarandom.h recanim.o: ../config.h @@ -2647,6 +2725,7 @@ recanim.o: $(UTILS_SRC)/hsv.h recanim.o: $(UTILS_SRC)/resources.h recanim.o: $(UTILS_SRC)/usleep.h recanim.o: $(UTILS_SRC)/visual.h +recanim.o: $(UTILS_SRC)/xft.h recanim.o: $(UTILS_SRC)/yarandom.h ripples.o: ../config.h ripples.o: $(srcdir)/fps.h @@ -2660,6 +2739,7 @@ ripples.o: $(UTILS_SRC)/hsv.h ripples.o: $(UTILS_SRC)/resources.h ripples.o: $(UTILS_SRC)/usleep.h ripples.o: $(UTILS_SRC)/visual.h +ripples.o: $(UTILS_SRC)/xft.h ripples.o: $(UTILS_SRC)/xshm.h ripples.o: $(UTILS_SRC)/yarandom.h rocks.o: ../config.h @@ -2674,6 +2754,7 @@ rocks.o: $(UTILS_SRC)/hsv.h rocks.o: $(UTILS_SRC)/resources.h rocks.o: $(UTILS_SRC)/usleep.h rocks.o: $(UTILS_SRC)/visual.h +rocks.o: $(UTILS_SRC)/xft.h rocks.o: $(UTILS_SRC)/yarandom.h rorschach.o: ../config.h rorschach.o: $(srcdir)/fps.h @@ -2688,6 +2769,7 @@ rorschach.o: $(UTILS_SRC)/hsv.h rorschach.o: $(UTILS_SRC)/resources.h rorschach.o: $(UTILS_SRC)/usleep.h rorschach.o: $(UTILS_SRC)/visual.h +rorschach.o: $(UTILS_SRC)/xft.h rorschach.o: $(UTILS_SRC)/yarandom.h rotor.o: ../config.h rotor.o: $(srcdir)/fps.h @@ -2701,6 +2783,7 @@ rotor.o: $(UTILS_SRC)/hsv.h rotor.o: $(UTILS_SRC)/resources.h rotor.o: $(UTILS_SRC)/usleep.h rotor.o: $(UTILS_SRC)/visual.h +rotor.o: $(UTILS_SRC)/xft.h rotor.o: $(UTILS_SRC)/yarandom.h rotor.o: $(srcdir)/xlockmoreI.h rotor.o: $(srcdir)/xlockmore.h @@ -2716,6 +2799,7 @@ rotzoomer.o: $(UTILS_SRC)/hsv.h rotzoomer.o: $(UTILS_SRC)/resources.h rotzoomer.o: $(UTILS_SRC)/usleep.h rotzoomer.o: $(UTILS_SRC)/visual.h +rotzoomer.o: $(UTILS_SRC)/xft.h rotzoomer.o: $(UTILS_SRC)/xshm.h rotzoomer.o: $(UTILS_SRC)/yarandom.h scooter.o: ../config.h @@ -2730,6 +2814,7 @@ scooter.o: $(UTILS_SRC)/hsv.h scooter.o: $(UTILS_SRC)/resources.h scooter.o: $(UTILS_SRC)/usleep.h scooter.o: $(UTILS_SRC)/visual.h +scooter.o: $(UTILS_SRC)/xft.h scooter.o: $(UTILS_SRC)/yarandom.h scooter.o: $(srcdir)/xlockmoreI.h scooter.o: $(srcdir)/xlockmore.h @@ -2746,6 +2831,7 @@ screenhack.o: $(UTILS_SRC)/usleep.h screenhack.o: $(UTILS_SRC)/version.h screenhack.o: $(UTILS_SRC)/visual.h screenhack.o: $(UTILS_SRC)/vroot.h +screenhack.o: $(UTILS_SRC)/xft.h screenhack.o: $(UTILS_SRC)/xmu.h screenhack.o: $(UTILS_SRC)/yarandom.h shadebobs.o: ../config.h @@ -2760,6 +2846,7 @@ shadebobs.o: $(UTILS_SRC)/hsv.h shadebobs.o: $(UTILS_SRC)/resources.h shadebobs.o: $(UTILS_SRC)/usleep.h shadebobs.o: $(UTILS_SRC)/visual.h +shadebobs.o: $(UTILS_SRC)/xft.h shadebobs.o: $(UTILS_SRC)/yarandom.h sierpinski.o: ../config.h sierpinski.o: $(srcdir)/fps.h @@ -2773,6 +2860,7 @@ sierpinski.o: $(UTILS_SRC)/hsv.h sierpinski.o: $(UTILS_SRC)/resources.h sierpinski.o: $(UTILS_SRC)/usleep.h sierpinski.o: $(UTILS_SRC)/visual.h +sierpinski.o: $(UTILS_SRC)/xft.h sierpinski.o: $(UTILS_SRC)/yarandom.h sierpinski.o: $(srcdir)/xlockmoreI.h sierpinski.o: $(srcdir)/xlockmore.h @@ -2788,6 +2876,7 @@ slidescreen.o: $(UTILS_SRC)/hsv.h slidescreen.o: $(UTILS_SRC)/resources.h slidescreen.o: $(UTILS_SRC)/usleep.h slidescreen.o: $(UTILS_SRC)/visual.h +slidescreen.o: $(UTILS_SRC)/xft.h slidescreen.o: $(UTILS_SRC)/yarandom.h slip.o: ../config.h slip.o: $(srcdir)/fps.h @@ -2801,6 +2890,7 @@ slip.o: $(UTILS_SRC)/hsv.h slip.o: $(UTILS_SRC)/resources.h slip.o: $(UTILS_SRC)/usleep.h slip.o: $(UTILS_SRC)/visual.h +slip.o: $(UTILS_SRC)/xft.h slip.o: $(UTILS_SRC)/yarandom.h slip.o: $(srcdir)/xlockmoreI.h slip.o: $(srcdir)/xlockmore.h @@ -2817,6 +2907,7 @@ speedmine.o: $(UTILS_SRC)/hsv.h speedmine.o: $(UTILS_SRC)/resources.h speedmine.o: $(UTILS_SRC)/usleep.h speedmine.o: $(UTILS_SRC)/visual.h +speedmine.o: $(UTILS_SRC)/xft.h speedmine.o: $(UTILS_SRC)/yarandom.h sphere.o: ../config.h sphere.o: $(srcdir)/fps.h @@ -2830,6 +2921,7 @@ sphere.o: $(UTILS_SRC)/hsv.h sphere.o: $(UTILS_SRC)/resources.h sphere.o: $(UTILS_SRC)/usleep.h sphere.o: $(UTILS_SRC)/visual.h +sphere.o: $(UTILS_SRC)/xft.h sphere.o: $(UTILS_SRC)/yarandom.h sphere.o: $(srcdir)/xlockmoreI.h sphere.o: $(srcdir)/xlockmore.h @@ -2845,6 +2937,7 @@ spiral.o: $(UTILS_SRC)/hsv.h spiral.o: $(UTILS_SRC)/resources.h spiral.o: $(UTILS_SRC)/usleep.h spiral.o: $(UTILS_SRC)/visual.h +spiral.o: $(UTILS_SRC)/xft.h spiral.o: $(UTILS_SRC)/yarandom.h spiral.o: $(srcdir)/xlockmoreI.h spiral.o: $(srcdir)/xlockmore.h @@ -2860,6 +2953,7 @@ spotlight.o: $(UTILS_SRC)/hsv.h spotlight.o: $(UTILS_SRC)/resources.h spotlight.o: $(UTILS_SRC)/usleep.h spotlight.o: $(UTILS_SRC)/visual.h +spotlight.o: $(UTILS_SRC)/xft.h spotlight.o: $(UTILS_SRC)/yarandom.h squiral.o: ../config.h squiral.o: $(srcdir)/fps.h @@ -2874,6 +2968,7 @@ squiral.o: $(UTILS_SRC)/hsv.h squiral.o: $(UTILS_SRC)/resources.h squiral.o: $(UTILS_SRC)/usleep.h squiral.o: $(UTILS_SRC)/visual.h +squiral.o: $(UTILS_SRC)/xft.h squiral.o: $(UTILS_SRC)/yarandom.h starfish.o: ../config.h starfish.o: $(srcdir)/fps.h @@ -2888,6 +2983,7 @@ starfish.o: $(UTILS_SRC)/resources.h starfish.o: $(UTILS_SRC)/spline.h starfish.o: $(UTILS_SRC)/usleep.h starfish.o: $(UTILS_SRC)/visual.h +starfish.o: $(UTILS_SRC)/xft.h starfish.o: $(UTILS_SRC)/yarandom.h strange.o: ../config.h strange.o: $(srcdir)/fps.h @@ -2904,6 +3000,7 @@ strange.o: $(UTILS_SRC)/resources.h strange.o: $(UTILS_SRC)/thread_util.h strange.o: $(UTILS_SRC)/usleep.h strange.o: $(UTILS_SRC)/visual.h +strange.o: $(UTILS_SRC)/xft.h strange.o: $(UTILS_SRC)/xshm.h strange.o: $(UTILS_SRC)/yarandom.h strange.o: $(srcdir)/xlockmoreI.h @@ -2920,6 +3017,7 @@ substrate.o: $(UTILS_SRC)/hsv.h substrate.o: $(UTILS_SRC)/resources.h substrate.o: $(UTILS_SRC)/usleep.h substrate.o: $(UTILS_SRC)/visual.h +substrate.o: $(UTILS_SRC)/xft.h substrate.o: $(UTILS_SRC)/yarandom.h swirl.o: ../config.h swirl.o: $(srcdir)/fps.h @@ -2933,6 +3031,7 @@ swirl.o: $(UTILS_SRC)/hsv.h swirl.o: $(UTILS_SRC)/resources.h swirl.o: $(UTILS_SRC)/usleep.h swirl.o: $(UTILS_SRC)/visual.h +swirl.o: $(UTILS_SRC)/xft.h swirl.o: $(UTILS_SRC)/xshm.h swirl.o: $(UTILS_SRC)/yarandom.h swirl.o: $(srcdir)/xlockmoreI.h @@ -2949,6 +3048,7 @@ t3d.o: $(UTILS_SRC)/hsv.h t3d.o: $(UTILS_SRC)/resources.h t3d.o: $(UTILS_SRC)/usleep.h t3d.o: $(UTILS_SRC)/visual.h +t3d.o: $(UTILS_SRC)/xft.h t3d.o: $(UTILS_SRC)/yarandom.h tessellimage.o: ../config.h tessellimage.o: $(srcdir)/delaunay.h @@ -2963,6 +3063,7 @@ tessellimage.o: $(UTILS_SRC)/hsv.h tessellimage.o: $(UTILS_SRC)/resources.h tessellimage.o: $(UTILS_SRC)/usleep.h tessellimage.o: $(UTILS_SRC)/visual.h +tessellimage.o: $(UTILS_SRC)/xft.h tessellimage.o: $(UTILS_SRC)/yarandom.h testx11.o: ../config.h testx11.o: $(srcdir)/fps.h @@ -2980,6 +3081,7 @@ testx11.o: $(UTILS_SRC)/hsv.h testx11.o: $(UTILS_SRC)/resources.h testx11.o: $(UTILS_SRC)/usleep.h testx11.o: $(UTILS_SRC)/visual.h +testx11.o: $(UTILS_SRC)/xft.h testx11.o: $(UTILS_SRC)/yarandom.h testx11.o: $(srcdir)/ximage-loader.h thornbird.o: ../config.h @@ -2994,6 +3096,7 @@ thornbird.o: $(UTILS_SRC)/hsv.h thornbird.o: $(UTILS_SRC)/resources.h thornbird.o: $(UTILS_SRC)/usleep.h thornbird.o: $(UTILS_SRC)/visual.h +thornbird.o: $(UTILS_SRC)/xft.h thornbird.o: $(UTILS_SRC)/yarandom.h thornbird.o: $(srcdir)/xlockmoreI.h thornbird.o: $(srcdir)/xlockmore.h @@ -3009,6 +3112,7 @@ triangle.o: $(UTILS_SRC)/hsv.h triangle.o: $(UTILS_SRC)/resources.h triangle.o: $(UTILS_SRC)/usleep.h triangle.o: $(UTILS_SRC)/visual.h +triangle.o: $(UTILS_SRC)/xft.h triangle.o: $(UTILS_SRC)/yarandom.h triangle.o: $(srcdir)/xlockmoreI.h triangle.o: $(srcdir)/xlockmore.h @@ -3024,6 +3128,7 @@ truchet.o: $(UTILS_SRC)/hsv.h truchet.o: $(UTILS_SRC)/resources.h truchet.o: $(UTILS_SRC)/usleep.h truchet.o: $(UTILS_SRC)/visual.h +truchet.o: $(UTILS_SRC)/xft.h truchet.o: $(UTILS_SRC)/yarandom.h twang.o: ../config.h twang.o: $(srcdir)/fps.h @@ -3037,6 +3142,7 @@ twang.o: $(UTILS_SRC)/hsv.h twang.o: $(UTILS_SRC)/resources.h twang.o: $(UTILS_SRC)/usleep.h twang.o: $(UTILS_SRC)/visual.h +twang.o: $(UTILS_SRC)/xft.h twang.o: $(UTILS_SRC)/xshm.h twang.o: $(UTILS_SRC)/yarandom.h vermiculate.o: ../config.h @@ -3051,6 +3157,7 @@ vermiculate.o: $(UTILS_SRC)/hsv.h vermiculate.o: $(UTILS_SRC)/resources.h vermiculate.o: $(UTILS_SRC)/usleep.h vermiculate.o: $(UTILS_SRC)/visual.h +vermiculate.o: $(UTILS_SRC)/xft.h vermiculate.o: $(UTILS_SRC)/yarandom.h vfeedback.o: $(srcdir)/analogtv.h vfeedback.o: ../config.h @@ -3067,6 +3174,7 @@ vfeedback.o: $(UTILS_SRC)/resources.h vfeedback.o: $(UTILS_SRC)/thread_util.h vfeedback.o: $(UTILS_SRC)/usleep.h vfeedback.o: $(UTILS_SRC)/visual.h +vfeedback.o: $(UTILS_SRC)/xft.h vfeedback.o: $(UTILS_SRC)/xshm.h vfeedback.o: $(UTILS_SRC)/yarandom.h vines.o: ../config.h @@ -3081,6 +3189,7 @@ vines.o: $(UTILS_SRC)/hsv.h vines.o: $(UTILS_SRC)/resources.h vines.o: $(UTILS_SRC)/usleep.h vines.o: $(UTILS_SRC)/visual.h +vines.o: $(UTILS_SRC)/xft.h vines.o: $(UTILS_SRC)/yarandom.h vines.o: $(srcdir)/xlockmoreI.h vines.o: $(srcdir)/xlockmore.h @@ -3097,6 +3206,7 @@ wander.o: $(UTILS_SRC)/hsv.h wander.o: $(UTILS_SRC)/resources.h wander.o: $(UTILS_SRC)/usleep.h wander.o: $(UTILS_SRC)/visual.h +wander.o: $(UTILS_SRC)/xft.h wander.o: $(UTILS_SRC)/yarandom.h webcollage-cocoa.o: ../config.h webcollage-cocoa.o: $(srcdir)/fps.h @@ -3110,6 +3220,7 @@ webcollage-cocoa.o: $(UTILS_SRC)/hsv.h webcollage-cocoa.o: $(UTILS_SRC)/resources.h webcollage-cocoa.o: $(UTILS_SRC)/usleep.h webcollage-cocoa.o: $(UTILS_SRC)/visual.h +webcollage-cocoa.o: $(UTILS_SRC)/xft.h webcollage-cocoa.o: $(UTILS_SRC)/yarandom.h webcollage-helper.o: ../config.h whirlwindwarp.o: ../config.h @@ -3125,6 +3236,7 @@ whirlwindwarp.o: $(UTILS_SRC)/hsv.h whirlwindwarp.o: $(UTILS_SRC)/resources.h whirlwindwarp.o: $(UTILS_SRC)/usleep.h whirlwindwarp.o: $(UTILS_SRC)/visual.h +whirlwindwarp.o: $(UTILS_SRC)/xft.h whirlwindwarp.o: $(UTILS_SRC)/yarandom.h whirlygig.o: ../config.h whirlygig.o: $(srcdir)/fps.h @@ -3139,6 +3251,7 @@ whirlygig.o: $(UTILS_SRC)/resources.h whirlygig.o: $(UTILS_SRC)/usleep.h whirlygig.o: $(UTILS_SRC)/visual.h whirlygig.o: $(UTILS_SRC)/xdbe.h +whirlygig.o: $(UTILS_SRC)/xft.h whirlygig.o: $(UTILS_SRC)/yarandom.h wormhole.o: ../config.h wormhole.o: $(srcdir)/fps.h @@ -3152,6 +3265,7 @@ wormhole.o: $(UTILS_SRC)/hsv.h wormhole.o: $(UTILS_SRC)/resources.h wormhole.o: $(UTILS_SRC)/usleep.h wormhole.o: $(UTILS_SRC)/visual.h +wormhole.o: $(UTILS_SRC)/xft.h wormhole.o: $(UTILS_SRC)/yarandom.h worm.o: ../config.h worm.o: $(srcdir)/fps.h @@ -3165,6 +3279,7 @@ worm.o: $(UTILS_SRC)/hsv.h worm.o: $(UTILS_SRC)/resources.h worm.o: $(UTILS_SRC)/usleep.h worm.o: $(UTILS_SRC)/visual.h +worm.o: $(UTILS_SRC)/xft.h worm.o: $(UTILS_SRC)/yarandom.h worm.o: $(srcdir)/xlockmoreI.h worm.o: $(srcdir)/xlockmore.h @@ -3187,6 +3302,7 @@ xanalogtv.o: $(UTILS_SRC)/resources.h xanalogtv.o: $(UTILS_SRC)/thread_util.h xanalogtv.o: $(UTILS_SRC)/usleep.h xanalogtv.o: $(UTILS_SRC)/visual.h +xanalogtv.o: $(UTILS_SRC)/xft.h xanalogtv.o: $(UTILS_SRC)/xshm.h xanalogtv.o: $(UTILS_SRC)/yarandom.h xanalogtv.o: $(srcdir)/ximage-loader.h @@ -3203,10 +3319,23 @@ xflame.o: $(UTILS_SRC)/hsv.h xflame.o: $(UTILS_SRC)/resources.h xflame.o: $(UTILS_SRC)/usleep.h xflame.o: $(UTILS_SRC)/visual.h +xflame.o: $(UTILS_SRC)/xft.h xflame.o: $(UTILS_SRC)/xshm.h xflame.o: $(UTILS_SRC)/yarandom.h xflame.o: $(srcdir)/ximage-loader.h ximage-loader.o: ../config.h +ximage-loader.o: $(srcdir)/fps.h +ximage-loader.o: $(srcdir)/recanim.h +ximage-loader.o: $(srcdir)/screenhackI.h +ximage-loader.o: $(UTILS_SRC)/colors.h +ximage-loader.o: $(UTILS_SRC)/font-retry.h +ximage-loader.o: $(UTILS_SRC)/grabscreen.h +ximage-loader.o: $(UTILS_SRC)/hsv.h +ximage-loader.o: $(UTILS_SRC)/resources.h +ximage-loader.o: $(UTILS_SRC)/usleep.h +ximage-loader.o: $(UTILS_SRC)/visual.h +ximage-loader.o: $(UTILS_SRC)/xft.h +ximage-loader.o: $(UTILS_SRC)/yarandom.h ximage-loader.o: $(srcdir)/ximage-loader.h xjack.o: ../config.h xjack.o: $(srcdir)/fps.h @@ -3220,6 +3349,7 @@ xjack.o: $(UTILS_SRC)/hsv.h xjack.o: $(UTILS_SRC)/resources.h xjack.o: $(UTILS_SRC)/usleep.h xjack.o: $(UTILS_SRC)/visual.h +xjack.o: $(UTILS_SRC)/xft.h xjack.o: $(UTILS_SRC)/yarandom.h xlockmore.o: ../config.h xlockmore.o: $(srcdir)/fps.h @@ -3234,6 +3364,7 @@ xlockmore.o: $(UTILS_SRC)/hsv.h xlockmore.o: $(UTILS_SRC)/resources.h xlockmore.o: $(UTILS_SRC)/usleep.h xlockmore.o: $(UTILS_SRC)/visual.h +xlockmore.o: $(UTILS_SRC)/xft.h xlockmore.o: $(UTILS_SRC)/yarandom.h xlockmore.o: $(srcdir)/xlockmoreI.h xlyap.o: ../config.h @@ -3248,6 +3379,7 @@ xlyap.o: $(UTILS_SRC)/hsv.h xlyap.o: $(UTILS_SRC)/resources.h xlyap.o: $(UTILS_SRC)/usleep.h xlyap.o: $(UTILS_SRC)/visual.h +xlyap.o: $(UTILS_SRC)/xft.h xlyap.o: $(UTILS_SRC)/yarandom.h xmatrix.o: ../config.h xmatrix.o: $(srcdir)/fps.h @@ -3266,6 +3398,7 @@ xmatrix.o: $(UTILS_SRC)/resources.h xmatrix.o: $(UTILS_SRC)/textclient.h xmatrix.o: $(UTILS_SRC)/usleep.h xmatrix.o: $(UTILS_SRC)/visual.h +xmatrix.o: $(UTILS_SRC)/xft.h xmatrix.o: $(UTILS_SRC)/yarandom.h xmatrix.o: $(srcdir)/ximage-loader.h xrayswarm.o: ../config.h @@ -3280,8 +3413,19 @@ xrayswarm.o: $(UTILS_SRC)/hsv.h xrayswarm.o: $(UTILS_SRC)/resources.h xrayswarm.o: $(UTILS_SRC)/usleep.h xrayswarm.o: $(UTILS_SRC)/visual.h +xrayswarm.o: $(UTILS_SRC)/xft.h xrayswarm.o: $(UTILS_SRC)/yarandom.h -xscreensaver-sgigl.o: $(UTILS_SRC)/vroot.h +xscreensaver-getimage.o: ../config.h +xscreensaver-getimage.o: $(srcdir)/../driver/prefs.h +xscreensaver-getimage.o: $(UTILS_SRC)/colorbars.h +xscreensaver-getimage.o: $(UTILS_SRC)/grabscreen.h +xscreensaver-getimage.o: $(UTILS_SRC)/resources.h +xscreensaver-getimage.o: $(UTILS_SRC)/utils.h +xscreensaver-getimage.o: $(UTILS_SRC)/version.h +xscreensaver-getimage.o: $(UTILS_SRC)/visual.h +xscreensaver-getimage.o: $(UTILS_SRC)/vroot.h +xscreensaver-getimage.o: $(UTILS_SRC)/xmu.h +xscreensaver-getimage.o: $(UTILS_SRC)/yarandom.h xspirograph.o: ../config.h xspirograph.o: $(srcdir)/fps.h xspirograph.o: $(srcdir)/recanim.h @@ -3295,12 +3439,14 @@ xspirograph.o: $(UTILS_SRC)/hsv.h xspirograph.o: $(UTILS_SRC)/resources.h xspirograph.o: $(UTILS_SRC)/usleep.h xspirograph.o: $(UTILS_SRC)/visual.h +xspirograph.o: $(UTILS_SRC)/xft.h xspirograph.o: $(UTILS_SRC)/yarandom.h xsublim.o: ../config.h xsublim.o: $(UTILS_SRC)/font-retry.h xsublim.o: $(UTILS_SRC)/resources.h xsublim.o: $(UTILS_SRC)/usleep.h xsublim.o: $(UTILS_SRC)/vroot.h +xsublim.o: $(UTILS_SRC)/xft.h xsublim.o: $(UTILS_SRC)/yarandom.h zoom.o: ../config.h zoom.o: $(srcdir)/fps.h @@ -3314,5 +3460,6 @@ zoom.o: $(UTILS_SRC)/hsv.h zoom.o: $(UTILS_SRC)/resources.h zoom.o: $(UTILS_SRC)/usleep.h zoom.o: $(UTILS_SRC)/visual.h +zoom.o: $(UTILS_SRC)/xft.h zoom.o: $(UTILS_SRC)/yarandom.h diff --git a/hacks/README b/hacks/README index 34e687e..ffb2d17 100644 --- a/hacks/README +++ b/hacks/README @@ -4,3 +4,6 @@ the xscreensaver program (in the ../driver/ directory) but some of them use the utility functions found in the ../utils/ directory. If you have compilation problems, check the parameters in ../config.h. + +Writing a screen saver? Make sure you have read ../README.hacking. + diff --git a/hacks/abstractile.man b/hacks/abstractile.man index d043ce7..bbb096c 100644 --- a/hacks/abstractile.man +++ b/hacks/abstractile.man @@ -1,6 +1,6 @@ .TH XScreenSaver 1 "27-Apr-97" "X Version 11" .SH NAME -abstractile - draw abstract mosaic patterns of interlocking tiles +abstractile \- draw abstract mosaic patterns of interlocking tiles .SH SYNOPSIS .B abstractile [\-sleep \fIseconds\fP] [\-speed \fIint\fP] [\-tile \fItile_mode\fP] diff --git a/hacks/analogtv-cli.c b/hacks/analogtv-cli.c index aeec901..2c4a880 100644 --- a/hacks/analogtv-cli.c +++ b/hacks/analogtv-cli.c @@ -1,4 +1,4 @@ -/* xanalogtv-cli, Copyright (c) 2018-2019 Jamie Zawinski +/* xanalogtv-cli, Copyright (c) 2018-2020 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 @@ -36,6 +36,7 @@ #include #include +#include "screenhackI.h" #include "resources.h" #include "visual.h" #include "yarandom.h" @@ -54,13 +55,9 @@ const char *progclass; int mono_p = 0; static Bool verbose_p = 0; -#define RANDSIGN() ((random() & 1) ? 1 : -1) - -enum { - N_CHANNELS=12, - MAX_MULTICHAN=2, - MAX_STATIONS=11 -}; +#define MAX_MULTICHAN 2 +static int N_CHANNELS=12; +static int MAX_STATIONS=6; typedef struct chansetting_s { analogtv_reception recs[MAX_MULTICHAN]; @@ -78,12 +75,12 @@ struct state { analogtv_font ugly_font; int n_stations; - analogtv_input *stations[MAX_STATIONS]; + analogtv_input **stations; Bool image_loading_p; XImage *logo, *logo_mask; int curinputi; - chansetting chansettings[N_CHANNELS]; + chansetting *chansettings; chansetting *cs; }; @@ -120,6 +117,9 @@ XCreateGC(Display *dpy, Drawable d, unsigned long mask, XGCValues *gcv) return 0; } +int screen_number (Screen *screen) { return 0; } + + XImage * XCreateImage (Display *dpy, Visual *v, unsigned int depth, int format, int offset, char *data, @@ -319,13 +319,15 @@ get_boolean_resource (Display *dpy, char *name, char *class) abort(); } +static int darkp = 0; double get_float_resource (Display *dpy, char *name, char *class) { - if (!strcmp(name, "TVTint")) return 5; - if (!strcmp(name, "TVColor")) return 70; - if (!strcmp(name, "TVBrightness")) return -15; - if (!strcmp(name, "TVContrast")) return 150; + if (!strcmp(name, "TVTint")) return 5; /* default 5 */ + if (!strcmp(name, "TVColor")) return 70; /* default 70 */ + if (!strcmp(name, "TVBrightness")) + return (darkp ? -15 : 2); /* default 2 */ + if (!strcmp(name, "TVContrast")) return 150; /* default 150 */ abort(); } @@ -535,7 +537,7 @@ delete_tmp_files(void) for (i = 0; i <= st->frames_written; i++) { sprintf (outfile, st->framefile_fmt, i); - if (verbose_p > 1) + if (verbose_p > 2) fprintf (stderr, "%s: rm %s\n", progname, outfile); unlink (outfile); } @@ -551,6 +553,25 @@ analogtv_signal (int sig) } +static char * +quote (const char *s) +{ + char *s2, *o; + if (!s) return 0; + + s2 = malloc (strlen(s) * 2 + 2); + o = s2; + while (*s) + { + if (*s == '"' || *s == '\\') + *o++ = '\\'; + *o++ = *s++; + } + *o = 0; + return s2; +} + + static void analogtv_write_mp4 (struct state *st, const char *outfile, const char *audiofile, @@ -558,33 +579,37 @@ analogtv_write_mp4 (struct state *st, const char *outfile, { char cmd[1024]; struct stat ss; + char *qout = quote (outfile); + char *qaudio = quote (audiofile); sprintf (cmd, "ffmpeg" " -hide_banner" - " -v 16" - " -framerate 30" /* rate of input: must be before -i */ - " -i '%s'" - " -r 30", /* rate of output: must be after -i */ + " -loglevel error" + " -framerate 30" /* rate of input: must be before -i */ + " -thread_queue_size 4096" + " -i \"%s\"" + " -r 30", /* rate of output: must be after -i */ st->framefile_fmt); if (audiofile) sprintf (cmd + strlen(cmd), - " -i '%s'" + " -i \"%s\"" " -map 0:v:0" " -map 1:a:0" " -acodec aac" + " -b:a 96k" /* Truncate or pad audio to length of video */ " -filter_complex '[1:0] apad' -shortest", - audiofile); + qaudio); sprintf (cmd + strlen(cmd), " -c:v libx264" " -profile:v high" - " -crf 24" /* 18 is very high; 24 is good enough */ " -pix_fmt yuv420p" + " -preset veryfast" + " -crf 24" /* 18 is very high; 24 is good enough */ " '%s'" - " &-"*/, - outfile); + " 1) fprintf (stderr, "%s: exec: %s\n", progname, cmd); @@ -631,36 +656,51 @@ flip_ximage (XImage *ximage) static void -analogtv_convert (const char *infile, const char *outfile, +analogtv_convert (const char **infiles, const char *outfile, const char *audiofile, const char *logofile, int duration, Bool powerp) { + unsigned long start_time = time((time_t *)0); struct state *st = &global_state; - XImage *ximage = file_to_ximage (0, 0, infile); Display *dpy = 0; Window window = 0; - int i; + int i, n; unsigned long curticks = 0; time_t lastlog = time((time_t *)0); - int frames_left; + int frames_left = 0; int channel_changes = 0; int fps = 30; + XImage **ximages; + int singlep; + int *stats; + + stats = (int *) calloc(N_CHANNELS, sizeof(*stats)); + ximages = calloc (MAX_STATIONS, sizeof(*ximages)); + i = 0; + while (infiles[i]) + { + ximages[i] = file_to_ximage (0, 0, infiles[i]); + if (verbose_p > 1) + fprintf (stderr, "%s: loaded %s %dx%d\n", + progname, infiles[i], ximages[i]->width, ximages[i]->height); + flip_ximage (ximages[i]); + i++; + } - if (verbose_p) - fprintf (stderr, "%s: loaded %s %dx%d\n", - progname, infile, ximage->width, ximage->height); + singlep = !infiles[1]; - flip_ximage (ximage); + if (singlep) powerp = 0; /* #### These don't work together but should */ memset (st, 0, sizeof(*st)); st->dpy = dpy; st->window = window; - st->output_frame = XCreateImage (dpy, 0, ximage->depth, ximage->format, 0, + st->output_frame = XCreateImage (dpy, 0, ximages[0]->depth, + ximages[0]->format, 0, NULL, - ximage->width & ~1, /* can't be odd */ - ximage->height & ~1, - ximage->bitmap_pad, 0); + ximages[0]->width & ~1, /* can't be odd */ + ximages[0]->height & ~1, + ximages[0]->bitmap_pad, 0); st->output_frame->data = (char *) calloc (st->output_frame->height, st->output_frame->bytes_per_line); @@ -759,6 +799,8 @@ analogtv_convert (const char *infile, const char *outfile, st->tv=analogtv_allocate(dpy, window); + st->stations = (analogtv_input **) + calloc (MAX_STATIONS, sizeof(*st->stations)); while (st->n_stations < MAX_STATIONS) { analogtv_input *input=analogtv_input_allocate(); st->stations[st->n_stations++]=input; @@ -774,16 +816,17 @@ analogtv_convert (const char *infile, const char *outfile, if (1) { st->tv->color_control += frand(0.3) * RANDSIGN(); } - if (random()%4==0) { - st->tv->brightness_control += frand(0.15); - } - if (random()%4==0) { - st->tv->contrast_control += frand(0.2) * RANDSIGN(); + if (darkp) { + if (random()%4==0) { + st->tv->brightness_control += frand(0.15); + } + if (random()%4==0) { + st->tv->contrast_control += frand(0.2) * RANDSIGN(); + } } + st->chansettings = calloc (N_CHANNELS, sizeof (*st->chansettings)); for (i=0; ichansettings[i], 0, sizeof(chansetting)); - st->chansettings[i].noise_level = 0.06; { int last_station=42; @@ -820,13 +863,15 @@ analogtv_convert (const char *infile, const char *outfile, st->curinputi=0; st->cs = &st->chansettings[st->curinputi]; - /* First channel (initial unadulterated image) stays for this long */ - frames_left = fps * (2 + frand(1.5)); + if (singlep) + /* First channel (initial unadulterated image) stays for this long */ + frames_left = fps * (2 + frand(1.5)); st->tv->powerup=0.0; /* load_station_images() */ + n = 0; for (i = 0; i < MAX_STATIONS; i++) { analogtv_input *input = st->stations[i]; @@ -834,6 +879,13 @@ analogtv_convert (const char *infile, const char *outfile, station 1 is colorbars. */ input->updater = update_smpte_colorbars; } else { + XImage *ximage = ximages[n++]; + if (!ximage) { + n = 0; + ximage = ximages[n++]; + } + + { int w = ximage->width * 0.815; /* underscan */ int h = ximage->height * 0.970; int x = (ximage->width - w) / 2; @@ -841,6 +893,7 @@ analogtv_convert (const char *infile, const char *outfile, analogtv_input *input = st->stations[i]; analogtv_setup_sync(input, 1, (random()%20)==0); analogtv_load_ximage (st->tv, input, ximage, 0, x, y, w, h); + } } } @@ -857,32 +910,57 @@ analogtv_convert (const char *infile, const char *outfile, channel_changes++; - if (channel_changes == 1) { - /* Second channel has short duration */ + if (singlep && channel_changes == 1) { + /* Second channel has short duration, 0.25 to 0.75 sec. */ frames_left = fps * (0.25 + frand(0.5)); + } else if (singlep) { + /* 0.5 - 2.0 sec (was 0.5 - 3.0 sec) */ + frames_left = fps * (0.5 + frand(1.5)); } else { - frames_left = fps * (0.5 + frand(2.5)); + /* 1 - 7 sec */ + frames_left = fps * (1 + frand(6)); } - if (channel_changes == 2) { + if (singlep && channel_changes == 2) { /* Always use the unadulterated image for the third channel: So the effect is, plain, brief blip, plain, then random. */ st->curinputi = 0; - } else if (st->curinputi != 0 && !(random() % 3)) { - /* Use the unadulterated image 1/3 of the time */ + frames_left += fps * (0.1 + frand(0.5)); + + } else if (singlep && st->curinputi != 0 && ((random() % 100) < 75)) { + /* Use the unadulterated image 75% of the time (was 33%) */ st->curinputi = 0; } else { /* Otherwise random */ st->curinputi = 1 + (random() % (N_CHANNELS - 1)); } + stats[st->curinputi]++; st->cs = &st->chansettings[st->curinputi]; /* Set channel change noise flag */ st->tv->channel_change_cycles=200000; - if (verbose_p) + if (verbose_p > 1) fprintf (stderr, "%s: %.1f: channel %d\n", progname, curticks/1000.0, st->curinputi); + + /* Turn the knobs every now and then */ + if (! (random() % 5)) { + if (random()%4==0) { + st->tv->tint_control += pow(frand(2.0)-1.0, 7) * 180.0 * RANDSIGN(); + } + if (1) { + st->tv->color_control += frand(0.3) * RANDSIGN(); + } + if (darkp) { + if (random()%4==0) { + st->tv->brightness_control += frand(0.15); + } + if (random()%4==0) { + st->tv->contrast_control += frand(0.2) * RANDSIGN(); + } + } + } } for (i=0; itv->powerup=(powerp ? curtime : 9999); - if (st->curinputi == 0) { - XPutImage (dpy, 0, 0, ximage, 0, 0, 0, 0, - ximage->width, ximage->height); + if (st->curinputi == 0 && singlep) { + XPutImage (dpy, 0, 0, ximages[0], 0, 0, 0, 0, + ximages[0]->width, ximages[0]->height); } else { for (i=0; ics->recs[i]; @@ -923,14 +1001,41 @@ analogtv_convert (const char *infile, const char *outfile, if (verbose_p) { unsigned long now = time((time_t *)0); - if (now > lastlog + 5) { - fprintf (stderr, "%s: %2d%%...\n", progname, - (int) (curtime * 100 / duration)); + if (now > (verbose_p == 1 ? lastlog : lastlog + 10)) { + unsigned long elapsed = now - start_time; + double ratio = curtime / (double) duration; + int remaining = (ratio ? (elapsed / ratio) - elapsed : 0); + int pct = 100 * ratio; + int cols = 47; + char dots[80]; + int ii; + for (ii = 0; ii < cols * ratio; ii++) + dots[ii] = '.'; + dots[ii] = 0; + fprintf (stderr, "%s%s: %s %2d%%, %d:%02d:%02d ETA%s", + (verbose_p == 1 ? "\r" : ""), + progname, + dots, pct, + (remaining/60/60), + (remaining/60)%60, + remaining%60, + (verbose_p == 1 ? "" : "\n")); lastlog = now; } } } + if (verbose_p == 1) fprintf(stderr, "\n"); + + if (verbose_p > 1) { + if (channel_changes == 0) channel_changes++; + fprintf(stderr, "%s: channels shown: %d\n", progname, channel_changes); + for (i = 0; i < N_CHANNELS; i++) + fprintf(stderr, "%s: %2d: %3d%%\n", progname, + i+1, stats[i] * 100 / channel_changes); + } + + free (stats); analogtv_write_mp4 (st, outfile, audiofile, st->frames_written); } @@ -940,7 +1045,7 @@ usage(const char *err) { if (err) fprintf (stderr, "%s: %s unknown\n", progname, err); fprintf (stderr, "usage: %s [--verbose] [--duration secs]" - " [--audio mp3-file] [--no-powerup] infile.png outfile.mp4\n", + " [--audio mp3-file] [--no-powerup] infile.png ... outfile.mp4\n", progname); exit (1); } @@ -949,17 +1054,20 @@ int main (int argc, char **argv) { int i; - const char *infile = 0; + const char *infiles[1000]; const char *outfile = 0; int duration = 30; Bool powerp = False; char *audio = 0; char *logo = 0; + int nfiles = 0; char *s = strrchr (argv[0], '/'); progname = s ? s+1 : argv[0]; progclass = progname; + memset (infiles, 0, sizeof(infiles)); + for (i = 1; i < argc; i++) { if (argv[i][0] == '-' && argv[i][1] == '-') @@ -990,18 +1098,29 @@ main (int argc, char **argv) powerp = False; else if (argv[i][0] == '-') usage(argv[i]); - else if (!infile) - infile = argv[i]; - else if (!outfile) - outfile = argv[i]; + else if (nfiles >= countof(infiles)-1) + usage("too many files"); else - usage(argv[i]); + infiles[nfiles++] = argv[i]; } - if (!infile) usage("input file"); - if (!outfile) usage("output file"); + + if (nfiles < 2) + usage(""); + + outfile = infiles[nfiles-1]; + infiles[--nfiles] = 0; + + /* stations should be a multiple of files, but >= 6. + channels should be double that. */ + MAX_STATIONS = 0; + while (MAX_STATIONS < 6) + MAX_STATIONS += nfiles; + N_CHANNELS = MAX_STATIONS * 2; + + darkp = (nfiles == 1); # undef ya_rand_init ya_rand_init (0); - analogtv_convert (infile, outfile, audio, logo, duration, powerp); + analogtv_convert (infiles, outfile, audio, logo, duration, powerp); exit (0); } diff --git a/hacks/analogtv.c b/hacks/analogtv.c index 8ef3c7d..ca87a12 100644 --- a/hacks/analogtv.c +++ b/hacks/analogtv.c @@ -85,6 +85,7 @@ #include "yarandom.h" #include "grabscreen.h" #include "visual.h" +#include "xft.h" #include "font-retry.h" #include "ximage-loader.h" @@ -647,11 +648,6 @@ analogtv_set_demod(analogtv *it) cmap_again: if (it->use_cmap && !it->n_colors) { - if (it->n_colors) { - XFreeColors(it->dpy, it->colormap, it->colors, it->n_colors, 0L); - it->n_colors=0; - } - { int yli,qli,ili; for (yli=0; ylipuheight * (double)it->useheight/(double)ANALOGTV_VISLINES); /* calculate tint once per frame */ - it->tint_i = -cos((103 + it->tint_control)*3.1415926/180); - it->tint_q = sin((103 + it->tint_control)*3.1415926/180); + /* Christopher Mosher argues that this should use 33 degress instead of + 103 degrees, and then TVTint should default to 0 in analogtv.h and + all relevant XML files. But that makes all the colors go really green + and saturated, so apparently that's not right. -- jwz, Nov 2020. + */ + it->tint_i = -cos((103 + it->tint_control)*M_PI/180); + it->tint_q = sin((103 + it->tint_control)*M_PI/180); for (lineno=ANALOGTV_TOP; linenochar_w, f->char_h, 1); + text_pm=XCreatePixmap(dpy, window, 256*f->char_w, f->char_h, xgwa.depth); memset(&gcv, 0, sizeof(gcv)); gcv.foreground=1; gcv.background=0; - gcv.font=font->fid; - gc=XCreateGC(dpy, text_pm, GCFont|GCBackground|GCForeground, &gcv); + gc=XCreateGC(dpy, text_pm, GCBackground|GCForeground, &gcv); # ifdef HAVE_JWXYZ - jwxyz_XSetAntiAliasing (dpy, gc, False); + jwxyz_XSetAntiAliasing (dpy, gc, False); # endif XSetForeground(dpy, gc, 0); XFillRectangle(dpy, text_pm, gc, 0, 0, 256*f->char_w, f->char_h); - XSetForeground(dpy, gc, 1); + + xftdraw = XftDrawCreate (dpy, text_pm, xgwa.visual, xgwa.colormap); + xft_fg.pixel = ~0L; + xft_fg.color.red = xft_fg.color.green = xft_fg.color.blue = ~0L; + for (i=0; i<256; i++) { char c=i; int x=f->char_w*i+1; int y=f->char_h*8/10; - XDrawString(dpy, text_pm, gc, x, y, &c, 1); + XftDrawStringUtf8 (xftdraw, &xft_fg, font, x, y, (FcChar8 *) &c, 1); } - f->text_im = XGetImage(dpy, text_pm, 0, 0, 256*f->char_w, f->char_h, - 1, XYPixmap); + xim = XGetImage(dpy, text_pm, 0, 0, 256*f->char_w, f->char_h, + xgwa.depth, ZPixmap); + f->text_im = XCreateImage(dpy, xgwa.visual, 1, XYPixmap, 0, 0, + 256*f->char_w, f->char_h, 8, 0); + f->text_im->data = (char *)calloc(f->text_im->height, + f->text_im->bytes_per_line); + for (y = 0; y < xim->height; y++) + for (x = 0; x < xim->width; x++) + XPutPixel (f->text_im, x, y, XGetPixel (xim, x, y) ? 1 : 0); + + XDestroyImage (xim); + xim = 0; + # if 0 XWriteBitmapFile(dpy, "/tmp/tvfont.xbm", text_pm, 256*f->char_w, f->char_h, -1, -1); # endif XFreeGC(dpy, gc); XFreePixmap(dpy, text_pm); + XftDrawDestroy (xftdraw); + } else { f->text_im = XCreateImage(dpy, xgwa.visual, 1, XYPixmap, 0, 0, 256*f->char_w, f->char_h, 8, 0); @@ -2343,7 +2365,7 @@ analogtv_lcp_to_ntsc(double luma, double chroma, double phase, int ntsc[4]) int i; for (i=0; i<4; i++) { double w=90.0*i + phase; - double val=luma + chroma * (cos(3.1415926/180.0*w)); + double val=luma + chroma * (cos(M_PI/180.0*w)); if (val<0.0) val=0.0; if (val>127.0) val=127.0; ntsc[i]=(int)val; diff --git a/hacks/analogtv.h b/hacks/analogtv.h index 4b11b58..474a7f8 100644 --- a/hacks/analogtv.h +++ b/hacks/analogtv.h @@ -15,7 +15,7 @@ #include "thread_util.h" #include "xshm.h" -#if defined(USE_IPHONE) || defined(HAVE_ANDROID) +#if defined(HAVE_IPHONE) || defined(HAVE_ANDROID) # define HAVE_MOBILE #endif diff --git a/hacks/anemone.man b/hacks/anemone.man index 463a999..8c5464e 100644 --- a/hacks/anemone.man +++ b/hacks/anemone.man @@ -1,6 +1,6 @@ .TH XScreenSaver 1 "" "X Version 11" .SH NAME -anemone - wiggling tentacles. +anemone \- wiggling tentacles. .SH SYNOPSIS .B anemone [\-display \fIhost:display.screen\fP] diff --git a/hacks/anemotaxis.man b/hacks/anemotaxis.man index cf5c1ea..7da9566 100644 --- a/hacks/anemotaxis.man +++ b/hacks/anemotaxis.man @@ -1,6 +1,6 @@ .TH XScreenSaver 1 "" "X Version 11" .SH NAME -anemotaxis - directional search on a plane. +anemotaxis \- directional search on a plane. .SH SYNOPSIS .B anemotaxis [\-display \fIhost:display.screen\fP] diff --git a/hacks/ant.man b/hacks/ant.man index fb71d57..aa006b6 100644 --- a/hacks/ant.man +++ b/hacks/ant.man @@ -1,6 +1,6 @@ .TH XScreenSaver 1 "" "X Version 11" .SH NAME -ant - cellular automaton. +ant \- cellular automaton. .SH SYNOPSIS .B ant [\-display \fIhost:display.screen\fP] diff --git a/hacks/apollonian.c b/hacks/apollonian.c index 4b28ac3..782b41c 100644 --- a/hacks/apollonian.c +++ b/hacks/apollonian.c @@ -46,9 +46,6 @@ static const char sccsid[] = "@(#)apollonian.c 5.02 2001/07/01 xlockmore"; * sum(a^2,b^2,c^2,d^2) >= 2*max(a,b,c,d)^2 * * - * Todo: - * Add a small font - * * Revision History: * 25-Jun-2001: Converted from C and Postscript code by David Bagley * Original code by Allan R. Wilks . @@ -70,7 +67,7 @@ static const char sccsid[] = "@(#)apollonian.c 5.02 2001/07/01 xlockmore"; "*count: 64 \n" \ "*cycles: 20 \n" \ "*ncolors: 64 \n" \ - "*font: fixed" "\n" \ + "*font: sans-serif bold 10\n" \ "*fpsTop: true \n" \ "*fpsSolid: true \n" \ "*ignoreRotation: True" \ @@ -112,10 +109,6 @@ static OptionStruct desc[] = ENTRYPOINT ModeSpecOpt apollonian_opts = {sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc}; -#ifdef DOFONT -extern XFontStruct *getFont(Display * display); -#endif - #ifdef USE_MODULES ModStruct apollonian_description = {"apollonian", "init_apollonian", "draw_apollonian", (char *) NULL, @@ -294,19 +287,15 @@ typedef struct { int count; Bool label, altgeom; apollonian_quadruple *quad; -#ifdef DOFONT - XFontStruct *font; -#endif + XftFont *font; + XftColor xft_fg; + XftDraw *xftdraw; int time; int game; } apollonianstruct; static apollonianstruct *apollonians = (apollonianstruct *) NULL; -#define FONT_HEIGHT 19 -#define FONT_WIDTH 15 -#define FONT_LENGTH 20 -#define MAX_CHAR 10 #define K 2.15470053837925152902 /* 1+2/sqrt(3) */ #define MAXBEND 100 /* Do not want configurable by user since it will take too much time if increased. */ @@ -500,6 +489,20 @@ cquad(circle *c1, circle *c2, circle *c3, circle *c4) } } +static void +set_xft_color (ModeInfo *mi, XftColor *c, unsigned long pixel) +{ + XColor xc; + xc.pixel = pixel; + XQueryColor (MI_DISPLAY(mi), MI_COLORMAP(mi), &xc); + c->pixel = pixel; + c->color.red = xc.red; + c->color.green = xc.green; + c->color.blue = xc.blue; + c->color.alpha = 0xFFFF; +} + + static void p(ModeInfo *mi, circle c) { @@ -507,6 +510,7 @@ p(ModeInfo *mi, circle c) char string[15]; double g, e; int g_width; + unsigned long pix; #ifdef DEBUG (void) printf("c.e=%g c.s=%g c.h=%g c.x=%g c.y=%g\n", @@ -518,12 +522,12 @@ p(ModeInfo *mi, circle c) if (g < 0.0) g = -g; if (MI_NPIXELS(mi) <= 2) - XSetForeground(MI_DISPLAY(mi), MI_GC(mi), - MI_WHITE_PIXEL(mi)); + pix = MI_WHITE_PIXEL(mi); else - XSetForeground(MI_DISPLAY(mi), MI_GC(mi), - MI_PIXEL(mi, ((int) ((g + cp->color_offset) * - g)) % MI_NPIXELS(mi))); + pix = MI_PIXEL(mi, ((int) ((g + cp->color_offset) * g)) + % MI_NPIXELS(mi)); + XSetForeground(MI_DISPLAY(mi), MI_GC(mi), pix); + set_xft_color (mi, &cp->xft_fg, pix); XDrawArc(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi), ((int) (cp->size * (-cp->c1.e) * (c.x - 1.0) / (-2.0 * c.e) + cp->size / 2.0 + cp->offset.x)), @@ -537,22 +541,24 @@ p(ModeInfo *mi, circle c) #endif return; } - (void) sprintf(string, "%g", (g == 0.0) ? 0 : -g); - if (cp->size >= 10 * FONT_WIDTH) { - /* hard code these to corners */ - XDrawString(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi), - ((int) (cp->size * c.x / (2.0 * c.e))) + cp->offset.x, - ((int) (cp->size * c.y / (2.0 * c.e))) + FONT_HEIGHT, - string, (g == 0.0) ? 1 : ((g < 10.0) ? 2 : - ((g < 100.0) ? 3 : 4))); - } - if (cp->altgeom && MI_HEIGHT(mi) >= 30 * FONT_WIDTH) { - XDrawString(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi), - ((int) (cp->size * c.x / (2.0 * c.e) + cp->offset.x)), - ((int) (cp->size * c.y / (2.0 * c.e) + MI_HEIGHT(mi) - - FONT_HEIGHT / 2)), (char *) space_string[cp->geometry], - strlen(space_string[cp->geometry])); - } + + sprintf(string, "%g", (g == 0.0) ? 0 : -g); + XftDrawStringUtf8 (cp->xftdraw, &cp->xft_fg, cp->font, + ((int) (cp->size * c.x / (2.0 * c.e))) + + cp->offset.x + cp->font->ascent * 2, + ((int) (cp->size * c.y / (2.0 * c.e))) + + cp->font->ascent * 4, + (FcChar8 *) string, + (g == 0 ? 1 : + g < 10 ? 2 : + g < 100 ? 3 : 4)); + XftDrawStringUtf8 (cp->xftdraw, &cp->xft_fg, cp->font, + ((int) (cp->size * c.x / (2.0 * c.e) + + cp->offset.x)) + cp->font->ascent * 2, + ((int) (cp->size * c.y / (2.0 * c.e) + + MI_HEIGHT(mi) - cp->font->ascent * 4)), + (FcChar8 *) space_string[cp->geometry], + strlen(space_string[cp->geometry])); return; } if (MI_NPIXELS(mi) <= 2) @@ -590,22 +596,27 @@ p(ModeInfo *mi, circle c) return; } if (MI_NPIXELS(mi) <= 2) - XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_BLACK_PIXEL(mi)); + pix = MI_BLACK_PIXEL(mi); else - XSetForeground(MI_DISPLAY(mi), MI_GC(mi), - MI_PIXEL(mi, ((int) ((g + cp->color_offset) * g) + - MI_NPIXELS(mi) / 2) % MI_NPIXELS(mi))); + pix = MI_PIXEL(mi, ((int) ((g + cp->color_offset) * g) + + MI_NPIXELS(mi) / 2) % MI_NPIXELS(mi)); g_width = (g < 10.0) ? 1: ((g < 100.0) ? 2 : 3); - if (c.e < e * cp->size / (FONT_LENGTH + 5 * g_width) && g < 1000.0) { - (void) sprintf(string, "%g", g); - XDrawString(MI_DISPLAY(mi), MI_WINDOW(mi), MI_GC(mi), - ((int) (cp->size * e * c.x / (2.0 * c.e) + - cp->size / 2.0 + cp->offset.x)) - - g_width * FONT_WIDTH / 2, - ((int) (cp->size * e * c.y / (2.0 * c.e) + - cp->size / 2.0 + cp->offset.y)) + - FONT_HEIGHT / 2, - string, g_width); + if (c.e < e * cp->size / ((cp->font->ascent + cp->font->descent) * 2) && + g < 1000.0) { + XGlyphInfo overall; + XSetForeground(MI_DISPLAY(mi), MI_GC(mi), pix); + set_xft_color (mi, &cp->xft_fg, pix); + sprintf(string, "%g", g); + XftTextExtentsUtf8 (MI_DISPLAY(mi), cp->font, + (FcChar8 *) string, g_width, &overall); + XftDrawStringUtf8 (cp->xftdraw, &cp->xft_fg, cp->font, + ((int) (cp->size * e * c.x / (2.0 * c.e) + + cp->size / 2.0 + cp->offset.x)) - + overall.width / 2, + ((int) (cp->size * e * c.y / (2.0 * c.e) + + cp->size / 2.0 + cp->offset.y)) + + cp->font->ascent / 2, + (FcChar8 *) string, g_width); } } @@ -643,16 +654,9 @@ free_apollonian (ModeInfo * mi) (void) free((void *) cp->quad); cp->quad = (apollonian_quadruple *) NULL; } -#ifdef DOFONT - if (cp->gc != None) { - XFreeGC(display, cp->gc); - cp->gc = None; - } - if (cp->font != None) { - XFreeFont(display, cp->font); - cp->font = None; - } -#endif + + XftFontClose (MI_DISPLAY(mi), cp->font); + XftDrawDestroy (cp->xftdraw); } #ifndef DEBUG @@ -678,6 +682,7 @@ init_apollonian (ModeInfo * mi) { apollonianstruct *cp; int i; + char *s; MI_INIT (mi, apollonians); cp = &apollonians[MI_SCREEN(mi)]; @@ -687,12 +692,16 @@ init_apollonian (ModeInfo * mi) cp->offset.y = (MI_HEIGHT(mi) - cp->size) / 2; cp->color_offset = NRAND(MI_NPIXELS(mi)); -#ifdef DOFONT - if (cp->font == None) { - if ((cp->font = getFont(MI_DISPLAY(mi))) == None) - return False; - } -#endif + cp->font = load_xft_font_retry (MI_DISPLAY(mi), MI_SCREEN(mi), + get_string_resource (MI_DISPLAY(mi), + "font", "Font")); + cp->xftdraw = XftDrawCreate (MI_DISPLAY(mi), MI_WINDOW(mi), + MI_VISUAL(mi), MI_COLORMAP(mi)); + s = get_string_resource (MI_DISPLAY(mi), "foreground", "Foreground"); + XftColorAllocName (MI_DISPLAY(mi), MI_VISUAL(mi), MI_COLORMAP(mi), s, + &cp->xft_fg); + free(s); + cp->label = label; cp->altgeom = cp->label && altgeom; diff --git a/hacks/apollonian.man b/hacks/apollonian.man index 157d109..3dd3ad1 100644 --- a/hacks/apollonian.man +++ b/hacks/apollonian.man @@ -1,6 +1,6 @@ .TH XScreenSaver 1 "" "X Version 11" .SH NAME -apollonian - Descartes Circle Theorem. +apollonian \- Descartes Circle Theorem. .SH SYNOPSIS .B apollonian [\-display \fIhost:display.screen\fP] diff --git a/hacks/apple2-main.c b/hacks/apple2-main.c index c30be1f..a87ea1a 100644 --- a/hacks/apple2-main.c +++ b/hacks/apple2-main.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1998-2014 Jamie Zawinski +/* xscreensaver, Copyright (c) 1998-2021 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 @@ -13,9 +13,10 @@ * Pty and vt100 emulation by Fredrik Tolf */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif /* HAVE_CONFIG_H */ +#include "screenhack.h" +#include "apple2.h" +#include "textclient.h" +#include "utf8wc.h" #include #include @@ -24,14 +25,6 @@ # include #endif -#include "screenhack.h" -#include "apple2.h" -#include "textclient.h" -#include "utf8wc.h" - -#undef countof -#define countof(x) (sizeof((x))/sizeof((*x))) - #define SCREEN_COLS 40 #define SCREEN_ROWS 24 diff --git a/hacks/apple2.man b/hacks/apple2.man index b0d6d5c..ec0bcd3 100644 --- a/hacks/apple2.man +++ b/hacks/apple2.man @@ -1,19 +1,6 @@ -.de EX \"Begin example -.ne 5 -.if n .sp 1 -.if t .sp .5 -.nf -.in +.5i -.. -.de EE -.fi -.in -.5i -.if n .sp 1 -.if t .sp .5 -.. .TH XScreenSaver 1 "5-May-2004" "X Version 11" .SH NAME -apple2 - Apple ][ display emulator +apple2 \- Apple ][ display emulator .SH SYNOPSIS .B apple2 [\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] @@ -43,7 +30,7 @@ colors, you can only make out the general shape of the pictures. In text mode it displays the output of a command or the contents of a file or URL (via the default -.BR xscreensaver-text (1) +.BR xscreensaver\-text (MANSUFFIX) program, which can be overridden with \fI\-program\fP). In text mode, it is also a fully functional (if anachronistic) @@ -83,31 +70,35 @@ option may be any string acceptable to /bin/sh. The program will be run at the end of a pipe, and any characters that it prints to \fIstdout\fP will be printed on the Apple ][ display. If the program exits, it will be launched again after 3 seconds. Default: -.BR xscreensaver-text (1). +.BR xscreensaver\-text (MANSUFFIX). In text mode, \fIapple2\fP emulates a vt100 terminal running on a 40x24 uppercase-only screen. For example: -.EX -apple2 -text \\ - -program 'cat /usr/src/linux*/README | fold -sw40' -apple2 -text -program 'ping apple.com' -apple2 -text -program 'ps -e' -apple2 -text -program 'od -txCz -w7 /dev/urandom' -apple2 -text -program 'cat /dev/random' -apple2 -text -fast -program 'xemacs -nw -q -f life' -apple2 -text -fast \\ - -program 'xemacs -nw -q --eval "(hanoi 5)"' -.EE +.nf +.sp + apple2 -text \\ + -program 'cat /usr/src/linux*/README | fold -sw40' + apple2 -text -program 'ping apple.com' + apple2 -text -program 'ps -e' + apple2 -text -program 'od -txCz -w7 /dev/urandom' + apple2 -text -program 'cat /dev/random' + apple2 -text -fast -program 'xemacs -nw -q -f life' + apple2 -text -fast \\ + -program 'xemacs -nw -q --eval "(hanoi 5)"' +.sp +.fi You can also use \fIapple2\fP as an extremely lo-fi replacement for the .BR xterm (1) and .BR gnome-terminal (1) terminal emulators: -.EX -apple2 -text -fast -program tcsh -.EE +.nf +.sp + apple2 -text -fast -program tcsh +.sp +.fi .TP 8 .B \-pty In \fI\-text\fP mode, launch the sub-program under a pty so that it @@ -180,7 +171,7 @@ Apple ][ and Applesoft are trademarks of Apple Computer. .SH SEE ALSO .BR xscreensaver (1), .BR bsod (MANSUFFIX), -.BR xscreensaver-text (1), +.BR xscreensaver\-text (MANSUFFIX), .BR fortune (1), .BR phosphor (MANSUFFIX), .BR starwars (MANSUFFIX), diff --git a/hacks/asm6502.c b/hacks/asm6502.c index 27d2824..8876beb 100644 --- a/hacks/asm6502.c +++ b/hacks/asm6502.c @@ -20,6 +20,10 @@ I changed the structure of the assembler in this version. */ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + #include #include /*#include */ @@ -29,9 +33,7 @@ #include #include #include -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif + #if defined(HAVE_STDINT_H) # include #elif defined(HAVE_INTTYPES_H) @@ -119,9 +121,8 @@ static void *ecalloc(uint32_t nelm, size_t nsize){ /* estrdup() - Allocates memory for a new string a returns a copy of the source sting in it. */ static char *estrdup(const char *source){ - int ln = strlen(source) + 1; - char *s = ecalloc(ln, sizeof(char)); - strncpy(s,source,ln); + char *s = strdup (source); + if (!s) abort(); return s; } @@ -1010,8 +1011,8 @@ static void jmpSTY(machine_6502 *machine, m6502_AddrMode adm){ static void assignOpCodes(m6502_Opcodes *opcodes){ #define SETOP(num, _name, _Imm, _ZP, _ZPX, _ZPY, _ABS, _ABSX, _ABSY, _INDX, _INDY, _SNGL, _BRA, _func) \ -{opcodes[num].name[3] = '\0'; \ - strncpy(opcodes[num].name, _name, 3); opcodes[num].Imm = _Imm; opcodes[num].ZP = _ZP; \ +{sprintf(opcodes[num].name, "%.*s", MAX_LABEL_LEN-1, _name); \ + opcodes[num].Imm = _Imm; opcodes[num].ZP = _ZP; \ opcodes[num].ZPX = _ZPX; opcodes[num].ZPY = _ZPY; opcodes[num].ABS = _ABS; \ opcodes[num].ABSX = _ABSX; opcodes[num].ABSY = _ABSY; opcodes[num].INDX = _INDX; \ opcodes[num].INDY = _INDY; opcodes[num].SNGL = _SNGL; opcodes[num].BRA = _BRA; \ @@ -1179,7 +1180,7 @@ static AsmLine *newAsmLine(char *cmd, char *label, BOOL decl, Param *param, int newp = (AsmLine *) ecalloc(1, sizeof(AsmLine)); newp->labelDecl = decl; newp->label = newLabel(); - strncpy(newp->label->label,label,MAX_LABEL_LEN); + sprintf(newp->label->label, "%.*s", MAX_LABEL_LEN - 1, label); newp->command = estrdup(cmd); newp->param = newParam(); copyParam(newp->param, param); @@ -1413,8 +1414,7 @@ static BOOL immediate(char **s, Param *param){ param->type = (**s == '<') ? IMMEDIATE_LESS : IMMEDIATE_GREAT; (*s)++; /* move past < or > */ if (paramLabel(s, &label)){ - int ln = strlen(label) + 1; - strncpy(param->label, label, ln); + sprintf(param->label, "%.*s", MAX_LABEL_LEN-1, label); free(label); return TRUE; } @@ -2069,7 +2069,7 @@ static BOOL compileCode(machine_6502 *machine, const char *code){ } } else{ - fprintf(stderr,"An error occured while parsing the file.\n"); + fprintf(stderr,"An error occurred while parsing the file.\n"); codeOk = FALSE; } freeallAsmLine(asmlist); @@ -2117,7 +2117,6 @@ machine_6502 *m6502_build(void){ void m6502_destroy6502(machine_6502 *machine){ free(machine); - machine = NULL; } void m6502_trace(machine_6502 *machine, FILE *output){ diff --git a/hacks/attraction.man b/hacks/attraction.man index 6630355..1238f92 100644 --- a/hacks/attraction.man +++ b/hacks/attraction.man @@ -1,19 +1,6 @@ -.de EX \"Begin example -.ne 5 -.if n .sp 1 -.if t .sp .5 -.nf -.in +.5i -.. -.de EE -.fi -.in -.5i -.if n .sp 1 -.if t .sp .5 -.. .TH XScreenSaver 1 "14-Jun-97" "X Version 11" .SH NAME -attraction - interactions of opposing forces +attraction \- interactions of opposing forces .SH SYNOPSIS .B attraction [\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] @@ -144,9 +131,12 @@ points move; the default is 1, meaning no resistance. Values higher than 1 aren't interesting; lower values cause less motion. One interesting thing to try is -.EX -attraction -viscosity 0.8 -points 300 -size 10 -geometry =500x500 -.EE +.nf +.sp + attraction -viscosity 0.8 -points 300 \\ + -size 10 -geometry =500x500 +.sp +.fi Give it a few seconds to settle down into a stable clump, and then move the drag the mouse through it to make "waves". .TP 8 diff --git a/hacks/barcode.c b/hacks/barcode.c index 1f56013..75a2258 100644 --- a/hacks/barcode.c +++ b/hacks/barcode.c @@ -119,6 +119,7 @@ static const char *words[] = "bellicosity", "bells", "belly", + "bird flu", "bliss", "bogosity", "boobies", @@ -129,6 +130,7 @@ static const char *words[] = "bubba", "burrito", "California", + "cancer", "capybara", "cardinality", "caribou", @@ -143,6 +145,8 @@ static const char *words[] = "contrition", "cop", "corpse", + "coronavirus", + "covid-19", "cowboy", "crabapple", "craziness", @@ -297,6 +301,8 @@ static const char *words[] = "roadrunner", "rootkit", "rule", + "SARS", + "SARS-CoV-2", "savor", "scab", "scalar", diff --git a/hacks/barcode.man b/hacks/barcode.man index 9074e16..b21fb8f 100644 --- a/hacks/barcode.man +++ b/hacks/barcode.man @@ -1,6 +1,6 @@ .TH XScreenSaver 1 "" "X Version 11" .SH NAME -barcode - draws a random sequence of barcodes for the products you enjoy +barcode \- draws a random sequence of barcodes for the products you enjoy .SH SYNOPSIS .B barcode [\-display \fIhost:display.screen\fP] diff --git a/hacks/binaryring.man b/hacks/binaryring.man index 2d44496..9dce286 100644 --- a/hacks/binaryring.man +++ b/hacks/binaryring.man @@ -1,6 +1,6 @@ .TH "Binary Ring" 1 "02-Sep-14" "X Version 11" .SH NAME -binaryring - A system of path tracing particles evolves continuously from an initial creation. +binaryring \- A system of path tracing particles evolves continuously from an initial creation. .SH SYNOPSIS .B binaryring [\-fps] diff --git a/hacks/blaster.man b/hacks/blaster.man index 6ac369f..92f26fd 100644 --- a/hacks/blaster.man +++ b/hacks/blaster.man @@ -1,6 +1,6 @@ .TH XScreenSaver 1 "" "X Version 11" .SH NAME -blaster - simulation of space combat +blaster \- simulation of space combat .SH SYNOPSIS .B blaster [\-display \fIhost:display.screen\fP] diff --git a/hacks/blitspin.man b/hacks/blitspin.man index 4a221da..1b70c7b 100644 --- a/hacks/blitspin.man +++ b/hacks/blitspin.man @@ -1,6 +1,6 @@ .TH XScreenSaver 1 "24-Nov-97" "X Version 11" .SH NAME -blitspin - rotate a bitmap in an interesting way +blitspin \- rotate a bitmap in an interesting way .SH SYNOPSIS .B blitspin [\-display \fIhost:display.screen\fP] @@ -54,7 +54,7 @@ the system's video input, or from a random file on disk, as indicated by the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP file; see -.BR xscreensaver-demo (1) +.BR xscreensaver\-settings (1) for more details. .TP 8 .B \-delay \fImicroseconds\fP @@ -79,8 +79,8 @@ stored in the RESOURCE_MANAGER property. .SH SEE ALSO .BR X (1), .BR xscreensaver (1), -.BR xscreensaver-demo (1), -.BR xscreensaver-getimage (1) +.BR xscreensaver\-settings (1), +.BR xscreensaver\-getimage (MANSUFFIX) .SH COPYRIGHT Copyright \(co 1992, 1993, 1997, 2001 by Jamie Zawinski. Permission to use, copy, modify, distribute, and sell this software and its diff --git a/hacks/bouboule.man b/hacks/bouboule.man index 259490f..cc50c28 100644 --- a/hacks/bouboule.man +++ b/hacks/bouboule.man @@ -1,6 +1,6 @@ .TH XScreenSaver 1 "15-May-97" "X Version 11" .SH NAME -bouboule - draws spinning 3D blobs +bouboule \- draws spinning 3D blobs .SH SYNOPSIS .B bouboule [\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-3d] diff --git a/hacks/boxfit.man b/hacks/boxfit.man index ec157e3..8e14dba 100644 --- a/hacks/boxfit.man +++ b/hacks/boxfit.man @@ -1,6 +1,6 @@ .TH XScreenSaver 1 "" "X Version 11" .SH NAME -boxfit - fills space with a gradient of growing boxes or circles. +boxfit \- fills space with a gradient of growing boxes or circles. .SH SYNOPSIS .B boxfit [\-display \fIhost:display.screen\fP] @@ -66,7 +66,7 @@ or from a random file on disk, as indicated by the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP file; see -.BR xscreensaver-demo (1) +.BR xscreensaver\-settings (1) for more details. .TP 8 .B \-peek @@ -88,8 +88,8 @@ stored in the RESOURCE_MANAGER property. .SH SEE ALSO .BR X (1), .BR xscreensaver (1) -.BR xscreensaver\-demo (1), -.BR xscreensaver\-getimage (1) +.BR xscreensaver\-settings (1), +.BR xscreensaver\-getimage (MANSUFFIX) .SH COPYRIGHT Copyright \(co 2005 by Jamie Zawinski. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is diff --git a/hacks/braid.man b/hacks/braid.man index 28f0c4d..19a3282 100644 --- a/hacks/braid.man +++ b/hacks/braid.man @@ -1,6 +1,6 @@ .TH XScreenSaver 1 "10-May-97" "X Version 11" .SH NAME -braid - draws random color-cycling braids around a circle +braid \- draws random color-cycling braids around a circle .SH SYNOPSIS .B braid [\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] diff --git a/hacks/bsod.c b/hacks/bsod.c index ffde1a6..06fcb91 100644 --- a/hacks/bsod.c +++ b/hacks/bsod.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1998-2019 Jamie Zawinski +/* xscreensaver, Copyright © 1998-2021 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 @@ -36,6 +36,7 @@ #include "screenhack.h" +#include "xft.h" #include "ximage-loader.h" #include "apple2.h" @@ -63,6 +64,8 @@ #include "images/gen/atm_png.h" #include "images/gen/sun_png.h" #include "images/gen/dvd_png.h" +#include "images/gen/gnome1_png.h" +#include "images/gen/gnome2_png.h" #undef countof #define countof(x) (sizeof((x))/sizeof((*x))) @@ -92,7 +95,9 @@ struct bsod_state { Display *dpy; Window window; XWindowAttributes xgwa; - XFontStruct *font, *fontA, *fontB, *fontC; + XftFont *font, *fontA, *fontB, *fontC; + XftDraw *xftdraw; + XftColor xft_fg, xft_bg; unsigned long fg, bg; GC gc; int left_margin, right_margin; /* for text wrapping */ @@ -375,16 +380,15 @@ position_for_text (struct bsod_state *bst, const char *line) bst->queue[bst->pos].type != LEFT_FULL) while (*start) { - int dir, ascent, descent; - XCharStruct ov; + XGlyphInfo ov; const char *end = start; while (*end && *end != '\r' && *end != '\n') end++; - XTextExtents (bst->font, start, end-start, - &dir, &ascent, &descent, &ov); - if (ov.width > max_width) - max_width = ov.width; + XftTextExtentsUtf8 (bst->dpy, bst->font, + (FcChar8 *) start, end-start, &ov); + if (ov.xOff > max_width) + max_width = ov.xOff; if (!*end) break; start = end+1; } @@ -440,6 +444,23 @@ bst_crlf (struct bsod_state *bst) } +/* This is slow, use it sparingly. */ +static void +set_xft_color (Display *dpy, Colormap cmap, XftColor *c, unsigned long pixel) +{ + XColor xc; + if (c->pixel == pixel && c->color.alpha) + return; /* Using alpha as "is initialized" */ + xc.pixel = pixel; + XQueryColor (dpy, cmap, &xc); + c->pixel = pixel; + c->color.red = xc.red; + c->color.green = xc.green; + c->color.blue = xc.blue; + c->color.alpha = 0xFFFF; +} + + static void draw_char (struct bsod_state *bst, char c) { @@ -461,47 +482,47 @@ draw_char (struct bsod_state *bst, char c) if (bst->macx_eol_kludge) { /* Special case for the weird way OSX crashes print newlines... */ - XDrawImageString (bst->dpy, bst->window, bst->gc, - bst->x, bst->y, " ", 1); - XDrawImageString (bst->dpy, bst->window, bst->gc, - bst->x, - bst->y + bst->font->ascent + bst->font->descent, - " ", 1); + XGlyphInfo ov; + XftTextExtentsUtf8 (bst->dpy, bst->font, (FcChar8 *) "n", 1, &ov); + XSetForeground (bst->dpy, bst->gc, bst->bg); + XFillRectangle (bst->dpy, bst->window, bst->gc, + bst->x, bst->y - bst->font->ascent, + ov.width, + (bst->font->ascent + bst->font->descent) * 2); + XSetForeground (bst->dpy, bst->gc, bst->fg); } bst_crlf (bst); } else if (c == '\b') /* backspace */ { - int cw = (bst->font->per_char - ? bst->font->per_char['n'-bst->font->min_char_or_byte2].width - : bst->font->min_bounds.width); - bst->x -= cw; + XGlyphInfo ov; + XftTextExtentsUtf8 (bst->dpy, bst->font, (FcChar8 *) "n", 1, &ov); + bst->x -= ov.xOff; if (bst->x < bst->left_margin + bst->xoff) bst->x = bst->left_margin + bst->xoff; } else { - int dir, ascent, descent; - XCharStruct ov; + XGlyphInfo ov; Bool cursorp = (c == '\033'); /* apparently \e is non-standard now! */ if (cursorp) c = ' '; - XTextExtents (bst->font, &c, 1, &dir, &ascent, &descent, &ov); + XftTextExtentsUtf8 (bst->dpy, bst->font, (FcChar8 *) &c, 1, &ov); if (bst->x < bst->left_margin) bst->x = bst->left_margin; if ((bst->wrap_p || bst->word_wrap_p) && - bst->x + ov.width > bst->xgwa.width - bst->right_margin - bst->xoff) + bst->x + ov.xOff > bst->xgwa.width - bst->right_margin - bst->xoff) { - XCharStruct ov2; + XGlyphInfo ov2; int L = 0; if (bst->word_wrap_p && *bst->word_buf) { L = strlen(bst->word_buf); - XTextExtents (bst->font, bst->word_buf, L, - &dir, &ascent, &descent, &ov2); + XftTextExtentsUtf8 (bst->dpy, bst->font, + (FcChar8 *) bst->word_buf, L, &ov2); } if (L) /* Erase the truncated wrapped word */ @@ -519,8 +540,17 @@ draw_char (struct bsod_state *bst, char c) if (L) /* Draw wrapped partial word on the next line, no delay */ { - XDrawImageString (bst->dpy, bst->window, bst->gc, - bst->x, bst->y, bst->word_buf, L); + XftTextExtentsUtf8 (bst->dpy, bst->font, + (FcChar8 *) bst->word_buf, L, &ov); + XSetForeground (bst->dpy, bst->gc, bst->bg); + XFillRectangle (bst->dpy, bst->window, bst->gc, + bst->x, + bst->y - bst->font->ascent, + ov.xOff, + bst->font->ascent + bst->font->descent); + XftDrawStringUtf8 (bst->xftdraw, &bst->xft_fg, bst->font, + bst->x, bst->y, + (FcChar8 *) bst->word_buf, L); bst->x += ov2.width; bst->last_nonwhite = bst->x; } @@ -530,27 +560,41 @@ draw_char (struct bsod_state *bst, char c) if (cursorp) { + XftColor cswap = bst->xft_fg; unsigned long swap = bst->fg; bst->fg = bst->bg; + bst->xft_fg = bst->xft_bg; bst->bg = swap; + bst->xft_bg = cswap; XSetForeground (bst->dpy, bst->gc, bst->fg); XSetBackground (bst->dpy, bst->gc, bst->bg); } - XDrawImageString (bst->dpy, bst->window, bst->gc, - bst->x, bst->y, &c, 1); + XftTextExtentsUtf8 (bst->dpy, bst->font, (FcChar8 *) &c, 1, &ov); + XSetForeground (bst->dpy, bst->gc, bst->bg); + XFillRectangle (bst->dpy, bst->window, bst->gc, + bst->x, + bst->y - bst->font->ascent, + ov.xOff, + bst->font->ascent + bst->font->descent); + XSetForeground (bst->dpy, bst->gc, bst->fg); + XftDrawStringUtf8 (bst->xftdraw, &bst->xft_fg, bst->font, + bst->x, bst->y, (FcChar8 *) &c, 1); if (cursorp) { + XftColor cswap = bst->xft_fg; unsigned long swap = bst->fg; bst->fg = bst->bg; + bst->xft_fg = bst->xft_bg; bst->bg = swap; + bst->xft_bg = cswap; XSetForeground (bst->dpy, bst->gc, bst->fg); XSetBackground (bst->dpy, bst->gc, bst->bg); c = ' '; } - bst->x += ov.width; + bst->x += ov.xOff; if (bst->word_wrap_p) { @@ -637,9 +681,12 @@ bsod_pop (struct bsod_state *bst) } case INVERT: { + XftColor cswap = bst->xft_fg; unsigned long swap = bst->fg; bst->fg = bst->bg; + bst->xft_fg = bst->xft_bg; bst->bg = swap; + bst->xft_bg = cswap; XSetForeground (bst->dpy, bst->gc, bst->fg); XSetBackground (bst->dpy, bst->gc, bst->bg); bst->pos++; @@ -651,6 +698,7 @@ bsod_pop (struct bsod_state *bst) bst->bg = (unsigned long) bst->queue[bst->pos].arg2; XSetForeground (bst->dpy, bst->gc, bst->fg); XSetBackground (bst->dpy, bst->gc, bst->bg); + set_xft_color (bst->dpy, bst->xgwa.colormap, &bst->xft_fg, bst->fg); bst->pos++; return 0; } @@ -736,7 +784,6 @@ bsod_pop (struct bsod_state *bst) case 2: bst->font = bst->fontC; break; default: abort(); break; } - XSetFont (bst->dpy, bst->gc, bst->font->fid); bst->pos++; return 0; } @@ -781,11 +828,20 @@ bsod_pop (struct bsod_state *bst) if (type == CURSOR_BLOCK) { + XGlyphInfo ov; + XftColor cswap = bst->xft_fg; unsigned long swap = bst->fg; bst->fg = bst->bg; + bst->xft_fg = bst->xft_bg; bst->bg = swap; + bst->xft_bg = cswap; XSetForeground (bst->dpy, bst->gc, bst->fg); XSetBackground (bst->dpy, bst->gc, bst->bg); + XftTextExtentsUtf8 (bst->dpy, bst->font, (FcChar8 *) "n", 1, &ov); + XFillRectangle (bst->dpy, bst->window, bst->gc, + bst->x, bst->y - bst->font->ascent, + ov.width, + bst->font->ascent + bst->font->descent); draw_char (bst, ' '); } else @@ -874,6 +930,7 @@ make_bsod_state (Display *dpy, Window window, char buf5[1024], buf6[1024]; char buf7[1024], buf8[1024]; char *font1, *font3, *font4; + int screen_no; bst = (struct bsod_state *) calloc (1, sizeof (*bst)); bst->queue_size = 10; @@ -882,6 +939,7 @@ make_bsod_state (Display *dpy, Window window, bst->dpy = dpy; bst->window = window; XGetWindowAttributes (dpy, window, &bst->xgwa); + screen_no = screen_number (bst->xgwa.screen); /* If the window is small, use ".font"; if big, ".bigFont". */ if ( @@ -925,43 +983,51 @@ make_bsod_state (Display *dpy, Window window, #undef RES2 if (font1 && *font1) - bst->font = load_font_retry (dpy, font1); + bst->font = load_xft_font_retry (dpy, screen_no, font1); if (! bst->font) abort(); if (font3 && *font3) - bst->fontB = load_font_retry (dpy, font3); + bst->fontB = load_xft_font_retry (dpy, screen_no, font3); if (font4 && *font4) - bst->fontC = load_font_retry (dpy, font4); + bst->fontC = load_xft_font_retry (dpy, screen_no, font4); if (! bst->fontB) bst->fontB = bst->font; if (! bst->fontC) bst->fontC = bst->font; bst->fontA = bst->font; - - gcv.font = bst->font->fid; + bst->xftdraw = XftDrawCreate (dpy, bst->window, bst->xgwa.visual, + bst->xgwa.colormap); sprintf (buf1, "%.100s.foreground", name); sprintf (buf2, "%.100s.Foreground", class); bst->fg = gcv.foreground = get_pixel_resource (dpy, bst->xgwa.colormap, buf1, buf2); + set_xft_color (bst->dpy, bst->xgwa.colormap, &bst->xft_fg, bst->fg); + sprintf (buf1, "%.100s.background", name); sprintf (buf2, "%.100s.Background", class); bst->bg = gcv.background = get_pixel_resource (dpy, bst->xgwa.colormap, buf1, buf2); - bst->gc = XCreateGC (dpy, window, GCFont|GCForeground|GCBackground, &gcv); + + set_xft_color (bst->dpy, bst->xgwa.colormap, &bst->xft_fg, bst->fg); + set_xft_color (bst->dpy, bst->xgwa.colormap, &bst->xft_bg, bst->bg); + + bst->gc = XCreateGC (dpy, window, GCForeground|GCBackground, &gcv); #ifdef HAVE_JWXYZ jwxyz_XSetAntiAliasing (dpy, bst->gc, True); #endif -# ifdef USE_IPHONE +# ifdef HAVE_IPHONE /* Stupid iPhone X bezel. - #### This is the worst of all possible ways to do this! + #### This is the worst of all possible ways to do this! But how else? + This magic number should catch iPhone X and larger, but unfortunately + also catches iPads which do not have the stupid bezel. */ - if (bst->xgwa.width == 2436 || bst->xgwa.height == 2436) { + if (bst->xgwa.width >= 1218 || bst->xgwa.height >= 1218) { if (bst->xgwa.width > bst->xgwa.height) bst->xoff = 96; else @@ -995,11 +1061,15 @@ free_bsod_state (struct bsod_state *bst) if (bst->mask) XFreePixmap(bst->dpy, bst->mask); - XFreeFont (bst->dpy, bst->font); - if (bst->fontB && bst->fontB != bst->font) XFreeFont (bst->dpy, bst->fontB); - if (bst->fontC && bst->fontC != bst->font) XFreeFont (bst->dpy, bst->fontC); + XftFontClose (bst->dpy, bst->font); + if (bst->fontB && bst->fontB != bst->font) + XftFontClose (bst->dpy, bst->fontB); + if (bst->fontC && bst->fontC != bst->font) + XftFontClose (bst->dpy, bst->fontC); XFreeGC (bst->dpy, bst->gc); + XftDrawDestroy (bst->xftdraw); + for (i = 0; i < bst->queue_size; i++) switch (bst->queue[i].type) { case LEFT: case LEFT_FULL: @@ -1057,25 +1127,105 @@ static struct bsod_state * windows_31 (Display *dpy, Window window) { struct bsod_state *bst = make_bsod_state (dpy, window, "windows", "Windows"); + int lines = 9; bst->xoff = bst->left_margin = bst->right_margin = 0; - BSOD_INVERT (bst); - BSOD_TEXT (bst, CENTER, "Windows\n"); - BSOD_INVERT (bst); - BSOD_TEXT (bst, CENTER, - "A fatal exception 0E has occured at F0AD:42494C4C\n" - "the current application will be terminated.\n" - "\n" - "* Press any key to terminate the current application.\n" - "* Press CTRL+ALT+DELETE again to restart your computer.\n" - " You will lose any unsaved information in all applications.\n" - "\n" - "\n"); - BSOD_TEXT (bst, CENTER, "Press any key to continue"); + switch (random() % 8) { + + case 0: /* Windows 3.1 */ + case 1: + case 2: + BSOD_INVERT (bst); + BSOD_TEXT (bst, CENTER, "Windows\n"); + BSOD_INVERT (bst); + BSOD_TEXT (bst, CENTER, + "A fatal exception 0E has occurred at F0AD:42494C4C\n" + "the current application will be terminated.\n" + "\n" + "* Press any key to terminate the current application.\n" + "* Press CTRL+ALT+DELETE again to restart your computer.\n" + " You will lose any unsaved information in all applications.\n" + "\n" + "\n"); + BSOD_TEXT (bst, CENTER, "Press any key to continue "); + BSOD_CURSOR (bst, CURSOR_LINE, 120000, 999999); + break; + + case 3: /* Windows 3.1 */ + case 4: + BSOD_INVERT (bst); + BSOD_TEXT (bst, CENTER, "NETSCAPE.EXE\n"); + BSOD_INVERT (bst); + BSOD_TEXT (bst, CENTER, + " This windows application has stopped responding to the system.\n" + "\n" + "* Press ESC to cancel and return to Windows.\n" + "* Press ENTER to close this application that is not responding.\n" + " You will lose any unsaved information in this application.\n" + "* Press CTRL+ALT+DEL again to restart your computer. You will\n" + " lose any unsaved information in all applications.\n" + "\n"); + BSOD_TEXT (bst, CENTER, "Press ENTER for OK or ESC to Cancel: OK\b\b"); + BSOD_CURSOR (bst, CURSOR_LINE, 120000, 999999); + break; + + case 5: /* Windows 95 */ + BSOD_INVERT (bst); + BSOD_TEXT (bst, CENTER, "Windows\n"); + BSOD_INVERT (bst); + BSOD_TEXT (bst, CENTER, + "An exception 00 has occurred at 0028:C18580AE in VxD HSFLOP(03) +\n" + "0000156E. This was called from 0028:C1858AED in VxD HSFLOP(03) +\n" + "0000F0AD. It may be possible to continue normally.\n" + "\n" + "* Press any key to attempt to continue.\n" + "* Press CTRL+ALT+DEL to restart your computer. You will\n" + " lose any unsaved information in all applications.\n" + "\n"); + BSOD_TEXT (bst, CENTER, "Press any key to continue "); + BSOD_CURSOR (bst, CURSOR_LINE, 120000, 999999); + break; + + case 6: /* Windows 95 */ + BSOD_INVERT (bst); + BSOD_TEXT (bst, CENTER, "Windows\n"); + BSOD_INVERT (bst); + BSOD_TEXT (bst, CENTER, + "A fatal exception 0E has occurred at F0AD:011747F3. The current\n" + "application will be terminated.\n" + "\n" + "* Press any key to terminate the current application.\n" + "* Press CTRL+ALT+DEL again to restart your computer. You will\n" + " lose any unsaved information in all applications.\n" + "\n"); + BSOD_TEXT (bst, CENTER, "Press any key to continue "); + BSOD_CURSOR (bst, CURSOR_LINE, 120000, 999999); + break; + + case 7: /* Windows 95 */ + BSOD_INVERT (bst); + BSOD_TEXT (bst, CENTER, "WARNING!\n"); + BSOD_INVERT (bst); + BSOD_TEXT (bst, CENTER, + "The system is either busy or has become unstable. You can wait and\n" + "see if it becomes available again, or you can restart your computer.\n" + "\n" + "* Press any key to return to Windows and wait.\n" + "* Press CTRL+ALT+DEL again to restart your computer. You will\n" + " lose unsaved information in any programs that are running.\n" + "\n"); + BSOD_TEXT (bst, CENTER, "Press any key to continue "); + BSOD_CURSOR (bst, CURSOR_LINE, 120000, 999999); + break; + + default: + abort(); + break; + } bst->y = ((bst->xgwa.height - bst->yoff - - ((bst->font->ascent + bst->font->descent) * 9)) + ((bst->font->ascent + bst->font->descent) * lines)) / 2); XClearWindow (dpy, window); @@ -1121,7 +1271,7 @@ vmware (Display *dpy, Window window) BSOD_CHAR_DELAY (bst, 100000); BSOD_TEXT (bst, LEFT, "4321"); BSOD_CHAR_DELAY (bst, 0); - BSOD_TEXT (bst, LEFT, "Disk dump successfull.\n" + BSOD_TEXT (bst, LEFT, "Disk dump successful.\n" "Waiting for Debugger (world 1037)\n" "Debugger is listening on serial port ...\n"); BSOD_CHAR_DELAY (bst, 10000); @@ -1140,13 +1290,16 @@ vmware (Display *dpy, Window window) } - +/* Windows NT 3.1 - 4.0 + */ static struct bsod_state * windows_nt (Display *dpy, Window window) { struct bsod_state *bst = make_bsod_state (dpy, window, "nt", "NT"); - BSOD_TEXT (bst, LEFT, + switch (random() % 4) { + case 0: case 1: case 2: + BSOD_TEXT (bst, LEFT, "*** STOP: 0x0000001E (0x80000003,0x80106fc0,0x8025ea21,0xfd6829e8)\n" "Unhandled Kernel exception c0000047 from fa8418b4 (8025ea21,fd6829e8)\n" "\n" @@ -1193,6 +1346,37 @@ windows_nt (Display *dpy, Window window) ); bst->line_delay = 750; + break; + + case 3: + BSOD_TEXT (bst, CENTER, + "Microsoft (R) Windows NT (R) Version 5.0 (Build 1796)\n" + "1 System Processor [128 MB Memory] MultiProcessor Kernel\n" + "\n" + "*** STOP: 0x0000006B (0xC000003A, 0x00000002,0x00000000,0x00000000)\n" + "PROCESS1_INITIALIZATION_FAILED\n" + "\n" + "If this is the first time you[ve seen this Stop error screen,\n" + "restart your computer. If this screen appears again, follow\n" + "these steps:\n" + "\n" + "Check to make sure any new hardware or software is properly installed.\n" + "If this is a new installation, ask your hardware or software manufacturer\n" + "for any Windows NT updates you might need.\n" + "\n" + "If problems continue, disable or remove any newly installed hardware\n" + "or software. Disable BIOS memory options such as caching or shadowing.\n" + "If you need to use Safe Mode to remove or disable components, restart\n" + "your computer, press F8 to select Advanced Startup Options, and then\n" + "select Safe Mode.\n" + "\n" + "Refer to your Getting Started manual for more information on\n" + "troubleshooting Stop errors.\n" + "\n"); + break; + default: + abort(); + } XClearWindow (dpy, window); return bst; @@ -1204,21 +1388,50 @@ windows_2k (Display *dpy, Window window) { struct bsod_state *bst = make_bsod_state (dpy, window, "windows", "Windows"); - BSOD_TEXT (bst, LEFT, + switch (random() % 4) { + case 0: case 1: case 2: + BSOD_TEXT (bst, LEFT, "*** STOP: 0x000000D1 (0xE1D38000,0x0000001C,0x00000000,0xF09D42DA)\n" "DRIVER_IRQL_NOT_LESS_OR_EQUAL \n" "\n" "*** Address F09D42DA base at F09D4000, DateStamp 39f459ff - CRASHDD.SYS\n" "\n" "Beginning dump of physical memory\n"); - BSOD_PAUSE (bst, 4000000); - BSOD_TEXT (bst, LEFT, - "Physical memory dump complete. Contact your system administrator or\n" - "technical support group.\n"); + BSOD_PAUSE (bst, 4000000); + BSOD_TEXT (bst, LEFT, + "Physical memory dump complete. Contact your system administrator or\n" + "technical support group.\n"); - bst->left_margin = 40; - bst->y = (bst->font->ascent + bst->font->descent) * 10; - bst->line_delay = 750; + bst->left_margin = 40; + bst->y = (bst->font->ascent + bst->font->descent) * 10; + bst->line_delay = 750; + break; + + case 3: + BSOD_TEXT (bst, CENTER, + "\n\n\n" + "*** STOP: 0x0000007B (0xF641F84C,0xC00000034,0x00000000,0x00000000)\n" + "INACCESSIBLE_BOOT_DEVICE\n" + "\n" + "If this is the first time you[ve seen this Stop error screen,\n" + "restart your computer. If this screen appears again, follow\n" + "these steps:\n" + "\n" + "Check for viruses on your computer. Remove any newly installed\n" + "hard drives or hard drive controllers. Chcek your hard drive\n" + "to make sure it is properly configured and terminated.\n" + "Run CHKDSK /F to check for hard drive corruption, and then\n" + "restart your computer.\n" + "\n" + "Refer to your Getting Started manual for more information on\n" + "troubleshooting Stop errors.\n" + "\n" + "\n"); + break; + + default: + abort(); + } XClearWindow (dpy, window); return bst; @@ -1230,15 +1443,42 @@ windows_me (Display *dpy, Window window) { struct bsod_state *bst = make_bsod_state (dpy, window, "windows", "Windows"); - BSOD_TEXT (bst, LEFT, - "Windows protection error. You need to restart your computer.\n\n" - "System halted."); - BSOD_CURSOR (bst, CURSOR_LINE, 120000, 999999); - - bst->left_margin = 40; - bst->y = ((bst->xgwa.height - bst->yoff - - ((bst->font->ascent + bst->font->descent) * 3)) - / 2); + switch (random() % 3) { + case 0: case 1: + BSOD_TEXT (bst, LEFT, + "Windows protection error. You need to restart your computer.\n\n" + "System halted."); + BSOD_CURSOR (bst, CURSOR_LINE, 120000, 999999); + + bst->left_margin = 40; + bst->y = ((bst->xgwa.height - bst->yoff - + ((bst->font->ascent + bst->font->descent) * 3)) + / 2); + break; + case 2: + BSOD_INVERT (bst); + BSOD_TEXT (bst, CENTER, "Windows\n"); + BSOD_INVERT (bst); + BSOD_TEXT (bst, CENTER, + "\n" + "An error has occurred. To continue:\n" + "\n" + "Press Enter to return to Windows, or\n" + "\n" + "Press CTRL+ALT+DEL to restart your computer. If you do this,\n" + "you will lose any unsaved information in all open applications.\n" + "\n" + "Error: 0E : 015F : FOAD0D0D\n" + "\n"); + BSOD_TEXT (bst, CENTER, "Press any key to continue "); + BSOD_CURSOR (bst, CURSOR_LINE, 120000, 999999); + bst->y = ((bst->xgwa.height - bst->yoff - + ((bst->font->ascent + bst->font->descent) * 11)) + / 2); + break; + default: + abort(); + } XClearWindow (dpy, window); return bst; @@ -1250,7 +1490,9 @@ windows_xp (Display *dpy, Window window) { struct bsod_state *bst = make_bsod_state (dpy, window, "windows", "Windows"); - BSOD_TEXT (bst, LEFT, /* From Wm. Rhodes */ + switch (random() % 6) { + case 0: case 1: case 2: + BSOD_TEXT (bst, LEFT, /* From Wm. Rhodes */ "A problem has been detected and windows has been shut down to prevent " "damage\n" "to your computer.\n" @@ -1279,12 +1521,73 @@ windows_xp (Display *dpy, Window window) "3b9f3248\n" "\n" "Beginning dump of physical memory\n"); - BSOD_PAUSE (bst, 4000000); - BSOD_TEXT (bst, LEFT, + BSOD_PAUSE (bst, 4000000); + BSOD_TEXT (bst, LEFT, "Physical memory dump complete.\n" "Contact your system administrator or technical support group for " "further\n" "assistance.\n"); + break; + case 3: /* Windows XP/Vista/7 */ + BSOD_TEXT (bst, LEFT, + "STOP: C0000021a {Fatal System Error}\n" + "The Session Manager Initialization system process terminated" + " unexpectedly\n" + "with a status of 0x00000001 (0x00000000 0x00000000).\n" + "The system has been shut down.\n"); + break; + case 4: /* Windows CE */ + BSOD_TEXT (bst, LEFT, + "A error has occurred and Windows CE has been shut down to prevent\n" + "damage to your computer.\n" + "If you will try to restart your computer, press Ctrl+Alt+Delete.\n" + "\n" + "Technical information:\n" + "\n" + "*** STOP: 0x0004c2 (inaccessible embedded device)\n" + "\n" + "\n" + "The computer will restart automatically\n" + "after 23 seconds.\n"); + break; + case 5: /* Windows 8 */ + BSOD_TEXT (bst, LEFT, + "A problem has been detected and windows has been shut down to prevent\n" + "damage to your computer.\n" + "\n" + "SYSTEM_SERVICE_EXCEPTION\n" + "\n" + "If this is the first time you[ve seen this Stop error screen,\n" + "restart your computer. If this screen appears again, follow\n" + "these steps:\n" + "\n" + "Check to make sure any new hardware or software is properly installed.\n" + "If this is a new installation, ask your hardware or software" + " manufacturer\n" + "for any Windows NT updates you might need.\n" + "\n" + "If problems continue, disable or remove any newly installed hardware\n" + "or software. Disable BIOS memory options such as caching or shadowing.\n" + "If you need to use Safe Mode to remove or disable components, restart\n" + "your computer, press F8 to select Advanced Startup Options, and then\n" + "select Safe Mode.\n" + "\n" + "Technical information:\n" + "\n" + "*** STOP: 0x0000003B (0x00000000c000005,0xFFFFF880041C9062," + "0xFFFFF88002E22F60,0x0000000000000000(\n" + "\n" + "*** dxgmms1.sys - Address FFFFF880041C9062 base at FFFFF8800418F000," + " DateStamp 4cdb7409\n" + "\n" + "Collecting data for crash dump ...\n"); + BSOD_PAUSE (bst, 4000000); + BSOD_TEXT (bst, LEFT, + "Initializing disk for for crash dump ...\n"); + break; + default: + abort(); + } XClearWindow (dpy, window); return bst; @@ -1445,12 +1748,11 @@ windows_10 (Display *dpy, Window window) / 2); { - int dir, ascent, descent; - XCharStruct ov; + XGlyphInfo ov; const char *s = lines[2]; - XTextExtents (bst->fontA, s, strlen(s), - &dir, &ascent, &descent, &ov); - left = left0 = (bst->xgwa.width - ov.width) / 2; + + XftTextExtentsUtf8 (bst->dpy, bst->font, (FcChar8 *) s, strlen(s), &ov); + left = left0 = (bst->xgwa.width - ov.xOff) / 2; } pixmap = XCreatePixmapFromBitmapData (dpy, window, (char *) qr_bits, @@ -1626,7 +1928,7 @@ windows_ransomware (Display *dpy, Window window) const char *excuse_quip = excuse_quips[random() % countof(excuse_quips)]; - /* WELL ACTUALLY, screensavers aren't really nescessary anymore because... */ + /* WELL ACTUALLY, screensavers aren't really necessary anymore because... */ const char *screensaver_quips[] = { "I read it on hacker news", "that's official Debian policy now", @@ -1673,7 +1975,7 @@ windows_ransomware (Display *dpy, Window window) ". Also you didn't click hard enough and now Tinkerbelle is dead.\n", "\n", "*But Aren't Screensavers Are Necessary?\n", - "WELL ACTUALLY, screensavers aren't really nescessary anymore because ", + "WELL ACTUALLY, screensavers aren't really necessary anymore because ", "[S]", ".\n", "\n", "Please file complaints to @POTUS on Twitter.\n", @@ -1929,7 +2231,7 @@ windows_ransomware (Display *dpy, Window window) "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123459789"; buf[i] = s[random() % strlen(s)]; } - strncpy (buf, " //", 3); + memcpy (buf, " //", 3); buf[10] = '/'; buf[17] = '/'; buf[24] = '/'; @@ -2310,11 +2612,13 @@ atari (Display *dpy, Window window) atari_png, sizeof(atari_png), &pix_w, &pix_h, &mask); - pixmap = double_pixmap (dpy, bst->xgwa.visual, bst->xgwa.depth, - pixmap, pix_w, pix_h); - mask = double_pixmap (dpy, bst->xgwa.visual, 1, mask, pix_w, pix_h); - pix_w *= 2; - pix_h *= 2; + for (i = 0; i < 3; i++) + { + pixmap = double_pixmap (dpy, bst->xgwa.visual, bst->xgwa.depth, + pixmap, pix_w, pix_h); + mask = double_pixmap (dpy, bst->xgwa.visual, 1, mask, pix_w, pix_h); + pix_w *= 2; pix_h *= 2; + } offset = pix_w; x = 0; @@ -2482,6 +2786,7 @@ macsbug (Display *dpy, Window window) "EmToNatEndMoveParams+00014\n" " 24DAF780 PPC 003AA180 __DisposePtr+00010"); + XGlyphInfo ov; const char *s; int body_lines = 1; @@ -2499,9 +2804,8 @@ macsbug (Display *dpy, Window window) for (s = body; *s; s++) if (*s == '\n') body_lines++; - char_width = (bst->font->per_char - ? bst->font->per_char['n'-bst->font->min_char_or_byte2].width - : bst->font->min_bounds.width); + XftTextExtentsUtf8 (bst->dpy, bst->font, (FcChar8 *) "n", 1, &ov); + char_width = ov.xOff; line_height = bst->font->ascent + bst->font->descent; col_right = char_width * 12; /* number of columns in `left' */ @@ -2625,17 +2929,13 @@ static struct bsod_state * macx_10_0 (Display *dpy, Window window) { struct bsod_state *bst = make_bsod_state (dpy, window, "macx", "MacX"); - + unsigned long fg2 = get_pixel_resource (dpy, bst->xgwa.colormap, + "macx.textForeground", + "MacX.TextForeground"); + unsigned long bg2 = get_pixel_resource (dpy, bst->xgwa.colormap, + "macx.textBackground", + "MacX.TextBackground"); XClearWindow (dpy, window); - XSetForeground (dpy, bst->gc, - get_pixel_resource (dpy, bst->xgwa.colormap, - "macx.textForeground", - "MacX.TextForeground")); - XSetBackground (dpy, bst->gc, - get_pixel_resource (dpy, bst->xgwa.colormap, - "macx.textBackground", - "MacX.TextBackground")); - { Pixmap pixmap = 0; Pixmap mask = 0; @@ -2644,7 +2944,7 @@ macx_10_0 (Display *dpy, Window window) hmac_png, sizeof(hmac_png), &pix_w, &pix_h, &mask); -# ifdef HAVE_MOBILE +/*# ifdef HAVE_MOBILE*/ if (pixmap) { pixmap = double_pixmap (dpy, bst->xgwa.visual, @@ -2654,7 +2954,7 @@ macx_10_0 (Display *dpy, Window window) pix_w *= 2; pix_h *= 2; } -# endif +/*# endif*/ x = (bst->xgwa.width - pix_w) / 2; y = (bst->xgwa.height - pix_h) / 2; @@ -2674,6 +2974,7 @@ macx_10_0 (Display *dpy, Window window) bst->wrap_p = True; BSOD_PAUSE (bst, 3000000); + BSOD_COLOR(bst, fg2, bg2); BSOD_TEXT (bst, LEFT, "panic(cpu 0): Unable to find driver for this platform: " "\"PowerMac 3,5\".\n" @@ -2726,7 +3027,7 @@ macx_10_2 (Display *dpy, Window window, Bool v10_3_p) if (! pixmap) abort(); if (! mask) abort(); -#if 0 +#if 1 if (bst->xgwa.height > 600) /* scale up the bitmap */ { pixmap = double_pixmap (dpy, bst->xgwa.visual, bst->xgwa.depth, @@ -2759,18 +3060,20 @@ static struct bsod_state * mac_diskfail (Display *dpy, Window window) { struct bsod_state *bst = make_bsod_state (dpy, window, "macdisk", "Mac"); - int cw = (bst->font->per_char - ? bst->font->per_char['n'-bst->font->min_char_or_byte2].width - : bst->font->min_bounds.width); - int h = bst->font->ascent + bst->font->descent; - int L = (bst->xgwa.width - (cw * 80)) / 2; - int T = (bst->xgwa.height - (h * 10)) / 2; - - unsigned long fg = bst->fg; - unsigned long bg = bst->bg; - unsigned long bg2 = get_pixel_resource (dpy, bst->xgwa.colormap, - "macx.background", - "Mac.Background"); + XGlyphInfo ov; + int cw, h, L, T; + unsigned long fg, bg, bg2; + + XftTextExtentsUtf8 (bst->dpy, bst->font, (FcChar8 *) "n", 1, &ov); + cw = ov.xOff; + h = bst->font->ascent + bst->font->descent; + L = (bst->xgwa.width - (cw * 80)) / 2; + T = (bst->xgwa.height - (h * 10)) / 2; + + fg = bst->fg; + bg = bst->bg; + bg2 = get_pixel_resource (dpy, bst->xgwa.colormap, + "macx.background", "Mac.Background"); if (L < 0) L = 0; if (T < 0) T = 0; @@ -3028,7 +3331,7 @@ macx_install (Display *dpy, Window window) static struct bsod_state * macx (Display *dpy, Window window) { - switch (1?4:random() % 5) { + switch (random() % 5) { case 0: return macx_10_0 (dpy, window); break; case 1: return macx_10_2 (dpy, window, False); break; case 2: return macx_10_2 (dpy, window, True); break; @@ -3222,7 +3525,7 @@ os2 (Display *dpy, Window window) "contact your service representative.\n", /* Warp 4.52+, typical JFS problem. */ - "Exeption in module: JFS\n" + "Exception in module: JFS\n" "TRAP 0003 ERRCD=0000 ERACC=**** ERLIM=********\n" "EAX=00000000 EBX=ffffff05 ECX=00000001 EDX=f5cd8010\n" "ESI=000000e6 EDI=000000e7 EBP=f9c7378e FLG=00002296\n" @@ -3267,10 +3570,9 @@ sparc_solaris (Display *dpy, Window window) Pixmap pixmap = image_data_to_pixmap (dpy, window, sun_png, sizeof(sun_png), &pix_w, &pix_h, &mask); - - char_width = (bst->font->per_char - ? bst->font->per_char['n'-bst->font->min_char_or_byte2].width - : bst->font->min_bounds.width); + XGlyphInfo ov; + XftTextExtentsUtf8 (bst->dpy, bst->font, (FcChar8 *) "n", 1, &ov); + char_width = ov.xOff; if (pixmap) while (pix_w < char_width * 4) @@ -4596,7 +4898,6 @@ hpux (Display *dpy, Window window) int size = 40; for (i = 0; i <= steps; i++) { - if (i > steps) i = steps; sprintf (buf, "*** Dumping: %3d%% complete (%d of 40 MB) (device 64:0x2)\r", i * 100 / steps, @@ -5652,14 +5953,14 @@ static struct bsod_state * tivo (Display *dpy, Window window) { struct bsod_state *bst = make_bsod_state (dpy, window, "tivo", "Tivo"); - int char_width = - (bst->font->per_char - ? bst->font->per_char['n'-bst->font->min_char_or_byte2].width - : bst->font->min_bounds.width); + XGlyphInfo ov; int line_height = bst->font->ascent + bst->font->descent; + int char_width, left, top; + XftTextExtentsUtf8 (bst->dpy, bst->font, (FcChar8 *) "n", 1, &ov); + char_width = ov.xOff; - int left = (bst->xgwa.width - char_width * 44) / 2; - int top = (bst->xgwa.height - line_height * 15) / 2; + left = (bst->xgwa.width - char_width * 44) / 2; + top = (bst->xgwa.height - line_height * 15) / 2; if (left < 0) left = 0; if (top < 0) top = 0; @@ -5705,16 +6006,17 @@ nintendo (Display *dpy, Window window) unsigned long fg = get_pixel_resource (dpy, bst->xgwa.colormap, "nintendo.foreground", "Nintendo.Foreground"); - int char_width = - (bst->font->per_char - ? bst->font->per_char['n'-bst->font->min_char_or_byte2].width - : bst->font->min_bounds.width); int line_height = bst->font->ascent + bst->font->descent; - - int left = (bst->xgwa.width - char_width * 30) / 2; - int top = (bst->xgwa.height - line_height * 9) / 2; - int left2 = left - char_width * 4; - int top2 = top - line_height; + XGlyphInfo ov; + int char_width; + int left, top, left2, top2; + + XftTextExtentsUtf8 (bst->dpy, bst->font, (FcChar8 *) "n", 1, &ov); + char_width = ov.xOff; + left = (bst->xgwa.width - char_width * 30) / 2; + top = (bst->xgwa.height - line_height * 9) / 2; + left2 = left - char_width * 4; + top2 = top - line_height; if (left < 0) left = 0; if (top < 0) top = 0; if (left2 < 0) left2 = 0; @@ -5741,8 +6043,7 @@ nintendo (Display *dpy, Window window) ビデオゲームのコピーは法律で禁じられています。 詳しくは取扱説明書をご覧になってください。 - but BSOD_TEXT doesn't do Xft, and more importantly, "PxPlus IBM VGA8" - doesn't contain Japanese characters. + but "PxPlus IBM VGA8" doesn't contain Japanese characters. */ BSOD_TEXT (bst, CENTER, "WARNING"); @@ -5763,7 +6064,7 @@ nintendo (Display *dpy, Window window) } -/* An Android phone boot loader, by jwz. +/* A 2013 Android phone boot loader, by jwz. */ static struct bsod_state * android (Display *dpy, Window window) @@ -5841,16 +6142,16 @@ android (Display *dpy, Window window) " No image!\n", }; - int cw = (bst->font->per_char - ? bst->font->per_char['n'-bst->font->min_char_or_byte2].width - : bst->font->min_bounds.width); int line_height = bst->font->ascent + bst->font->descent; - + int cw; + XGlyphInfo ov; int state = 0; - Pixmap pixmap = 0, mask = 0; int pix_w = 0, pix_h = 0; + XftTextExtentsUtf8 (bst->dpy, bst->font, (FcChar8 *) "n", 1, &ov); + cw = ov.xOff; + pixmap = image_data_to_pixmap (dpy, window, android_png, sizeof(android_png), &pix_w, &pix_h, &mask); @@ -5995,6 +6296,65 @@ android (Display *dpy, Window window) } +/* Gnome SOD. Truly 2020 will be the year of the Linux Desktop. */ +static struct bsod_state * +gnome (Display *dpy, Window window) +{ + struct bsod_state *bst = make_bsod_state (dpy, window, "gnome", "Gnome"); + + int pix_w, pix_h; + int x, y; + int lh = bst->font->ascent + bst->font->descent; + Pixmap mask = 0; + Pixmap pixmap; + unsigned long fg, bg; + Bool which = random() & 1; + + if (which) + { + pixmap = image_data_to_pixmap (dpy, window, + gnome2_png, sizeof(gnome2_png), + &pix_w, &pix_h, &mask); + fg = get_pixel_resource (dpy, bst->xgwa.colormap, + "gnome.foreground2", "Gnome.Foreground"); + bg = get_pixel_resource (dpy, bst->xgwa.colormap, + "gnome.background2", "Gnome.Background"); + } + else + { + pixmap = image_data_to_pixmap (dpy, window, + gnome1_png, sizeof(gnome1_png), + &pix_w, &pix_h, &mask); + fg = get_pixel_resource (dpy, bst->xgwa.colormap, + "gnome.foreground", "Gnome.Foreground"); + bg = get_pixel_resource (dpy, bst->xgwa.colormap, + "gnome.background", "Gnome.Background"); + } + + x = (bst->xgwa.width - pix_w) / 2; + y = (bst->xgwa.height - pix_h) / 2; + if (y < 0) y = 0; + + XSetWindowBackground (dpy, window, bg); + XClearWindow (dpy, window); + XSetClipMask (dpy, bst->gc, mask); + XSetClipOrigin (dpy, bst->gc, x, y); + XCopyArea (dpy, pixmap, window, bst->gc, 0, 0, pix_w, pix_h, x, y); + XSetClipMask (dpy, bst->gc, None); + XFreePixmap (dpy, mask); + + BSOD_MOVETO (bst, 0, y + pix_h + lh * 2); + BSOD_COLOR (bst, fg, bg); + BSOD_FONT (bst, 0); + BSOD_TEXT (bst, CENTER, "Oh no! Something has gone wrong!\n\n"); + BSOD_FONT (bst, 1); + BSOD_TEXT (bst, CENTER, + "A problem has occurred and the system can't recover.\n"); + BSOD_TEXT (bst, CENTER, "Please log out and try again."); + BSOD_PAUSE (bst, 60 * 1000000); + + return bst; +} /***************************************************************************** @@ -6042,6 +6402,7 @@ static const struct { { "DVD", dvd }, { "Tivo", tivo }, { "Nintendo", nintendo }, + { "Gnome", gnome }, }; @@ -6165,8 +6526,9 @@ bsod_draw (Display *dpy, Window window, void *closure) /* XSync (dpy, False); slows down char drawing too much on HAVE_JWXYZ */ - if (this_delay == 0) + if (this_delay == 0){ goto AGAIN; /* no delay, not expired: stay here */ +} else if (this_delay >= 0) { dst->delay_remaining = this_delay; /* return; time to sleep */ @@ -6365,6 +6727,7 @@ static const char *bsod_defaults [] = { "*doDVD: True", "*doTivo: True", "*doNintendo: True", + "*doGnome: True", ".foreground: White", ".background: Black", @@ -6483,6 +6846,11 @@ static const char *bsod_defaults [] = { ".nintendo.background2: #085C89", ".nintendo.foreground: #EEAACF", + ".gnome.background: #000000", + ".gnome.foreground: #E2E2E2", + ".gnome.background2: #F0F0F0", + ".gnome.foreground2: #2E3436", + "*dontClearRoot: True", ANALOGTV_DEFAULTS @@ -6493,166 +6861,63 @@ static const char *bsod_defaults [] = { ".lowrez: false", /* This is required on macOS */ - "*fontB: ", - "*fontC: ", - -# if defined(USE_IPHONE) - - "*font: PxPlus IBM VGA8 16, Courier-Bold 14", - "*bigFont: ", - - ".mac.font: Courier-Bold 18", - ".macsbug.font: Courier-Bold 8", - ".macx.font: Courier-Bold 14", - ".macdisk.font: Courier-Bold 14", - ".macinstall.font: Helvetica 12, Arial 12", - ".macinstall.bigFont: Helvetica 12, Arial 12", - ".msdos.font: PxPlus IBM VGA8 32, Courier-Bold 28", - ".nt.font: PxPlus IBM VGA8 12, Courier-Bold 10", - ".win10.font: Arial 12, Helvetica 12", - ".win10.bigFont: Arial 12, Helvetica 12", - ".win10.fontB: Arial 50, Helvetica 50", - ".win10.fontC: Arial 9, Helvetica 9", - - /* The real Solaris font is Gallant (../OSX/gallant12x22.ttf) - but Luxi Mono (../OSX/luximr.ttf) is pretty close as well. */ - ".solaris.font: Gallant12x22 12, Luxi Mono 12, PxPlus IBM VGA8 12, Courier Bold 12", - /* "Arial" loads "ArialMT" but "Arial Bold" does not load "Arial-BoldMT"? */ - ".ransomware.font: Arial 11, Helvetica 11", - ".ransomware.fontB: Arial 9, Helvetica 9", - ".ransomware.fontC: Arial Bold 11, Arial-BoldMT 11, Helvetica Bold 11", - - ".tivo.font: Helvetica-Bold 13", - ".tivo.fontB: Helvetica-Bold 17", - - ".nintendo.font: PxPlus IBM VGA8 18, Courier-Bold 18", - -# elif defined(HAVE_ANDROID) - - "*font: PxPlus IBM VGA8 16", - "*bigFont: ", - - ".mac.font: -*-courier-bold-r-*-*-*-180-*-*-m-*-*-*", - ".macsbug.font: -*-courier-bold-r-*-*-*-80-*-*-m-*-*-*", - ".macx.font: -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*", - ".macdisk.font: -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*", - ".macinstall.font: -*-helvetica-medium-r-*-*-*-120-*-*-*-*-*-*", - ".macinstall.bigFont: -*-helvetica-medium-r-*-*-*-120-*-*-*-*-*-*", - ".msdos.font: PxPlus IBM VGA8 32", - ".nt.font: PxPlus IBM VGA8 12", - ".solaris.font: Gallant12x22 14, Luxi Mono 12, PxPlus IBM VGA8 12, Courier Bold 12", - - ".win10.font: -*-helvetica-medium-r-*-*-*-120-*-*-*-*-*-*", - ".win10.bigFont: -*-helvetica-medium-r-*-*-*-120-*-*-*-*-*-*", - ".win10.fontB: -*-helvetica-medium-r-*-*-*-500-*-*-*-*-*-*", - ".win10.fontC: -*-helvetica-medium-r-*-*-*-90-*-*-*-*-*-*", - - ".ransomware.font: -*-helvetica-medium-r-*-*-*-100-*-*-*-*-*-*", - ".ransomware.fontB: -*-helvetica-medium-r-*-*-*-80-*-*-*-*-*-*", - ".ransomware.fontC: -*-helvetica-bold-r-*-*-*-100-*-*-*-*-*-*", - - ".tivo.font: -*-helvetica-medium-r-*-*-*-180-*-*-*-*-*-*", - ".tivo.fontB: -*-helvetica-bold-r-*-*-*-240-*-*-*-*-*-*", - - ".nintendo.font: PxPlus IBM VGA8 18", - -# elif defined(HAVE_COCOA) + /* "bigFont" replaces "font" on desktop if window height >= 640. */ - "*font: PxPlus IBM VGA8 8, Courier Bold 9", - "*bigFont: PxPlus IBM VGA8 32, Courier Bold 24", - ".mac.font: Monaco 10, Courier Bold 9", - ".mac.bigFont: Monaco 18, Courier Bold 18", + /* Some of the following fonts can only display ASCII, but that's + ok because this program only displays static ASCII text. */ - ".macsbug.font: Monaco 10, Courier Bold 9", - ".macsbug.bigFont: Monaco 10, Courier Bold 9", - ".macx.font: Courier Bold 9", - ".macx.bigFont: Courier Bold 14", - ".macdisk.font: Courier Bold 9", - ".macdisk.bigFont: Courier Bold 18", - ".macinstall.font: Helvetica 24, Arial 24", - ".macinstall.bigFont: Helvetica 24, Arial 24", + /* "Classic Console" is the MS-DOS 8x16 VGA font. */ + "*font: Classic Console 12, Courier Bold 12", + "*bigFont: Classic Console 24, Courier Bold 24", + "*fontB: ", + "*fontC: ", - ".hvx.bigFont: PxPlus IBM VGA8 24, Courier Bold 14", - ".hppalinux.bigFont: PxPlus IBM VGA8 24, Courier Bold 14", - ".linux.bigFont: PxPlus IBM VGA8 24, Courier Bold 14", - ".hpux.bigFont: PxPlus IBM VGA8 24, Courier Bold 14", - ".msdos.font: PxPlus IBM VGA8 24, Courier Bold 14", - ".solaris.font: Gallant12x22 12, Luxi Mono 12, PxPlus IBM VGA8 12, Courier Bold 12", - ".solaris.bigFont: Gallant12x22 22, Luxi Mono 16, PxPlus IBM VGA8 16, Courier Bold 14", + ".win10.font: Arial 24, Helvetica 24", + ".win10.bigFont: Arial 24, Helvetica 24", + ".win10.fontB: Arial 36, Helvetica 36", + ".win10.fontC: Arial 16, Helvetica 16", - ".win10.font: Arial 24, Helvetica 24", - ".win10.bigFont: Arial 24, Helvetica 24", - ".win10.fontB: Arial 100, Helvetica 100", - ".win10.fontC: Arial 16, Helvetica 16", - - ".ransomware.font: Arial 24, Helvetica 24", - ".ransomware.bigFont: Arial 24, Helvetica 24", - ".ransomware.fontB: Arial 16, Helvetica 16", - ".ransomware.fontC: Arial Bold 24, Helvetica Bold 24", - - ".tivo.font: Helvetica 36", - ".tivo.fontB: Helvetica 48", - - ".nintendo.font: PxPlus IBM VGA8 12, Courier Bold 12", - ".nintendo.bigFont: PxPlus IBM VGA8 48, Courier Bold 48", - -# else /* X11 */ - - "*font: 9x15bold", - "*bigFont: -*-courier-bold-r-*-*-*-180-*-*-m-*-*-*", + /* "Arial" loads "ArialMT" but "Arial Bold" does not load "Arial-BoldMT"? */ + ".ransomware.font: Arial 12, Helvetica 12", + ".ransomware.bigFont: Arial 12, Helvetica 12", + ".ransomware.fontB: Arial 8, Helvetica 8", + ".ransomware.fontC: Arial Bold 16, Arial-BoldMT 16, Helvetica Bold 16", - ".macsbug.font: -*-courier-medium-r-*-*-*-80-*-*-m-*-*-*", - ".macsbug.bigFont: -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*", + ".macsbug.font: Monaco 8, Courier Bold 8", + ".macsbug.bigFont: Monaco 14, Courier Bold 14", - ".macdisk.font: -*-courier-bold-r-*-*-*-80-*-*-m-*-*-*", - ".macdisk.bigFont: -*-courier-bold-r-*-*-*-100-*-*-m-*-*-*", - ".macinstall.font: -*-helvetica-medium-r-*-*-*-180-*-*-*-*-*-*", - ".macinstall.bigFont: -*-helvetica-medium-r-*-*-*-180-*-*-*-*-*-*", + ".macx.font: Courier Bold 10", + ".macx.bigFont: Courier Bold 14", - ".sco.font: -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*", - ".hvx.font: -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*", - ".hppalinux.bigFont: -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*", - ".sparclinux.bigFont: -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*", + ".macdisk.font: Courier Bold 14", + ".macdisk.bigFont: Courier Bold 14", - /* Some systems might have this, but I'm not sure where it comes from: */ - /* ".bsd.font: -*-vga-normal-r-*-*-*-120-*-*-c-*-*-*", */ - /* The fonts/misc/vga.pcf that comes with xdosemu has no XLFD name: */ - ".bsd.font: vga", - ".bsd.bigFont: -*-vga-normal-r-*-*-*-220-*-*-c-*-*-*", + ".macinstall.font: Helvetica 12, Arial 12", + ".macinstall.bigFont: Helvetica 24, Arial 24", - /* The original Solaris console font was: - -sun-gallant-demi-r-normal-*-*-140-*-*-c-*-*-* - Red Hat introduced Luxi Mono as its console font, which is similar - to Gallant. X.Org includes it but Debian and Fedora do not. */ - ".solaris.font: -*-luxi mono-medium-r-normal--*-140-*-*-m-*-*-*", - - ".hpux.bigFont: -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*", - ".os390.bigFont: -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*", - ".tru64.bigFont: -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*", - ".vms.bigFont: -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*", - ".msdos.bigFont: -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*", - - ".win10.font: -*-helvetica-medium-r-*-*-*-180-*-*-*-*-*-*", - ".win10.bigFont: -*-helvetica-medium-r-*-*-*-180-*-*-*-*-*-*", - ".win10.fontB: -*-helvetica-medium-r-*-*-*-240-*-*-*-*-*-*", - ".win10.fontC: -*-helvetica-medium-r-*-*-*-140-*-*-*-*-*-*", + /* "Gallant" was the original Solaris 2.x console font. */ + ".solaris.font: Gallant12x22 12, Luxi Mono 12, Courier Bold 12", + ".solaris.bigFont: Gallant12x22 24, Luxi Mono 24, Courier Bold 24", - ".ransomware.font: -*-helvetica-medium-r-*-*-*-180-*-*-*-*-*-*", - ".ransomware.bigFont: -*-helvetica-medium-r-*-*-*-180-*-*-*-*-*-*", - ".ransomware.fontB: -*-helvetica-medium-r-*-*-*-140-*-*-*-*-*-*", - ".ransomware.fontC: -*-helvetica-bold-r-*-*-*-180-*-*-*-*-*-*", + /* "Luxi Mono" was the Red Hat console font. */ + ".linux.font: Luxi Mono 12, Gallant12x22 12, Courier Bold 12", + ".linux.bigFont: Luxi Mono 24, Gallant12x22 24, Courier Bold 24", - ".tivo.font: -*-helvetica-medium-r-*-*-*-180-*-*-*-*-*-*", - ".tivo.fontB: -*-helvetica-bold-r-*-*-*-240-*-*-*-*-*-*", + ".android.font: Courier Bold 12", + ".android.bigFont: Courier Bold 24", - ".nintendo.font: -*-courier-bold-r-*-*-*-180-*-*-m-*-*-*", - ".nintendo.bigFont: -*-courier-bold-r-*-*-*-360-*-*-m-*-*-*", + ".tivo.font: Helvetica Bold 16", + ".tivo.bigFont: Helvetica Bold 28", -# endif /* X11 */ + ".nintendo.font: Classic Console 18, Courier Bold 18", + ".nintendo.bigFont: Classic Console 40, Courier Bold 40", + ".gnome.font: Helvetica Bold 13", + ".gnome.bigFont: Helvetica Bold 13", + ".gnome.fontB: Helvetica 13", 0 }; @@ -6730,6 +6995,8 @@ static const XrmOptionDescRec bsod_options [] = { { "-no-tivo", ".doTivo", XrmoptionNoArg, "False" }, { "-nintendo", ".doNintendo", XrmoptionNoArg, "True" }, { "-no-nintendo", ".doNintendo", XrmoptionNoArg, "False" }, + { "-gnome", ".doGnome", XrmoptionNoArg, "True" }, + { "-no-gnome", ".doGnome", XrmoptionNoArg, "False" }, ANALOGTV_OPTIONS { 0, 0, 0, 0 } }; diff --git a/hacks/bsod.man b/hacks/bsod.man index 0043e7f..a722da9 100644 --- a/hacks/bsod.man +++ b/hacks/bsod.man @@ -1,19 +1,6 @@ -.de EX \"Begin example -.ne 5 -.if n .sp 1 -.if t .sp .5 -.nf -.in +.5i -.. -.de EE -.fi -.in -.5i -.if n .sp 1 -.if t .sp .5 -.. .TH XScreenSaver 1 "5-May-2004" "X Version 11" .SH NAME -bsod - Blue Screen of Death emulator +bsod \- Blue Screen of Death emulator .SH SYNOPSIS .B bsod [\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] diff --git a/hacks/bubbles.c b/hacks/bubbles.c index eefe048..8116e36 100644 --- a/hacks/bubbles.c +++ b/hacks/bubbles.c @@ -39,9 +39,10 @@ * Internet E-mail : j-macnicol@adfa.edu.au */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif +#include "screenhack.h" +#include "yarandom.h" +#include "bubbles.h" +#include "ximage-loader.h" #undef DEBUG /* doesn't compile */ @@ -60,11 +61,6 @@ # include #endif -#include "screenhack.h" -#include "yarandom.h" -#include "bubbles.h" -#include "ximage-loader.h" - #define FANCY_BUBBLES /* @@ -157,9 +153,9 @@ calc_bubble_area(struct state *st, int r) 10.0 * PI * (double)r * (double)r * (double)r); #endif /* DEBUG */ if (st->threed) - return (long)(10.0 * PI * (double)r * (double)r * (double)r); + return (long)(10.0 * M_PI * (double)r * (double)r * (double)r); else - return (long)(10.0 * PI * (double)r * (double)r); + return (long)(10.0 * M_PI * (double)r * (double)r); } static void * diff --git a/hacks/bubbles.h b/hacks/bubbles.h index 24872e3..08e81d5 100644 --- a/hacks/bubbles.h +++ b/hacks/bubbles.h @@ -138,15 +138,6 @@ * End of options * ****************************************************************************/ -/* Some machines define M_PI and not PI. If they don't define either, use -own own. Really, the accuracy of this is _not_ very important. */ -#ifndef PI -# define PI M_PI -# ifndef M_PI -# define M_PI 3.1415926535 -# endif -#endif - /* for delete_bubble_in_mesh() */ #define DELETE_BUBBLE 0 #define KEEP_BUBBLE 1 diff --git a/hacks/bubbles.man b/hacks/bubbles.man index f9b892e..25d77f6 100644 --- a/hacks/bubbles.man +++ b/hacks/bubbles.man @@ -1,19 +1,6 @@ -.de EX \"Begin example -.ne 5 -.if n .sp 1 -.if t .sp .5 -.nf -.in +.5i -.. -.de EE -.fi -.in -.5i -.if n .sp 1 -.if t .sp .5 -.. .TH XScreenSaver 1 "14-Dec-95" "X Version 11" .SH NAME -bubbles - frying pan / soft drink simulation +bubbles \- frying pan / soft drink simulation .SH SYNOPSIS .B bubbles [\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-simple] [\-broken] [\-3D] [\-rise|\-drop] [-trails] diff --git a/hacks/bumps.man b/hacks/bumps.man index 8e47184..717c1c3 100644 --- a/hacks/bumps.man +++ b/hacks/bumps.man @@ -1,6 +1,6 @@ .TH XScreenSaver 1 "05-Apr-1999" "X Version 11" .SH NAME -bumps - move distorting spotlight around desktop +bumps \- move distorting spotlight around desktop .SH SYNOPSIS .B bumps [\-display \fIhost:display.screen\fP] @@ -24,7 +24,7 @@ or from a random file on disk, as indicated by the \fIgrabDesktopImages\fP, \fIgrabVideoFrames\fP, and \fIchooseRandomImages\fP options in the \fI~/.xscreensaver\fP file; see -.BR xscreensaver-demo (1) +.BR xscreensaver\-settings (1) for more details. .SH OPTIONS .I bumps @@ -66,8 +66,8 @@ stored in the RESOURCE_MANAGER property. .SH SEE ALSO .BR X (1), .BR xscreensaver (1), -.BR xscreensaver\-demo (1), -.BR xscreensaver\-getimage (1) +.BR xscreensaver\-settings (1), +.BR xscreensaver\-getimage (MANSUFFIX) .SH COPYRIGHT Copyright \(co 1999 by Shane Smit. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is diff --git a/hacks/ccurve.man b/hacks/ccurve.man index 93b81fc..d2b8ae8 100644 --- a/hacks/ccurve.man +++ b/hacks/ccurve.man @@ -1,6 +1,6 @@ .TH XScreenSaver 1 "" "X Version 11" .SH NAME -ccurve - self-similar linear fractals. +ccurve \- self-similar linear fractals. .SH SYNOPSIS .B ccurve [\-display \fIhost:display.screen\fP] diff --git a/hacks/celtic.man b/hacks/celtic.man index 9747cd5..06b81d7 100644 --- a/hacks/celtic.man +++ b/hacks/celtic.man @@ -1,6 +1,6 @@ .TH XScreenSaver 1 "" "X Version 11" .SH NAME -celtic - draws celtic cross-stich patterns +celtic \- draws celtic cross-stich patterns .SH SYNOPSIS .B ifs [\-display \fIhost:display.screen\fP] diff --git a/hacks/check-configs.pl b/hacks/check-configs.pl index 7cc60b4..0922e7d 100755 --- a/hacks/check-configs.pl +++ b/hacks/check-configs.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# Copyright © 2008-2018 Jamie Zawinski +# Copyright © 2008-2021 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 @@ -21,7 +21,7 @@ use diagnostics; use strict; my $progname = $0; $progname =~ s@.*/@@g; -my ($version) = ('$Revision: 1.28 $' =~ m/\s(\d[.\d]+)\s/s); +my ($version) = ('$Revision: 1.36 $' =~ m/\s(\d[.\d]+)\s/s); my $verbose = 0; my $debug_p = 0; @@ -80,7 +80,7 @@ sub parse_src($) { $file = "../hacks/$ofile" unless (-f $file); $file = "../hacks/glx/$ofile" unless (-f $file); my $body = ''; - open (my $in, '<', $file) || error ("$ofile: $!"); + open (my $in, '<:utf8', $file) || error ("$ofile: $!"); while (<$in>) { $body .= $_; } close $in; $file =~ s@^.*/@@; @@ -103,6 +103,7 @@ sub parse_src($) { s/^\s*//s; s/\s*$//s; next if m/^0?$/s; + s/"[ \t]*\n\s*"//s; # string-append continuation lines my ($key, $val) = m@^\"([^:\s]+)\s*:\s*(.*?)\s*\"$@; print STDERR "$progname: $file: unparsable: $_\n" unless $key; $key =~ s/^[.*]//s; @@ -221,7 +222,7 @@ sub parse_xml($$$) { my $ofile = $file; $file = "../hacks/$ofile" unless (-f $file); my $body = ''; - open (my $in, '<', $file) || error ("$ofile: $!"); + open (my $in, '<:utf8', $file) || error ("$ofile: $!"); while (<$in>) { $body .= $_; } close $in; $file =~ s@^.*/@@; @@ -440,11 +441,12 @@ sub parse_xml($$$) { } -sub check_config($) { - my ($saver) = @_; +sub check_config($$) { + my ($saver, $android_p) = @_; # kludge return 0 if ($saver =~ m/(-helper)$/); + return 0 if ($saver =~ m/(xscreensaver-)/); my ($src_opts, $switchmap) = parse_src ($saver); my ($saver_title, $gl_p, $xml_opts, $widgets) = @@ -461,6 +463,8 @@ sub check_config($) { if ($verbose > 1); } elsif (!defined($sval)) { print STDERR "$progname: $saver: $res: not in source\n"; + } elsif ($res eq 'progclass') { + # Ignore this one } elsif ($claim !~ m/ = %$/s && ($compare eq '!=' ? $sval eq $xval @@ -477,7 +481,7 @@ sub check_config($) { # the XCode target name. # my $obd = "../OSX/build/Debug"; - if (-d $obd) { + if (!$android_p && -d $obd) { my $progclass = $src_opts->{progclass}; $progclass = 'DNAlogo' if ($progclass eq 'DNALogo'); my $f = (glob("$obd/$progclass.saver*"))[0]; @@ -577,7 +581,7 @@ sub write_file_if_changed($$;$) { my ($outfile, $body, $suffix_msg) = @_; my $file_tmp = "$outfile.tmp"; - open (my $out, '>', $file_tmp) || error ("$file_tmp: $!"); + open (my $out, '>:utf8', $file_tmp) || error ("$file_tmp: $!"); (print $out $body) || error ("$file_tmp: $!"); close $out || error ("$file_tmp: $!"); rename_or_delete ($outfile, $file_tmp, $suffix_msg); @@ -589,7 +593,7 @@ sub write_file_if_changed($$;$) { sub read_template($$) { my ($file, $subs) = @_; my $body = ''; - open (my $in, '<', $file) || error ("$file: $!"); + open (my $in, '<:utf8', $file) || error ("$file: $!"); while (<$in>) { $body .= $_; } close $in; @@ -680,6 +684,8 @@ sub munge_blurb($$$$) { "\n" . $desc . "\n"); + utf8::decode($desc1); # Pack UTF-8 into wide chars. + utf8::decode($desc2); # unwrap lines, but only when it's obviously ok: leave blank lines, # and don't unwrap if that would compress leading whitespace on a line. @@ -719,7 +725,7 @@ sub build_android(@) { { my $file = "../utils/version.h"; my $body = ''; - open (my $in, '<', $file) || error ("$file: $!"); + open (my $in, '<:utf8', $file) || error ("$file: $!"); while (<$in>) { $body .= $_; } close $in; ($vers) = ($body =~ m@ (\d+\.[0-9a-z]+) @s); @@ -735,16 +741,16 @@ sub build_android(@) { my ($saver_title, $gl_p, $xml_opts, $widgets) = parse_xml ($saver, $switchmap, $src_opts); - my $saver_class = "${saver_title}"; - $saver_class =~ s/\s+//gs; - $saver_class =~ s/^([a-z])/\U$1/gs; # upcase first letter + # The Android daydream list sorts the $saver_title strings with strcmp, + # meaning capitals come before lower case, and "ö" comes after "z". + # It doesn't matter how we order them in the XML files. + $saver_title =~ s/^([a-z])/\U$1/gs; # upcase first letter - $saver_title =~ s/(.[a-z])([A-Z\d])/$1 $2/gs; # Spaces in InterCaps - $saver_title =~ s/^(GL|RD)[- ]?(.)/$1 \U$2/gs; # Space after "GL" - $saver_title =~ s/^Apple ?2$/Apple ][/gs; # "Apple ][" - $saver_title =~ s/(m)oe(bius)/$1ö$2/gsi; # ö - $saver_title =~ s/(moir)e/$1é/gsi; # é - $saver_title =~ s/^([a-z])/\U$1/s; # "M6502" for sorting + # This is a Java class name, so it could just be $saver, but it turns + # out that unicrud is allowed in class names, so why not. + my $saver_class = $saver_title; + $saver_class =~ s/\]\[/2/gs; + $saver_class =~ s/[-_\s]//gs; my $settings = ''; @@ -1091,8 +1097,18 @@ sub build_android(@) { " android:versionCode=\"$versb\"\n" . " android:versionName=\"$vers\">\n" . - " \n" . + # Without this shit we get "APP_PLATFORM android-18 is higher + # than android:minSdkVersion 1 in AndroidManifest.xml" + # + # But with it "lintVitalRelease" complains with: + # "The minSdk version should not be declared in the android + # manifest file. You can move the version from the manifest to + # the defaultConfig in the build.gradle file." + # + # That crap is already in android/xscreensaver/build.gradle. + # + # " \n" . " \n" . @@ -1216,6 +1232,9 @@ sub usage() { } sub main() { + binmode (STDOUT, ':utf8'); + binmode (STDERR, ':utf8'); + my $android_p = 0; my @files = (); while ($#ARGV >= 0) { @@ -1232,7 +1251,7 @@ sub main() { usage unless ($#files >= 0); my $failures = 0; foreach my $file (@files) { - $failures += check_config ($file); + $failures += check_config ($file, $android_p); } build_android (@files) if ($android_p); diff --git a/hacks/cloudlife.man b/hacks/cloudlife.man index 35eae12..c94d77b 100644 --- a/hacks/cloudlife.man +++ b/hacks/cloudlife.man @@ -1,6 +1,6 @@ .TH XScreenSaver 6 "20-May-2003" "X Version 11" .SH NAME -cloudlife - a cellular automaton based on Conway's Life +cloudlife \- a cellular automaton based on Conway's Life .SH SYNOPSIS .B cloudlife [\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-cycle-delay \fImicroseconds\fP] [\-cycle-colors \fIinteger\fP][\-cell-size \fIinteger\fP] [\-initial-density \fIinteger\fP] [\-max-age \fIinteger\fP] diff --git a/hacks/compass.c b/hacks/compass.c index 1678ca9..e321d70 100644 --- a/hacks/compass.c +++ b/hacks/compass.c @@ -16,7 +16,6 @@ # include "xdbe.h" #endif /* HAVE_DOUBLE_BUFFER_EXTENSION */ -#define countof(x) (sizeof(x)/sizeof(*(x))) #define ABS(x) ((x)<0?-(x):(x)) #define MAX(x,y) ((x)<(y)?(y):(x)) #define MIN(x,y) ((x)>(y)?(y):(x)) diff --git a/hacks/compass.man b/hacks/compass.man index 8d7cc7e..13ffde4 100644 --- a/hacks/compass.man +++ b/hacks/compass.man @@ -1,6 +1,6 @@ .TH XScreenSaver 1 "" "X Version 11" .SH NAME -compass - draws a spinning compass. +compass \- draws a spinning compass. .SH SYNOPSIS .B compass [\-display \fIhost:display.screen\fP] diff --git a/hacks/config/README b/hacks/config/README index 5ba2e7b..b031323 100644 --- a/hacks/config/README +++ b/hacks/config/README @@ -4,8 +4,8 @@ a screen saver and locker for the X window system by Jamie Zawinski - version 5.44 - 20-Mar-2020 + version 6.00 + 01-Apr-2021 https://www.jwz.org/xscreensaver/ @@ -13,8 +13,7 @@ This directory contains XML files that describe each of the screenhacks; the per-hack user interface is constructed based on the things in these -files. The files are loaded at run-time by xscreensaver-demo (also -known as "the Control Center screensaver properties capplet".) +files. The files are loaded at run-time by "xscreensaver-settings". The tags and parameters used here are: @@ -76,6 +75,7 @@ The tags and parameters used here are: _high-label="RIGHT LABEL" low="MIN VALUE" high="MAX VALUE" + step="MODULUS" default="DEFAULT VALUE" [ convert="invert" ] /> @@ -256,6 +256,9 @@ The tags and parameters used here are: ----------------------------------------------------------------------- +Those tags and parameters whose names begin with an underscore contain +strings that are translatable via the ../../po/ directory. + If you are DTD-minded, you may also find the included files "xss.dtd" and "xss.xsd" useful. diff --git a/hacks/config/antinspect.xml b/hacks/config/antinspect.xml index ee4ce7b..9878e6b 100644 --- a/hacks/config/antinspect.xml +++ b/hacks/config/antinspect.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/antmaze.xml b/hacks/config/antmaze.xml index 1580205..3344c24 100644 --- a/hacks/config/antmaze.xml +++ b/hacks/config/antmaze.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/antspotlight.xml b/hacks/config/antspotlight.xml index fe78174..3df385c 100644 --- a/hacks/config/antspotlight.xml +++ b/hacks/config/antspotlight.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/apple2.xml b/hacks/config/apple2.xml index 4084bc9..dcfa241 100644 --- a/hacks/config/apple2.xml +++ b/hacks/config/apple2.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/beats.xml b/hacks/config/beats.xml new file mode 100644 index 0000000..581ebf9 --- /dev/null +++ b/hacks/config/beats.xml @@ -0,0 +1,42 @@ + + + + + + + diff --git a/hacks/config/binaryring.xml b/hacks/config/binaryring.xml index a96026c..479d40e 100644 --- a/hacks/config/binaryring.xml +++ b/hacks/config/binaryring.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/blinkbox.xml b/hacks/config/blinkbox.xml index d457df2..0f84baf 100644 --- a/hacks/config/blinkbox.xml +++ b/hacks/config/blinkbox.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/blitspin.xml b/hacks/config/blitspin.xml index df53aa7..34b182f 100644 --- a/hacks/config/blitspin.xml +++ b/hacks/config/blitspin.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/blocktube.xml b/hacks/config/blocktube.xml index 85f88f9..87d91c1 100644 --- a/hacks/config/blocktube.xml +++ b/hacks/config/blocktube.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/bouncingcow.xml b/hacks/config/bouncingcow.xml index abbb0cb..48a1aed 100644 --- a/hacks/config/bouncingcow.xml +++ b/hacks/config/bouncingcow.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/boxfit.xml b/hacks/config/boxfit.xml index a297e13..b978a5d 100644 --- a/hacks/config/boxfit.xml +++ b/hacks/config/boxfit.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/bsod.xml b/hacks/config/bsod.xml index 6a3ac4a..aa3dca1 100644 --- a/hacks/config/bsod.xml +++ b/hacks/config/bsod.xml @@ -10,7 +10,7 @@ - +
@@ -19,49 +19,54 @@ - - + + - - + + + + - + + - + - - + - - + + - + - - + + + + +
diff --git a/hacks/config/bubble3d.xml b/hacks/config/bubble3d.xml index 985c394..bcc0f4b 100644 --- a/hacks/config/bubble3d.xml +++ b/hacks/config/bubble3d.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/cage.xml b/hacks/config/cage.xml index 6ede618..6fedb3c 100644 --- a/hacks/config/cage.xml +++ b/hacks/config/cage.xml @@ -1,4 +1,4 @@ - + @@ -17,7 +17,7 @@ <_description> -Escher's "Impossible Cage", a 3d analog of a moebius +Escher's "Impossible Cage", a 3d analog of a möbius strip, and rotates it in three dimensions. https://en.wikipedia.org/wiki/Maurits_Cornelis_Escher diff --git a/hacks/config/ccurve.xml b/hacks/config/ccurve.xml index e15138f..84a6121 100644 --- a/hacks/config/ccurve.xml +++ b/hacks/config/ccurve.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/cityflow.xml b/hacks/config/cityflow.xml index 61f67d9..4a94c35 100644 --- a/hacks/config/cityflow.xml +++ b/hacks/config/cityflow.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/cloudlife.xml b/hacks/config/cloudlife.xml index 767a8ea..92ea6c3 100644 --- a/hacks/config/cloudlife.xml +++ b/hacks/config/cloudlife.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/co____9.xml b/hacks/config/co____9.xml new file mode 100644 index 0000000..f1dc4bb --- /dev/null +++ b/hacks/config/co____9.xml @@ -0,0 +1,38 @@ + + + + + + + diff --git a/hacks/config/companioncube.xml b/hacks/config/companioncube.xml index 128edc5..2a59f3a 100644 --- a/hacks/config/companioncube.xml +++ b/hacks/config/companioncube.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/covid19.xml b/hacks/config/covid19.xml new file mode 100644 index 0000000..96f395b --- /dev/null +++ b/hacks/config/covid19.xml @@ -0,0 +1,38 @@ + + + + + + + diff --git a/hacks/config/cube21.xml b/hacks/config/cube21.xml index f16d7fd..17082db 100644 --- a/hacks/config/cube21.xml +++ b/hacks/config/cube21.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/cubestack.xml b/hacks/config/cubestack.xml index 68c550e..9dcc3aa 100644 --- a/hacks/config/cubestack.xml +++ b/hacks/config/cubestack.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/cubestorm.xml b/hacks/config/cubestorm.xml index 533d710..366bb89 100644 --- a/hacks/config/cubestorm.xml +++ b/hacks/config/cubestorm.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/cubetwist.xml b/hacks/config/cubetwist.xml index 00f54b8..ced60ec 100644 --- a/hacks/config/cubetwist.xml +++ b/hacks/config/cubetwist.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/cubicgrid.xml b/hacks/config/cubicgrid.xml index b8a90a8..10bdf80 100644 --- a/hacks/config/cubicgrid.xml +++ b/hacks/config/cubicgrid.xml @@ -1,6 +1,6 @@ - + @@ -21,6 +21,12 @@ + + <_description> diff --git a/hacks/config/cwaves.xml b/hacks/config/cwaves.xml index b18f365..3e77b42 100644 --- a/hacks/config/cwaves.xml +++ b/hacks/config/cwaves.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/dangerball.xml b/hacks/config/dangerball.xml index 12bbac5..51d9fe1 100644 --- a/hacks/config/dangerball.xml +++ b/hacks/config/dangerball.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/decayscreen.xml b/hacks/config/decayscreen.xml index 93d85b3..266d8d6 100644 --- a/hacks/config/decayscreen.xml +++ b/hacks/config/decayscreen.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/deepstars.xml b/hacks/config/deepstars.xml index d690d2d..3186376 100644 --- a/hacks/config/deepstars.xml +++ b/hacks/config/deepstars.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/dymaxionmap.xml b/hacks/config/dymaxionmap.xml index 6f846c7..1cc027a 100644 --- a/hacks/config/dymaxionmap.xml +++ b/hacks/config/dymaxionmap.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/energystream.xml b/hacks/config/energystream.xml index a3c034f..c9f8966 100644 --- a/hacks/config/energystream.xml +++ b/hacks/config/energystream.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/epicycle.xml b/hacks/config/epicycle.xml index 0b56922..18b23df 100644 --- a/hacks/config/epicycle.xml +++ b/hacks/config/epicycle.xml @@ -50,6 +50,17 @@ This draws the path traced out by a point on the edge of a circle. That circle rotates around a point on the rim of another circle, and so on, several times. +The geometry of epicycles was perfected by Hipparchus of Rhodes at some time +around 125 B.C., 185 years after the birth of Aristarchus of Samos, the +inventor of the heliocentric universe model. Hipparchus applied epicycles to +the Sun and the Moon. Ptolemy of Alexandria went on to apply them to what was +then the known universe, at around 150 A.D. Copernicus went on to apply them +to the heliocentric model at the beginning of the sixteenth century. Johannes +Kepler discovered that the planets actually move in elliptical orbits in about +1602. The inverse-square law of gravity was suggested by Boulliau in 1645. +Isaac Newton's Principia Mathematica was published in 1687, and proved that +Kepler's laws derived from Newtonian gravitation. + https://en.wikipedia.org/wiki/Deferent_and_epicycle Written by James Youngman; 1998. diff --git a/hacks/config/etruscanvenus.xml b/hacks/config/etruscanvenus.xml index 090b102..d4bff27 100644 --- a/hacks/config/etruscanvenus.xml +++ b/hacks/config/etruscanvenus.xml @@ -1,6 +1,6 @@ - +