Impressive-0.11.1/0000755000175000017500000000000012621154560013270 5ustar martinmartinImpressive-0.11.1/impressive.html0000644000175000017500000023577312621154560016365 0ustar martinmartin Impressive Documentation

Impressive Documentation

http://impressive.sourceforge.net/
Version: 0.11.0 – 0.11.1
Author: Martin J. Fiedler
Last updated: 2014-12-21

Table Of Contents

  1. Description
  2. Installation
  3. Command Line Parameters
  4. Usage
  5. Control Configuration
  6. Info Scripts
  7. Other Useful Information

Description

Impressive is a simple presentation program that displays slideshows of image files (JPEG, PNG, TIFF and BMP) or PDF documents. Rendering is done via OpenGL, which allows for some “eye candy” effects.

A somewhat-modern GPU (graphics processing unit) supporting OpenGL 2.0 or OpenGL ES 2.0 and appropriate drivers is required to run Impressive.

Installation

There are three basic ways to get an Impressive installation on your computer. The following section will guide you through each of these methods.

The easy method: use a pre-built package

For Windows systems, a ZIP file with a pre-built version of Impressive and all required external tools can be downloaded from the web site. There is no real installation procedure – the ZIP file can be extracted into any folder. One of the extracted file is called impressive.exe. PDF files or directories containing images can simply dropped onto this file in Explorer to run a presentation with default settings.
A more comfortable method is installing Impressive in the »Send To« menu that's part of each file's context menu. This is done by opening the location shell:sendto in Explorer and creating a shortcut to impressive.exe there. After that, a presentation can be started by right-clicking a PDF file and selecting »Send To → Impressive«.

Most GNU/Linux distributions offer Impressive as part of their standard package repositories, among them Debian, Ubuntu, Fedora, OpenSUSE and Arch Linux. The package is typically called impressive and will install all necessary dependencies.

On Mac OS X, there is a py-impressive package in the MacPorts repositories, but at the time of writing, it's extremely outdated and thus not recommended.

In general, the easy method of installing the Windows ZIP or distribution package is simple and convenient, but it has caveats: Releases of Impressive only happen in long and irregular intervals, and the package maintainers may be a few versions behind. Recent features and bugfixes will thus not be available.

Using the source code release

Another way to get Impressive is downloading the platform-independent source code version. The most important file in this archive is impressive.py, which contains all the code of Impressive and can be run like any executable on Unix-like systems. However, the following external libraries and utilities have to be installed as well for Impressive to work:

On Unix-like systems, these dependencies are typically available in the major distributions' package repositories and can be installed easily with the package managers, e.g.:

Using the latest version from SVN

The source code of Impressive is maintained in a Subversion (SVN) repository. For users that want the newest version or want to help with debugging or developing Impressive, it is recommended to check out this repository:
svn co http://svn.emphy.de/impressive/trunk/impressive
Regarding external dependencies, the section above applies as well; in addition, Subversion (whose package is usually called svn or subversion) is obviously required too.

After checking out the sources, the impressive.py program will still be missing. Instead, the main program is called impressive_dev.py and is functionally equivalent; it pulls the actual source files from the src subdirectory and runs them. To get a real stand-alone impressive.py file for redistribution (or for putting it e.g. into /usr/local so it can be run from everywhere), it needs to be generated using either make (if GNU Make is installed) or python compile.py.

Command Line Parameters

When used from the command line (some terminal and shell in Unix, cmd.exe on Windows), Impressive accepts a range of command-line options in GNU getopt syntax.

The following options are available (in alphabetical order):

-a <seconds> or --auto <seconds>
Automatically advance to the next page after the given number of seconds. Together with the -w option (described below), this can be used to create automatic slideshows.
-A <X>:<Y> or --aspect <X>:<Y>
Specifies the display aspect ratio. Normally, Impressive assumes that the pixel aspect ratio is 1:1 (square pixels), regardless of the display resolution that has been set up. If a resolution has been selected that doesn't match the display's aspect ratio, the screen will be distorted. To overcome this, this option may be used to manually specify the display aspect ratio, e.g. »-A 16:9«. Note that this option has no effect if the MuPDF backend is used for rendering.
-b or --noback
Disables background rendering. By default, Impressive will pre-render all pages in a separate background thread while the presentation runs. If this option is specified, it will instead render all pages immediately on startup. This option has no effect if caching is disabled (--cache none, see below).
-B <ms> or --boxfade <ms>
Sets the duration (in milliseconds) of the highlight box fade-in/fade-out animation. Default value: 100 ms.
-c <mode> or --cache <mode>
Specifies the page cache mode to use. Valid options are:
none
Disables page caching altogether, only the current and the following page will be kept in RAM. Jumping between pages will be very slow, because Impressive will need to render the requested pages on the fly. In addition, the overview page won't be complete until every page has been shown at least once.
memory
Caches all page images in memory. This is the fastest method, but it requires very large amounts of memory (about 3 MiB per page at 1024x768 resolution).
compressed or z
Caches all page images in memory as well, but in compressed form. This will be a little slower than memory mode, but on pages with uniform backgrounds, this will easily reduce the required amount of RAM by a factor of 20.
disk
Like memory, but uses a temporary file rather than memory for storage. This is the default.
persistent
Uses a permanent cache file for caching. This file will not be deleted when Impressive quits and will be reused on subsequent invocations. The default name for the cache file is derived like the names for Info Scripts (see below for an explanation), but with a .cache file name extension instead of .info. This method is a little bit slower than disk mode, but the time span until the overview page is fully populated will be significantly decreased if Impressive is ran again with the same input files and options.
The mode name may be abbreviated at will, down to one character. Thus, --cache persistent, -c persist and even -cp are all synonyms.
-C <filename>[:<X>,<Y>] or --cursor <filename>[:<X>,<Y>]
This option can be used to specify an image that shall be used as a (software) mouse cursor instead of the normal (hardware) one. It can either be a name of an image file (typically a transparent .png) or one of the special values »-« (dash) or »default«, both of which select a built-in cursor image. On platforms that do not support a hardware cursor, this default cursor will also be used as a default if this option is not used.
If the name of an external file is specified, the position of the hotspot (the pixel inside the cursor where the actual mouse position is located) can be specified as well, for example: --cursor mycursor.png:2,4.
--clock
If this option is enabled, the current time will be shown instead of the elapsed time if time display is activated (with the T key in the default control configuration). Compatible with the -M option.
--control-help
This option will output a short help screen of how the control configuration (keyboard and mouse bindings) work, along with a list of all recognized events and actions and a dump of the current bindings (which is the default configuration if no other -e/--bind or -E/--controls options precede this option). After that, Impressive will exit; no presentation will be started.
-d <time> or --duration <time>
Specifies the expected run time of the presentation. The time parameter can be either a number of seconds or a human-readable time like 1:23 (1 minute and 23 seconds), 4:56h (4 hours and 56 minutes), 3m45s (3 minutes and 45 seconds), 5m (5 minutes) or 1:23:45 (1 hour, 23 minutes and 45 seconds).
If an expected duration is specified, Impressive will show a semi-transparent green progress bar at the lower edge of the screen, indicating how much time has already passed. If the time is up, the bar will occupy the whole edge and fade to yellow (at 125% of the expected time) to red (at 150% or more).
-D <ms> or --mousedelay <ms>
Sets the time (in milliseconds) the mouse cursor is shown in fullscreen mode if it is not moved. There are two special values: 0 (zero) shows the mouse cursor permanently, 1 (one) hides it completely. The default value is 3000 ms.
--darkness <percentage>
Specifies how much the screen shall become darker when using highlight boxes or spotlight mode. The value is specified in percent, with 25 being the default. A value of zero would mean no darkening at all (the screen would just be blurred slightly, and desaturated if the graphics hardware supports it), and a value of 100 would make everything but the highlighted parts of the screen black.
-e <bindings> or --bind <bindings>
Configures keyboard or mouse bindings. For the syntax of the argument, refer to the Control Configuration section of the manual.
-E <filename> or --controls <filename>
Loads a configuration file for keyboard and mouse bindings. For the syntax of these files, refer to the Control Configuration section of the manual.
--evtest
If this option is specified, Impressive will not start a normal presentation, but instead enter the so-called »Event Test Mode« after the display has been initialized. In this mode, Impressive will simply capture all keyboard and mouse events and display the name of the last event on the screen. In addition, events will be logged to standard output. This mode helps with determining the event names for each key when creating a custom control configuration (see the Control Configuration section).
-f
Sets the window/fullscreen mode Impressive shall start up with. This option can be specified multiple times; each times it is found, the next of the three options is selected, in the follwing order:Each of these modes has a corresponding long option that enables it directly (--fullscreen, --windowed and --fake-fullscreen).
Note: On Windows systems, toggling fullscreen mode while Impressive runs does not work. So, the command-line options are the only way to set whether fullscreen mode shall be used or not.
--fullscreen
Starts Impressive in fullscreen mode (the default). See the discussion of the -f option for details.
--fake-fullscreen
Starts Impressive in »fake fullscreen« mode. See the discussion of the -f option for details.
-F <file> or --font <file>
Impressive uses some kind of text OSD to overlay the current page number and title (if available) on the overview page. This option can be used to specify a TrueType font file (.ttf) to use for the OSD. If the path specified doesn't directly point to a useable font file, Impressive will try to search the system font directories. On Unix-like systems, it assumes that all fonts are stored below /usr/share/fonts, /usr/local/share/fonts or /usr/X11R6/lib/X11/fonts/TTF for this purpose (the latter one is useful for Mac OS X systems specifically). If this option is not specified, Verdana.ttf will be used as a default if the operating system is Windows, or any of DejaVuSans.ttf or Vera.ttf (the typical file name of Bitstream Vera Sans) if it's not.
-g <width>x<height>[+<posX>+<posY>] or --geometry <width>x<height>[+<posX>+<posY>]
Sets the screen size or resolution Impressive shall use (in pixels). On Win32 platforms and Unix platforms with xrandrinstalled, the default screen size for fullscreen mode is the current screen resolution; on other platforms, Impressive uses the highest resolution available to the graphics system. If a standard resolution cannot be determined, the default is 1024x768 pixels. This is also the default for windowed mode.
Furthermore, if the additional parameters posX and posY are present, they specify the position of the upper-left corner of the window (relative to the upper-left corner of the desktop), in pixels, for windowed and fake-fullscreen mode. The values are ignored in »true« fullscreen mode.
-G <gamma>[:<blacklevel>] or --gamma <gamma>[:<blacklevel>]
Sets up the startup gamma and (optional) black level value. The black level is the original image's intensity level (0...254) that is to be mapped to black in Impressive's output. Note that gamma and black level adjustments may be unavailable or constrained on some systems.
-h or --help
If this option is specified, Impressive writes a short command line help screen to standard output and does not start a presentation.
-H or --half-screen
This option makes Impressive show the overview page and OSD elements on the right half of the screen only. The overview page will only show the left half of the slides as previews. Using a multi-monitor setup with a wide virtual screen and specially crafted slides (e.g. those that can be generated with LaTeX's beamer class), this makes it possible to have presenter's notes on the second screen.
Note that transitions and animations are still operating on the whole screen, making some of them (like PagePeel) look ugly. Impressive also disables the overview zoom animation in half-screen mode; it can be re-enabled by explicitly setting it to another value with a later command line option (--zoomtime).
Another limitation is that the allocation of the screen halves (slides left, overview right) is fixed.
-i <page> or --initialpage <page>
Specifies the page number to start with. The default value is 1 (start with the first page). If another value is specified, the page shown by Impressive right after initialization is not the first one of the PDF or image list. Additionally, pre-rendering (if enabled) will also start at the specified page.
-I <filename> or --script <filename>
Overrides automatic derivation of the info script filename and specifies a script file directly.
--invert
This option makes Impressive invert the colors of each page, turning black to white and vice-versa. Note that it is a full RGB inversion, so it will, for example, turn dark green to light purple (and vice-versa) too.
-k or --auto-progress
This option makes Impressive show a progress bar at the bottom of the screen, visualizing the timeout on pages that have one (either specified as a page property or using the --auto command-line option). Nothing is done on pages that don't have a timeout.
The progress bar shown by this option takes precedence over the --duration or --page-progress bars: If one of these options is specified as well, the timeout progress bar will be shown on pages with a timeout, and the other progress bar will be shown on pages without one.
-l or --listtrans
If this option is specified, Impressive writes a list of all available transition classes to standard output and does not start a presentation. Transitions that are enabled by default are marked with a star (*) left of the class name.
-L <spec> or --layout <spec>
Specifies the OSD layout. Read below for an explanation of this option
--min-box-size <pixels>
This option sets the minimum size of a highlight box, in pixels. Boxes that are not this many pixels wide and high are rejected in order to prevent accidental creation of highlight boxes. The default value for this is 30 pixels.
-M or --minutes
If this option is set, Impressive will show the on-screen timer (activated with the [T] key) only with 1 minute resolution. By default, it will show a timer with 1 second resolution.
--noblur
By default, Impressive uses a fragment shader to blur and desaturate the image when in highlight box or spotlight mode. This is usually the faster and nicer-looking method; however, some very old hardware implementations can't deal with that shader and fall back to an unusably slow software implementation. Impressive tries to detect scenarios where this would happen and automatically falls back to a different implementation.
There might be situations where this machanism fails and Impressive tries to use the non-functional shader anyway. In these cases, the --noblur option can be used to enforce the fallback implementation.
--noclicks
If this option is enabled, switching to the previous or next page with the left and right mouse buttons is deactivated. The keyboard shortcuts are unaffected from this.
Note that this option only works as intended when the default controls are used. If the -e/--bind or -E/--controls options have been used, --noclicks might not have the intended effect.
--nologo
This option disables the Impressive logo and version number display. Instead, the loading screen will be just black or, if background rendering is disabled, only the progress bar will be visible.
-o <directory> or --output <directory>
Do not display the presentation, but render it into a series of PNG image files inside the specified directory. The images will be generated in the current resolution as specified by the -g option. This option is useful if the presentation is to be given on on a foreign PC with an old, broken or otherwise problematic Xpdf installation: By generating images of the PDF pages, is is made sure that no rendering bugs will happen on the target system.
-O <mode> or --autooverview <mode>
Enables or disables automatic derivation of whether a page shall or shall not be shown on the overview page. This feature is based on the fact that some LaTeX presentation packages tag all pages with a title (that can be read by Impressive with the help of pdftk), except those that contain multiple reveal steps.
The following modes are available:
off
Disables automatic overview mode. All pages will be shown on the overview page by default. This is also the default setting.
first
All pages with a PDF title will be shown on the overview page. The purpose is to show the initial state of multi-step slides on the overview page.
last
All pages before a page with a PDF title will be shown on the overview page. The purpose is to show the final state of multi-step slides on the overview page.
Again, the mode may be abbreviated arbitrarily, down to one character, just like with the -c option above..
-p <start>-<end> or --pages <start>-<end>
Using this option, the range of the page displayed can be narrowed down. The presentation will start at the first page in the range. All pages outside of the range will not be shown on the overview page and will not be cached. However, they can be entered manually when cycling through the presentation. Due to the fact that these pages are uncached, preparation of the display will take considerably longer.
-P <path> or --gspath <path>
This option can be used to override the Xpdf / GhostScript path autodetection. The full path to the executable of either GhostScript (gs or gs.exe) or Xpdf's pdftoppm utility must be specified.
-q or --page-progress
If this option is enabled, Impressive will show a light-blue semi-transparent progress bar at the lower edge of the screen that shows the position inside the presentation, i.e. the relation between the current page number and the total number of pages. Note that this progress bar will not be shown if the duration progress bar (-d option) is also enabled.
-Q or --autoquit
If this option is specified, Impressive quits automatically when trying to navigate to the page after the last page or the page before the first page.
This option does not have any effect if --wrap is used.
-r <n> or --rotate <n>
Display all pages rotated by n×90 degrees clockwise. Try -r 1 or -r 3 if there are problems with PDFs generated by LaTeX on some Xpdf or GhostScript versions.
-s or --scale (image input only)
If a directory with image files is used as input, Impressive will scale down images that are too big for the screen. But by default, it will not scale up smaller images to fit the screen; it will leave a black border instead. This option overrides this setting and enables upscaling of smaller images.
-s or --supersample (PDF input only)
This switch enables antialiasing by 4x supersampling instead of the normal multisampling method used by Xpdf or GhostScript. While this usually degrades both visual quality and performance, it may be necessary for circumventing white strips or moiré-like patterns in gradients.
-S <pixels> or --fontsize <pixels>
This option sets the size, in pixels, of the OSD font. The default value is 14.
--spot-radius <pixels>
This option sets the initial radius of the spotlight, in pixels. The default value is 64.
-t <ms> or --transition <trans1[,trans2...]>
Using this switch, the set of transitions Impressive will randomly draw at page changes can be specified. If only one transition class is specified, this class will be used for all pages that do not have another transition explicitly assigned in their page properties. Multiple transitions have to be separated by commas; they will be used in random order. The -l option can be used to get a list of available transitions.
-T <ms> or --transtime <ms>
Sets the duration (in milliseconds) of page transitions. 0 (zero) disables transitions altogether. Default value: 1000 ms.
--tracking
This option enables time tracking mode. In this mode, a report of all pages visited with their display duration, enter and leave times will be written to standard output. This can be very useful when preparing presentations.
-u <seconds> or --poll <seconds>
If this option is specified, the source file or directory will be checked for changes regularly. If a change in the input PDF file or any of the image files in the input image directory is detected, the page cache will be flushed and the current page as well as the info script will be reloaded. The current page's transition will be shown between the old and the new version of the page.
The new PDF file must have at least as much pages as the old one; also, it should have the same aspect ratio. If the input is a directory, image files must not have disappeared.
-v or --verbose
This option makes Impressive more verbose, i.e. it will print slightly more informational messages than usual.
-V <pixels> or --overscan <pixels>
PDF files often contain tiny amounts of white borders around the edges which look bad in screen presentations. To eliminate this problem, Impressive uses »overscan«: PDF files will not be rendered to fit the screen size exactly, but they will be rendered a bit larger so that the (possibly broken) borders can be cropped off. The amount of overscan, in screen pixels, can be set with this option. The default value is 3 pixels, which should remove borders in most presentations at most common screen resolutions without cropping the pages too much.
-w or --wrap
If this option is set, Impressive will “wrap” over to the first page after the last page. In other words, advancing to the next page at the end of the presentation will restart the whole presentation.
-W or --nowheel
By default, it is possible to change pages using the mouse wheel. This option disables this behavior, which can be useful to prevent spurious page changes if the mouse wheel is likely to be moved by accident.
Note that this option only works as intended when the default controls are used. If the -e/--bind or -E/--controls options have been used, --noclicks might not have the intended effect.
--windowed
Starts Impressive in windowed mode. See the discussion of the -f option for details.
-x or --fade
This option enables a smooth fade-in effect at the start of the presentation and a fade-out effect just before Impressive quits.
-X or --shuffle
If this option is enabled, the input files will be shuffled into random order before starting the presentation. The individual pages of PDF input files will stay in their original order, though, so this option is mainly useful for image presentations.
-y or --auto-auto
This option can be used together with --duration to have Impressive compute a page timeout (as with the --auto option) automatically. This results in a presentation that runs automatically, displaying each slide for the same time, so that the desired total duration will be reached (almost) exactly.
-z <factor> or --zoom <factor>
Sets the zoom factor that is used in zoom mode. It must be an integer value of at least 2. The default value is 2. Note that it might not be possible to get high-quality zooming for large zoom factors due to hardware restrictions. Also, note that if the hardware doesn't support non-power-of-two textures or if the -e option is used, the number must be a power of two.
-Z <ms> or --zoomtime <ms>
Sets the duration (in milliseconds) of the overview page zoom-in/zoom-out effects. Default value: 250 ms.
--cachefile <filename>
Activates persistent cache mode and specifies the name of the cache file to use.

Following the options, the input file name(s) must be specified. Recognized file types are PDF, JPEG, PNG, TIFF, BMP and PGM/PPM. If the name of a directory is put on the command line, all recognized image files (no PDF files!) in this directory will be played in alphanumeric order (case-insensitive).

In addition, Impressive can use a text file containing a list of files or directories to show: This text file must contain at most one file name per line; every character after a hash sign (#) is treated as a comment and will be ignored. If such a comment is put on the same line as an image file name, it will be used as the page's title. List file names must be prefixed with an at sign (@) on the command line, e.g. impressive @my_list_file.

Impressive will also expand wild-card characters (* and ?) if this isn't already done by the shell, but apart from that, it will not reorder the arguments. Thus, it will show the documents in the order specified at the command line.

Layout options

The OSD layout option (-L/--layout) accepts a string with comma-separated key=value pairs. The following keywords are recognized:

alpha
The opacity of the OSD text, either as a floating-point value between 0 and 1 or a percentage between 2 and 100.
margin
The distance (in pixels) of the OSD text to the screen borders.
time
The position of the timer.
title
The position of the page title in overview mode.
page
The position of the page number in overview mode.
status
The position of the status line.

The position specifications are composed by one character that indicates whether the text shall be displayed at the top (T) or bottom (B) edge of the screen and one character that indicates whether it shall appear on the left (L), on the right (R) or centered (C).

For example, the default OSD layout equals the following option string:
-L margin=16,alpha=1,time=TR,title=BL,page=BR,status=TL

Examples

The following examples illustrate some typical command lines. They assume that Impressive can be run by simply typing »impressive« on the command line. Depending on how Impressive is installed, this has to be substituted with the actual way to run Impressive (e.g. »python ~/impressive/impressive_dev.py« for a fresh SVN checkout). Furthermore, the file »demo.pdf« is used as the document to show here; obviously this has to be replaced by the path to the actual PDF file too.

In the simplest case, Impressive is run directly with the name of the file to show and no further parameters. This will start a full-screen presentation with all settings at their defaults:
impressive demo.pdf

To just quickly check a slide deck, it might make sense to run Impressive in a small window and not full-screen. This can be done with something like
impressive -f -g 800x600 demo.pdf

Impressive can also be used in digital signage scenarios, like displays in shop windows with a permanent slideshow. This can be achieved by having Impressive advance to the next page automatically after a specified time (e.g. 10 seconds) and re-start the presentation from the start after the last slide:
impressive -a 10 -w demo.pdf

Usage

On startup, Impressive will display a black screen with the program logo at the center. If caching is enabled, but background rendering is disabled, all pages of the presentation will then be rendered once. A bar in the lower half of the screen displays the progress of this operation. Any key or mouse click (except for those that quit Impressive, typically Q and Esc) skips this process, with the effect that Impressive will render the remaining pages on demand. Please note that the overview page will not be complete until every page has been rendered at least once. In other words, if the precaching process was skipped, placeholders will be displayed for all pages that have not been rendered yet. By default, Impressive will build up the cache in the background while the presentation runs. Thus, the progress bar will not appear and the preparation will only take the amount of time required to render the first two pages of the presentation. After this initialization process, Impressive will switch to the first page directly and without any transition.

The keyboard and mouse controls used by Impressive are configurable (with very few exceptions). The default controls are as follows:

Esc key
Return from the currently active special mode (zoom, overview, spotlight, highlight boxes); if no such special mode is active, quit Impressive altogether.
Q key or Alt+F4
Quit Impressive immediately.
LMB (left mouse button), mouse wheel down, Page Down key, Cursor Down key, Cursor Right key or Spacebar
Go to the next page (using a transition).
RMB (right mouse button), mouse wheel up, Page Up key, Cursor Up key, Cursor Left key or Backspace key
Go to the previous page (using a transition).
Home key / End key
Go directly to the first or last page of the presentation.
Ctrl key (modifier)
If one of the page navigation keys (Page Up/Down, Cursor keys, Space, Backspace, Home, End) is pressed while the Ctrl key is held down, the destination page will be entered immediately, without a transition.
L key
Return to the last (most recently displayed) page. This can be used to toggle back and forth between two pages.
F key
Toggle fullscreen mode. Unfortunately, this does not work on Windows systems.
Tab key
Zoom back to the overview page. While in overview mode, a page can be selected with the mouse and activated with the left mouse button. The right or middle mouse button or the Tab key leave overview mode without changing the current page.
MMB (middle mouse button)
In normal display mode, this acts like the Tab key: it zooms back to the overview page. If the page is zoomed in, it will return to normal mode.
LMB over a PDF hyperlink
Jump to the page referenced by the hyperlink. Two types of hyperlinks are supported: Links that point to some other page of the same document, and URL hyperlinks like Web links and e-mail addresses. This feature is only available if pdftk is installed. Furthermore, xdg-open from the freedesktop.org Portland project is required for URL links on non-Win32 platforms. Please note that the hyperlink feature will not work properly when pages are rotated.
click&drag with LMB (left mouse button)
Create a new highlight box. While at least one highlight box is defined on the current page, the page itself will be shown in a darker, blurry and (if supported by the graphics hardware) desaturated rendition. Only the highlight boxes will be displayed in their original lightness, sharpness and color saturation.
If a page with highlight boxes is left, the boxes will be saved and restored the next time this page is shown again.
RMB (right mouse button) over a highlight box
If the right mouse button is clicked while the mouse cursor is above a highlight box, the box will be removed. If the last box on a page is removed, the page will turn bright and sharp again.
S key
Save the info script associated with the current presentation. The main purpose for this is to permanently save highlight boxes or keyboard shortcuts, so they will be restored the next time this presentation is started.
T key
Activate or deactivate the time display at the upper-right corner of the screen. If the timer is activated while the very first page of the presentation is shown, it activates time tracking mode, just as if the command-line option --tracking had been specified.
R key
Reset the presentation timer.
C key
Removes (»clears«) all highlight boxes from the current page.
Return key or Enter key
Toggle spotlight mode. In this mode, the page is darkened in the same way as if highlight boxes are present, but instead of (or in addition to) the boxes, a circular “spotlight” will be shown around the mouse cursor position, following every motion of the mouse cursor.
+ / key, 9 / 0 key or mouse wheel in spotlight mode
Adjust the spotlight radius.
Ctrl+9 or Ctrl+0 keys
Resets the spotlight radius to the default value, i.e. the value that has been set up by the radius page property, the --spot-radius command-line option or Impressive's built-in default.
7 / 8 key
Adjust the amount of darkening applied to the page in spotlight or highlight box mode.
Ctrl+7 or Ctrl+8 keys
Resets the amount of darkening in spotlight or highlight box mode to the default value, i.e. the value that has been set up by the darkness page property, the --darkness command-line option or Impressive's built-in default.
Z key
Toggle zoom mode. When this key is first pressed, the current page will zoom in. The page will be displayed at double size, but in its original resolution (i.e. it will be blurry). Impressive will re-render the page at the new resolution if the graphics hardware supports it. During this time, Impressive will not accept any input, so don't even think about clicking the mouse or pressing keys before the image gets crisp again.
In zoom mode, all other functions will work as normal. Any operations that leave the current page, such as flipping the page or entering the overview screen, will leave zoom mode, too.
[ / ] key
Adjust the gamma value of the display (might not be supported on every hardware).
{ / } key
Adjust the black level of the display (might not be supported on every hardware).
\ key
Revert gamma and black level back to normal.
O key
This will toggle the »visible on overview page« flag of the current page. The result will not be visible immediately, but it can be saved to the info script (using the S key) and will be in effect the next time the presentation is started.
I key
This will toggle the skip flag of the current page. A page marked as skipped will not be reachable with the normal forward/backward navigation keys.
B / W key or . (dot) / , (comma) key
Fade to black or white, respectively. This feature can be used if a whiteboard or blackboard in front of the projection area is to be used during the presentation. Using these two keys, the screen will fade into a solid color. On any keypress or mouse click, it will fade back to normal. These keys are not available in overview mode.
click&drag with RMB (right mouse button) in zoom mode
Move the visible part of the page in zoom mode.
Cursor keys in overview mode
Navigate through pages.
Alt+Tab keys
If Impressive is in fullscreen mode, the window will be minimized so that other applications can be used.

Any alphanumeric (A-z, 0-9) or function key (F1-F12) that is not bound to a specific action mentioned above or configured by the user (see below) can be used to assign shortcuts to pages that require quick access. If one of the keys is pressed together with Shift, the currently displayed page is associated with this key. To recall the page later, it is sufficient to press the shortcut key again. Shortcuts can be stored permanently with the S key.

Control Configuration

As already mentioned in the previous chapter, the keyboard and mouse bindings of Impressive can be widely configured. The only exceptions are the Alt+F4 and Alt+Tab key combinations that will always quit or minimize Impressive, respectively. For everything else, there is a versatile configuration system in place; the controls described in the previous section are merely the defaults.

Impressive's control system works by associating events with actions. An event is a key on the keyboard, a mouse button or a mouse wheel movement. An action is something that is performed by Impressive as a result of an event, like going to the next page, switching to overview mode or quitting the program. The association of an event to an an action is called a binding. Multiple events can be bound to the same action (like the page down and space keys in the default setting, both of which go to the next page); furthermore, multiple actions can be bound to the same event. In fact, bindings do not associate events with single actions at all, but with chains of actions. Only the first action in the chain that matches (i.e. makes sense in) the current context will be executed if the event fires; all other actions will be ignored. If no action matches, no action will be performed and the event will be ignored.

One example of such an action chain is the default binding for the left mouse button, which

Both events and actions have mnemonic names that are used in the command-line options and configuration files used for setting up bindings. Event and actions names are generally case-insensitive, though the canonical notation is lowercase.
If an event or action specified on the command line or in a configuration file is not recognized by Impressive, an error message will be written to the console and the offending event or action will be ignored. Errors in control configuration are thus always non-fatal.

Supported Events

Keyboard events are generally named after the keys they refer to. Consequently, the events a to z and 0 to 9 mean the respective letter and number keys on the main keyboard, f1 to f12 are the function keys and kp0 to kp9 are the number keys on the numerical keypad. All of these are raw scancodes, which has two implications: First, the key names are not internationalized and refer to the US keyboard layout (e.g. the Z key on a German or French keyboard will actually react to the event name y or w); second, modifiers will be ignored as well (e.g. the numerical keypad will always generate the kpX scancodes, even if Num Lock is off).

The mnemonic names for the other keyboard events are as follows (in alphabetic order): ampersand, asterisk, at, backquote, backslash, backspace, break, capslock, caret, clear, comma, down, end, escape, euro, exclaim, greater, hash, help, home, insert, kp_divide, kp_enter, kp_equals, kp_minus, kp_multiply, kp_plus, lalt, last, lctrl, left, leftbracket, leftparen, less, lmeta, lshift, lsuper, menu, minus, mode, numlock, pagedown, pageup, pause, period, plus, power, print, question, quote, quotedbl, ralt, rctrl, return, right, rightbracket, rightparen, rmeta, rshift, rsuper, scrollock, semicolon, slash, space, sysreq, tab, underscore, up. The events prefixed with kp_ refer to keys on the numerical keypad. Other than that, the names should be reasonably descriptive, so they will not be described futher at this point. Also note that not all keyboards and platforms support the full range of keys defined in this list.

Mouse event names are mapped as follows:

lmb
the left mouse button
mmb
the middle mouse button
rmb
the right mouse button
wheelup
scrolling the mouse wheel upwards
wheeldown
scrolling the mouse wheel downwards

The event names can be prefixed with the three modifiers ctrl+, alt+ and shift+ to make the event valid only if the specified set of modifiers is pressed as well. This works for both keyboard and mouse events. Multiple modifiers can be combined, but the order must match the one mentioned in this paragraph. For example, ctrl+shift+x is a valid event name, while shift+ctrl+x is not.

A simple way to determine the name associated with an event is using Impressive's »Event Test Mode« by invoking impressive --evtest. In this mode, the name of each incoming event will be displayed on the screen (and logged to standard output), which makes it possible to determine event names by experimentation.

Supported Actions

The following list describes all actions supported by Impressive, together with the conditions under which they will match. Note that most actions will not match in overview mode and during video playback, unless mentioned otherwise in the description.

box-add
Draw a highlight box if the mouse has been moved since the button has been pressed down. This action must only be bound to a mouse button event without modifiers, otherwise it will not function properly.
box-clear
Removes all boxes from the current page.
box-remove
Removes the highlight box under the mouse cursor, if there is any.
fade-less, fade-more
Decrease or increase the amount of darkening applied to the background in spotlight or highlight box mode.
fade-reset
Resets the background darkness in spotlight or highlight box mode to its default value.
fade-to-black, fade-to-white
Fades to a black or white screen. Once the screen is faded out, any event except those bound to the quit action will just leave fade mode and not perform its assigned action.
fullscreen
Toggle fullscreen mode on platforms that support it.
gamma-decrease, gamma-increase
Decrease or increase the gamma level (i.e. roughly the brightness) of the display on platforms that support it.
gamma-bl-decrease, gamma-bl-increase
Decrease or increase the black level of the display on platforms that support it.
gamma-reset
Reset the gamma and black level settings to their defaults.
goto-end, goto-end-notrans
Go to the last page of the presentation, with or without a transition.
goto-last, goto-last-notrans
Go to the last (i.e. most recently) visited page, with or without a transition.
goto-next, goto-next-notrans
Go to the following page of the presentation, with or without a transition.
goto-prev, goto-prev-notrans
Go to the previous page of the presentation, with or without a transition.
goto-start, goto-start-notrans
Go to the first page of the presentation, with or without a transition.
hyperlink, hyperlink-notrans
Navigate to the hyperlink under the mouse cursor, if there is one. If the hyperlink is a reference to another page of the presentation, this page will be activated with or without a transition. If the hyperlink refers to an external object (e.g. an URL), it will be opened externally, if supported by the system.
overview-confirm
When in overview mode, confirm the selection and leave overview mode, navigating to the selected page.
overview-down, overview-up
When in overview mode, select the page above or below the currently selected one in the grid.
overview-enter
When not in overview mode, zoom out of the current page, entering overview mode.
overview-exit
When in overview mode, leave overview mode, zooming back to the page that has been displayed before entering overview mode.
overview-next, overview-prev
When in overview mode, select the following or previous page.
quit
Quits Impressive immediately. This action is available in all modes.
save
Save or update the Info Script for the current presentation.
spotlight-enter
If spotlight mode is not active, enable spotlight mode.
spotlight-exit
If spotlight mode is active, deactivate spotlight mode.
spotlight-grow, spotlight-shrink
When in spotlight mode, increase or decrease the radius of the spotlight.
spotlight-reset
When in spotlight mode, reset the spotlight radius to the default value.
time-reset
Reset the presentation timer.
time-toggle
Toggle on-screen display of the current presentation time, or wall-clock time if the --clock option is used. If this is done at the start of the presentation, before the first page has been left, time tracking mode will be enabled, like the --tracking option would have done.
toggle-overview
This toggles the »page is visible on overview screen« flag for the current page. This will not have an immediate effect, but it can be saved to an Info Script.
toggle-skip
This toggles the »skip page when navigating with goto-prev and goto-next« flag for the current page.
video-pause
In video playback mode, this pauses or unpauses playback.
video-seek-backward-10, video-seek-backward-1, video-seek-forward-1, video-seek-forward-10
In video playback mode, seek forward or backward by 1 or 10 seconds.
video-step
In video playback mode, if playback is paused, advance one frame in the video.
video-stop
In video playback mode, stop playback and return to normal page display mode.
zoom-enter
If not in zoom mode, enter zoom mode.
zoom-exit
If in zoom mode, leave zoom mode.
zoom-pan
When in zoom mode, the visible area of the page can be moved around with the mouse while the key or mouse button of the associated event is held down.

Binding Syntax

The arguments of the -e/--bind command-line option have the following basic syntax:
    <event> [,<event2>...] <operator> <action> [,<action2>...]
In other words, it is a sequence of event names joined with commas, followed by an operator (see below) and a sequence of action names joined with commas. Multiple such binding statements can be combined into one argument by joining them with a semicolon (;).

The used operator defines in which way the action list shall modify the bindings of the referenced events:

= (equals sign), += (plus sign and equals sign)
The specified actions will be added to the bindings of the specified events. In other words, event=action1,action2 does exactly the same as event=action1; event=action2.
:= (colon and equals sign)
The specified actions will replace the bindings of the specified events.
-= (minus sign and equals sign)
The specified actions will be removed from the bindings of the specified events. For example, to make the Esc key in the default bindings not clear highlight boxes, but otherwise preserve its original functionality, escape -= box-clear can be used.

Other than bindings, a statement can also contain one of the following special commands:

clearall
Clears all current bindings.
defaults
Discards all current bindings and (re-)establishes the default bindings.
include <filename>
Loads and executes a control configuration file with a specified name.

The syntax for the configuration files used with the -E/--controls option or include statement is exactly the same as for the ad-hoc configuration option, except that individual bindings can be written on individual lines instead of joining them together to a single long line with semicolons. In addition, everything following a hash sign (#) on a line will be ignored as a comment.

One practical example for such a configuration file can be the following: The author of this program uses a cheap presentation remote control device that has four cursor keys, one »enter« key and a slider that switches between keyboard and mouse mode. Mouse mode works as expected, but what it does in keyboard mode is quite peculiar: the up and down keys act like Page-Up and Page-Down keys on a keyboard, the right arrow key sends the letter B to the computer, and the left key toggles between Esc and F5 each time it's pressed. The following configuration file allows basic navigation and access to overview mode with this device:

    clearall  # don't use the default bindings
    lmb = quit  # quit Impressive by clicking in mouse mode
    # everything else uses keyboard mode:
    return = overview-enter, overview-confirm  # toggle overview mode
    escape, f5 = overview-prev, goto-prev
    b = overview-next, goto-next
    pageup = overview-up, goto-prev
    pagedown = overview-down, goto-next

To get a better idea of how the control configuration system works in practice, it's recommended to study the output of impressive --control-help – this not only gives a concise overview of all events and actions, but also a full dump of Impressive's default bindings that can be used as a starting point for own customizations.

Info Scripts

Impressive offers a powerful way to customize individual presentations using so-called info scripts. An info script is a text file having the same name and located in the same directory as the presentation file itself, except for the additional suffix .info. Thus, a presentation file called BrandNewProduct.pdf would have a info script with the name BrandNewProduct.pdf.info. If multiple arguments were specified on the command line, the info script will be called just .info (a dot file, so to speak). If a directory name was specified as the only argument, either a file called DirectoryName.info or a file called .info inside the directory will be used, depending on whether a path separator was specified at the end of the directory name or not – Impressive simply appends .info to whatever the input path name was.
In any case, the default file name can be overridden by the -I command line option.

Info scripts are actually Python scripts with full access to Impressive's global data structures and functions. (It is possible to write real interactive applications using info scripts.) Thus, they can modify a broad range of settings concerning Impressive. This manual will only cover the most basic ones.

Page Properties

The main part of an info script defines the properties of each page. At the moment, the following properties are defined:

title
Each page can have a title that is displayed in the Impressive window's title bar. If there is no title explicitly specified in the info script, the title of the page will be extracted from PDF metadata if pdftk is installed, or the image file name will be used if the presentation is an image slideshow.
transition
With this property, the transition class to be used for rendering the transition to this page (i.e. between the previous page and this page) can be specified. For pages lacking this property, random transitions will be chosen. A list of available transition classes can be obtained with impressive -l.
transtime
This property overrides the global transition time parameter (-T at the command line). It contains the integer time (in milliseconds) the transition to this page shall take.
overview
This property holds a boolean value (0/False or 1/True) that specifies whether the page shall be included in the overview page. If this property isn't specified, it is assumed to be True.
skip
This boolean property can be set to 1/True if the page shall be skipped during the presentation.
Pages with overview:True, skip:False will be accessible both by cycling through the pages and using the overview page,
pages with overview:True, skip:True will be silently skipped in the normal page cycle, but remain accessible from the overview page,
pages with overview:False, skip:False will appear in the normal cycle, but not on the overview page
and pages with overview:False, skip:True will not be accessible at all.
boxes
This property stores a list of highlight box coordinates. Normally, there is no need to edit this by hand, as Impressive handles this automatically if the S key is pressed.
timeout
If a timeout property is present and the page is shown, Impressive will automatically switch to the next page after the specified number of milliseconds. Normally, the timeout will only be effective the first time the page is shown unless wrap mode is used (command-line option -w or --wrap). This restriction makes it possible to create self-running presentations with individual per-page timeouts.
radius
This property takes an integer value that, if defined, will be used to set a new spotlight radius every time the page is entered. This overrides the current setting as defined by the --spot-radius command line option or run-time adjustments. Note that the value is not reset to the default value after the page has been left again.
darkness
This property takes an integer or floating-point percentage value that, if defined, will be used to set the background darkness in spotlight or highlight box mode each time the page is entered. This overrides the current setting as defined by the --darkness command line option or run-time adjustments. Note that the value is not reset to the default value after the page has been left again.
comment
This property can hold a string with a single line of text that will be displayed on screen while the page is shown. Display of this text can not be disabled.
sound
Specifies the file name of a sound file to be played (via MPlayer) when the page is first entered. Once started, the sound will be played until its end is reached, another sound or video is played, or Impressive is exited.
video
Specifies the file name of a video file to be played when the page is first entered. The video will be displayed full-screen. Any key or mouse click stops playback, except the cursor keys, which are used to seek in the video file, and space, which can be used to pause playback. Note that this function is highly experimental and might not work reliably on every system!
always
If this property is present and set to 1 or True, the media file specified in the sound or video properties will be played every time the page is entered, not just the first time.
progress
If this property is set to zero, the presentation progress bar (which is usually set up with the -d/--duration command line switch) will not be shown on this page. In practice, it might be useful to hide the bar from the first page so that it is not visible during the introduction.
reset
If this property is set to 1 or True, the timer will be reset each time this page is left, just as if the R has been pressed. If the special value 2 or FirstTimeOnly is used, the reset will only take place if the page was shown for the first time. Again, this is particularly useful on the first page: A combination of progress:False, reset:FirstTimeOnly makes it possible to set up the presentation long before it actually begins – the first page can be showed as long as desired, actual timing starts at the second page.
rotate
This property is a per-page override of the global -r command line option: It specifies how the page shall be rotated, in 90-degree steps clockwise.
OnEnter, OnLeave, OnEnterOnce, OnLeaveOnce
These properties can contain a Python callable (i.e. a function reference or lambda expression) that is executed when the page is entered or left. The ~Once variants will only be executed when the page is entered or left for the first time. The callable must not take any arguments. This feature can be used to associate arbitrary Python code with specific pages, for example to execute external programs.
Warning: Lambda expressions cannot be properly processed by the Info Script save function (S key). If Impressive encounters lambda expressions when saving, it will remove them. In addition, it will not overwrite the original info script, but generate an extra file that needs to be merged withe the original script by hand.
keys
This property can be assigned a dictionary that maps alphanumerical keys to Python functions. For example, 'keys': { 'x': SomeFunction } will invoke SomeFunction() if the lowercase character 'x' is typed while the page is displayed. Regarding the functions, the same restrictions as for the OnEnter/OnLeave family apply: the function must not take any parameters and lambda functions can not be saved. Also note that it is not possible to overwrite Impressive's pre-defined key bindings with this method.
invert
This property specifies whether the colors of that page shall be inverted in the same way the --invert command-line switch does. It overrides the --invert setting on a per-page basis: If set to True, the page will always be inverted; if set to False, the page will never be inverted even if --invert has been specified on the command line.

Note that in Impressive versions prior to 0.11.0, the transition and transtime properties defined the transition from the current page to the next, not from the previous page to the current one.

The properties are stored together in a Python dictionary called PageProps. The syntax looks like in this example:

PageProps = {
  1: {
       'title': "Title Page",
       'transition': PagePeel,
       'sound': "background_music.mp3"
     },
  2: {
       'title': "Another Page",
       'timeout': 5000
     }
}

The PageProps definition (and only the PageProps definition) will be rewritten by Impressive if the S key is pressed. User-defined PageProps entries will also be left untouched, except for some pretty-printing.

Global Presentation Properties

The name of the presentation is shown in the title bar of the Impressive window (if not in fullscreen mode). By default, the file name or (if available) PDF metadata title will be used for this purpose, but the presentation title can also be explicitly set by overwriting the DocumentTitle variable:
DocumentTitle = "My Presentation"

Another useful variable, AvailableTransitions, contains a list of all transition classes that may be used for randomly assigning transitions to pages lacking the transition property. Thus, if a certain transition is undesired (either because of personal dislike or because it shall be used exclusively on pages where it is manually assigned using PageProps), something like the following can be written:
AvailableTransitions.remove(WipeBlobs)
On the other side, it's possible to activate transitions that are not enabled by default:
AvailableTransitions += [SlideUp, SlideDown]
Alternatively, AvailableTransitions can be completely overwritten to have the same transition (or set of transitions) assigned to all pages:
AvailableTransitions = [Crossfade]

Option Overrides

Another use of info scripts is overriding the default or command-line settings on a per-file basis. This can be done by simply overwriting one of the variables that are defined at the beginning of impressive.py. Each of these variables corresponds either to a command-line setting, or to some constant related to visual appearance or performance. So, for example, to force fullscreen mode for a presentation, write
Fullscreen = True

Working Directories

The working directory while executing the info scripts themselves is always the directory in which the info script is stored in.

The base directory for external actions that originate from Page Properties or PDF hyperlinks is always the directory of the PDF or image file this page belongs to. In other words, if e.g. 'sound': "music.mp3" is written in the info script for one page of presentation.pdf, the file music.mp3 is expected to be located in the same directory as presentation.pdf.

Other Useful Information

Useful Third-Party Tools and Distributions

Liviu Andronic is maintaining PPAs for Ubuntu that contain the newest stable and development versions of Impressive. They can be added using the commands
sudo add-apt-repository ppa:landronimirc/impressive (release versions) or
sudo add-apt-repository ppa:landronimirc/impressive-svn (nightly builds).

Joel Berger has written a Perl script that extracts transition information from special comments in LaTeX beamer source files and generates a Impressive info script from the gathered information: makebeamerinfo.

Juan Carlos Paco has written a very simple graphical interface for Impressive that runs on Debian and Ubuntu systems, called GUImpressive.

Another GUI comes from B. Pratibha, called »BOSS Presentation Tool«.

License

Impressive is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for any particular purpose. See the GNU General Public License for more details.

Contact

You can always contact the author of Impressive to send him ...

Impressive-0.11.1/changelog.txt0000644000175000017500000003035612621154560015767 0ustar martinmartin0.11.1 [2015-11-12] - fix for newer PIL/Pillow versions that broke compatibility by removing .tostring() and .fromstring() - fixed crash when clicking on run: URI hyperlinks - PDF hyperlinks with file:// and run:// URIs now work correctly with quoted characters (e.g. spaces) in paths - added top-level synchronize() function to schedule calls in Impressive's main thead (useful for library mode) - explicitly printing traceback on crashes to ensure proper display on Win32 systems - early lookup of OpenGL vendor/renderer/version strings (to get more useful crash logs) - added Win32-specific OpenGL loader (instead of SDL fallback) - fixed SDL library lookup issue on newer Linux systems - OSD font lookup now works if the same font file exists multiple times in the font path - fixed crash when no OSD font is available 0.11.0 [2014-12-21] - full port from OpenGL 1.1 to OpenGL (ES) 2.0 - fully customizable key/mouse bindings (-e/--bind, -E/--controls, --control-help, --evtest) - MuPDF (mudraw/pdfdraw) rendering backend - 'transition' PageProp describes transition *to* the page, not after the page - Raspberry Pi compatibility - new shader-based blurring with desaturation + fallback to old method for old HW (autodetect or --noblur) - re-implemented all transitions with shaders (missing: PageTurn, SpinOutIn, SpiralOutIn, ZoomOutIn; new: WipeClouds, WipeBrightness1, WipeBrightness2) - compressed in-memory cache (-cz / --cache compressed) - removed -e/--noext and -R/--meshres due to obsolescence - --tracking enables time tracking right from the start - added -v/--verbose mode - MuPDF renderer backend can work via named pipes instead of temp files on Unix - alternate overview downscaling algorithm for slower systems (auto-detected) - internal default mouse cursor image - fixed OSD font rendering bug with Pillow - most platform-specific code now handled by abstraction layer; no direct PyGame calls in core - custom ctypes-based OpenGL loader instead of PyOpenGL - generic PDF renderer framework (necessary now that there's 3 renderers) - external PDF renderers are now called with 'nice' when background rendering on POSIX 0.10.5 [2014-05-02] - fixed bug that cause file lists ("@list.txt" parameters) to not work in 0.10.4 - some minor additions to the release script, only relevant for distributors 0.10.4 [2013-12-29] - changed Esc key behavior: doesn't quit immediately, leaves special modes first - middle mouse button in zoom mode now returns to normal mode (not overview) - mouse wheel can now be used to change pages (can be turned off with --nowheel) - info scripts now run from their (or the document's) directory - added 'C' key: clear all highlight boxes on current page - added --autoquit: quit Impressive at the end of the presentation - added --noclicks: don't change pages with mouse clicks - added --clock: display wall-clock time instead of elapsed time - added --half-screen: support for LaTeX-beamer's "show notes on second screen" - added --invert and 'invert' PageProp: RGB-invert pages - added --auto-auto: determine page timeout automatically from target duration - added --auto-progress: per-page timeout progress bar - added command-line option (--spot-radius), PageProp ('radius'), keyboard shortcuts ('9'/'0'/'-'/'+') and mouse wheel controls to set spotlight radius - added command-line option (--darkness), PageProp ('darkness') and keyboard shortcuts ('7'/'8') to set spotlight / highlight box background darkness - added "fake fullscreen" (borderless window) mode - window positioning is now possible with the --geometry option - Alt+Tab always minimizes the application when in fullscreen mode - Ctrl+PgUp/PgDn (and some other) key combo switches pages without transition - 'video' PageProp now also accepts a list of multiple files to be played - added support for Launch actions and file: and run: URIs in PDF hyperlinks - minimum highlight box size is now configurable, and measured in pixels - overscan is now cropped before adding letterbox/pillarbox borders - added more system information to the crash reporter - last-to-first-page transitions in wrap mode are no longer reversed - option parser accepts resolutions of up to 32Kx32K now - fixed an issue with zooming in presentations with varying page sizes - fixed compatibility with pdftk 1.45 and the PIL fork "Pillow" - fixed behavior of .info file name generation (didn't match documentation) - crash fixes with zero times in animations (e.g. --boxfade) - fixed crash with very many pages on very small screens - fixed info script error handling (could accidentally break PageProps) - many fixes in the PDF parser, manpage generator, Makefile and build system - Win32: fixed video support - Win32: added "press ENTER to quit" wait phase to crash handler - Win32: external tools (pdftk, pdftoppm, mplayer) are now searched in PATH - Win32: binary build system switched from py2exe to python-installer - Win32: added icon and version info block to binary build - minimized PyGame initialization: only display is initialized, no audio - added a simple "smoke test" to Makefile (based on Xvfb) - various other fixes and dead code removal 0.10.3 [2010-10-17] - fixed display problems when using odd window sizes - loading image data earlier so that no unhandled exceptions will be thrown when a file is broken - fixed typo in --aspect parameter - using -u doesn't periodically re-load the input file any longer if it changed only once - fixed a bunch of problems related to non-standard aspect ratios - adjustable zoom factor - black-out and white-out are now assigned to keys [.] and [,] - PDF hyperlinks are now also available if the cache is disabled - releasing all locks at the end of run_main() - included some library version numbers in crash messages - added option to fade in at program start and fade out at program end - added --nologo option - added shuffle feature - right mouse button will no longer switch to previous page in zoom mode (prevents accidental page switches) - improved MPlayer interface - added 'always' PageProp to play sound or video every time a page is entered - 'timeout' PageProp is now respected every time a page is entered if wrap mode (-w) is enabled - added finer-grained control over the progress bar colors and timing; added --page-progress option - added overscan option - display will now be quickly uninitialized when Impressive quits - improved PDF parser robustness - now using hashlib instead of md5 module, if available, to avoid a DeprecationWarning on Python 2.6 - software rendering warning now also reacts on any OpenGL renderer string beginning with 'software' - added FadeOutFadeIn transition (idea by Antonio Terceiro) - hyperlinks now work correctly on rotated pages 0.10.2 [2008-02-03] - --listtrans now shows which transitions are enabled by default - number of digits in pdftoppm output file names is cached - using xrandr to get current resolution on X11 - enabled URL hyperlinks using ShellExecute (Win32) or fd.o's xdg-open (UNIX) - 'keys' PageProp for arbitrary key bindings - exceptions in info scripts are now non-fatal - 'video' PageProp and PlayVideo() function for (HIGHLY EXPERIMENTAL!!!) fullscreen video playback - PDF parser now emits warnings instead of failing silently if something isn't OK - support for list files using the @filename syntax - 'comment' PageProp displays overlay text on a slide permanently - added auto-overview mode (idea by Tobias Maier) - restore compatibility with KeyJnoteGUI 0.10.1a [2007-11-27] - restored compatibility with poppler-based pdftoppm - added Alt+Tab as alias for "exit fullscreen mode" - improved cleanup code 0.10.1 [2007-09-09] - re-enabled GL_ARB_texture_non_power_of_two support (was broken in 0.10.0) - PDF hyperlink support - added compatibility fix for PyOpenGL 3.x - generalized and simplified PageProp system - rotate PageProp - multi-file support - persistent cache 0.10.0 [2007-06-02] - added pdftoppm rendering backend - overview page update fix - more font search paths (DejaVuSans.ttf, OSX paths) - graceful handling of failed renders - converted logo to PNG - fixed -T0 crash - allowed None as a value for the 'transition' PageProp and -t parameter - added 'transtime' PageProp to set transition duration for single pages - R key: reset timer - added 'progress' PageProp to show/hide progress bar - added 'reset' PageProp to reset the timer when the page is left - allowed special value FirstTimeOnly for the 'reset' prop - L key: return to last (= most recently used) page or back - added OnEnter, OnLeave, OnEnterOnce and OnLeaveOnce page props - customizable OSD layout and alpha - I and O keys change 'skip' and 'overlay' PageProps interactively - now accepting image file names at the command line - fixed supersample mode - added key repeat to quickly change the spotlight size via the keyboard - Home and End keys now navigate to the start and end of the presentation - shortcut function for any unused letter, number or function key - removed PagePeel from the default transitions list - two new families of transitions: {Slide,Squeeze}{Left,Right,Up,Down} 0.9.4 [2007-03-19] - middle mouse button now acts as overview toggle - automatic display mode guessing now implemented on Unix, too - fixed 'T' key - fixed crash in the OSD code if a broken version of PIL is used - added gamma controls (courtesy of Luke Campagnola) - added progress bar / estimated duration - added loadable cursor image 0.9.3 [2007-02-26] - fixed indentation bug (removing a box caused a transition to the prev page) - improved pdftk parser (handles non-ASCII characters gracefully) - all messages are redirected to stderr - added timer ([T] key) and time tracking mode - made all main keyboard bindings unicode key queries 0.9.2 [2007-02-17] - fixed memory cache - added "polling" option - added "cache range" option - added overview page OSD 0.9.1 [2007-01-24] - FIX: 'whitening' mode didn't work with GL_EXT_texture_rectangle - FIX: crash when clicking a mouse button in fade mode - FIX: occasionally left behind temp files 0.9.0 [2007-01-07] - fixed all OpenGL calls to use the explicit form (glTexCoord2d instead of glTexCoord) - corrected texture target specification for rare transitions - added unicode key aliases for the [+] and [-] keys (should improve i18n) - added "fade to solid color" feature - added 'skip' PageProp - improved/fixed window caption in overview mode - GhostScript is now called with -dUseCropBox, should improve handling of some LaTeX-beamer generated PDFs - using a temp file for the page cache now - added background rendering - Win32: true fullscreen by default 0.8.3 [2006-09-28] - 'overview' PageProp to remove pages from the overview screen - experimental aspect ratio option - new transition contributed by Ronan Le Hy - OpenGL non-power-of-two texture size extension support 0.8.2 [2006-07-13] - fixed crash on some files - added overview mode keyboard navigation - added "--rotate" option 0.8.1 [2006-02-04] - made OpenGL error reporting more concise - added "render" option to produce PNG files from a PDF 0.8.0 [2005-11-23] - fixed command-line option parser - changed some cmdline options (see documentation or -h) - added new --transition option to specify which transitions can be chosen randomly - added some new transitions from Rob Reid - fixed image file mode - fixed display of portrait images or pages - added experimental 2x zoom mode 0.7.2 [2005-10-24] - fixed two annoying bugs introduced in 0.7.1, related to mouse key remapping - fixed bug that caused parts of the old page content to be visible after transitions - added two slideshow-related options 0.7.1 [2005-10-22] - more intuitive highlight box handling (the middle mouse button is no longer used to create and destroy highlight boxes; instead, dragging the mouse while LMB is pressed creates a box and clicking with RMB deletes a box) - added 'initial page number' option (-i) 0.7.0 [2005-09-29] - fixed bug in overview page that caused the program to crash if the user clicked outside the area occupied by thumbnails - added 'timeout' PageProp to automatically advance to the next page - added EXPERIMENTAL support for sound via 'sound' PageProp 0.6.3 [2005-09-07] - Some PDF files generated by pdflatex would not play because of negative object counts. Fixed. 0.6.2 [2006-09-06] - bugfix: filenames with spaces didn't work on Win32 0.6.1 [2005-09-05] - initial public release Impressive-0.11.1/license.txt0000644000175000017500000004312612621154560015461 0ustar martinmartin GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. Impressive-0.11.1/impressive.10000644000175000017500000017534512621154560015557 0ustar martinmartin.\" generated by KeyJ's html2man.py version 0.1.1 .TH IMPRESSIVE 1 2014-12-21 "Martin J. Fiedler" "Impressive Documentation"> .SH "NAME" Impressive \- presentation tool with eye candy .SH "SYNOPSIS" .IX Header "SYNOPSIS" .B impressive [OPTIONS...] FILES... .SH "DESCRIPTION" .IX Header "DESCRIPTION" Impressive is a simple presentation program that displays slideshows of image files (JPEG, PNG, TIFF and BMP) or PDF documents. Rendering is done via OpenGL, which allows for some "eye candy" effects. .PP A somewhat\-modern GPU (graphics processing unit) supporting OpenGL 2.0 or OpenGL ES 2.0 and appropriate drivers is required to run Impressive. .PP .SH "OPTIONS" .IX Header "OPTIONS" .br \fB\-a \fI\fR\fR or \fB\-\-auto \fI\fR\fR .RS Automatically advance to the next page after the given number of seconds. Together with the \fB\-w\fR option (described below), this can be used to create automatic slideshows. .RE .PP .br \fB\-A \fI\fR:\fI\fR\fR or \fB\-\-aspect \fI\fR:\fI\fR\fR .RS Specifies the display aspect ratio. Normally, Impressive assumes that the pixel aspect ratio is 1:1 (square pixels), regardless of the display resolution that has been set up. If a resolution has been selected that doesn't match the display's aspect ratio, the screen will be distorted. To overcome this, this option may be used to manually specify the display aspect ratio, e.g. "\-A 16:9". Note that this option has no effect if the MuPDF backend is used for rendering. .RE .PP .br \fB\-b\fR or \fB\-\-noback\fR .RS Disables background rendering. By default, Impressive will pre\-render all pages in a separate background thread while the presentation runs. If this option is specified, it will instead render all pages immediately on startup. This option has no effect if caching is disabled (\fB\-\-cache none\fR, see below). .RE .PP .br \fB\-B \fI\fR\fR or \fB\-\-boxfade \fI\fR\fR .RS Sets the duration (in milliseconds) of the highlight box fade\-in/\:fade\-out animation. Default value: 100 ms. .RE .PP .br \fB\-c \fI\fR\fR or \fB\-\-cache \fI\fR\fR .RS Specifies the page cache mode to use. Valid options are: .br \fBnone\fR .RS Disables page caching altogether, only the current and the following page will be kept in RAM. Jumping between pages will be very slow, because Impressive will need to render the requested pages on the fly. In addition, the overview page won't be complete until every page has been shown at least once. .RE .br \fBmemory\fR .RS Caches all page images in memory. This is the fastest method, but it requires very large amounts of memory (about 3 MiB per page at 1024x768 resolution). .RE .br \fBcompressed\fR or \fBz\fR .RS Caches all page images in memory as well, but in compressed form. This will be a little slower than \fBmemory\fR mode, but on pages with uniform backgrounds, this will easily reduce the required amount of RAM by a factor of 20. .RE .br \fBdisk\fR .RS Like \fBmemory\fR, but uses a temporary file rather than memory for storage. This is the default. .RE .br \fBpersistent\fR .RS Uses a permanent cache file for caching. This file will not be deleted when Impressive quits and will be reused on subsequent invocations. The default name for the cache file is derived like the names for Info Scripts (see below for an explanation), but with a \fB.cache\fR file name extension instead of \fB.info\fR. This method is a little bit slower than \fBdisk\fR mode, but the time span until the overview page is fully populated will be significantly decreased if Impressive is ran again with the same input files and options. .RE The mode name may be abbreviated at will, down to one character. Thus, \fB\-\-cache persistent\fR, \fB\-c persist\fR and even \fB\-cp\fR are all synonyms. .RE .PP .br \fB\-C \fI\fR[:\fI\fR,\fI\fR]\fR or \fB\-\-cursor \fI\fR[:\fI\fR,\fI\fR]\fR .RS This option can be used to specify an image that shall be used as a (software) mouse cursor instead of the normal (hardware) one. It can either be a name of an image file (typically a transparent .png) or one of the special values "\fB\-\fR" (dash) or "\fBdefault\fR", both of which select a built\-in cursor image. On platforms that do not support a hardware cursor, this default cursor will also be used as a default if this option is not used. .br If the name of an external file is specified, the position of the hotspot (the pixel inside the cursor where the actual mouse position is located) can be specified as well, for example: \fB\-\-cursor mycursor.png:2,4\fR. .RE .PP .br \fB\-\-clock\fR .RS If this option is enabled, the current time will be shown instead of the elapsed time if time display is activated (with the \fBT\fR key in the default control configuration). Compatible with the \fB\-M\fR option. .RE .PP .br \fB\-\-control\-help\fR .RS This option will output a short help screen of how the control configuration (keyboard and mouse bindings) work, along with a list of all recognized events and actions and a dump of the current bindings (which is the default configuration if no other \fB\-e\fR/\:\fB\-\-bind\fR or \fB\-E\fR/\:\fB\-\-controls\fR options precede this option). After that, Impressive will exit; no presentation will be started. .RE .PP .br \fB\-d \fI