About Presentation-Image by Rudolf Oldenbourg, Marine Biological Laboratory, Woods Hole, MA 02543 _______________________________________________________________________ Listserver message, 29 July 1996: For presentations using a PowerBook and external monitor or projector I have developed a spin-off to NIH-Image (1.58) which I call Presentation-Image. Presentation-Image was developed for presenting images and short movie clips using the full screen without displaying the menubar and other distracting desktop features. I found NIH-Image easier to use and faster for displaying full resolution images and movie stacks than other commercial software like PowerPoint. Images with 640 by 480 pixel resolution are shown in full size, filling the screen completely. By relying on standard NIH-Image functions, stacks can be used for advancing seamlessly from still frame to still frame or for animation. Image stacks of up to 80 and more individual images, depending on image size and available memory (RAM), can be shown as short movie sequences. I have used Presentation-Image for many lectures and seminars with great success. During the presentation, images, graphics and movie stacks are opened using single key strokes which are programmed in advance. Key assignments are prepared in the "Image Macros" file using the regular NIH-Image macro language. _______________________________________________________________________ The distribution is archived with StuffIt 1.51 and includes the following files: - Text file "About Presentation-Image" - "Presenation-Image" application file - "Image Macros", a sample macro file for Presentation-Image Use the software at your own risk, it is not bug free. A versed programmer could probably improve on the few additional code lines needed which are described at the end of the text file "About Presentation-Image". NIH-Image and modifications for Presentation-Image are in the public domain. IMPORTANT: Presentation-Image is buggy software. Use it only to display images, NOT for analyzing or processing them. Some functions might not work all the time, including the Save command. With this caveat in mind, most functions do work and menus can still be accessed normally, even if the menu bar is covered by the image. Presentation-Image includes the following features, which were added to the standard NIH-Image version 1.58: (1) Images can be opened with the top left image corner located in the top left screen corner, overriding the menu bar. Thus, images (stack or single frame) can fill the complete screen, with no distracting screen parts. Furthermore, images can be located anywhere on the screen by specifying the absolute screen coordinates of the top left image corner in the rUser1 macro array (location {0,0} corresponds to top left screen corner). (2) The menu bar is made invisible, "hidden" behind the image. (3) When loading a stack of images, only the second slice is displaid during the loading process. The rest of the movie or set of still frames is displaid by using the standard function 'comand=' or '<', '>' keys Some additional tips: When preparing your images, save stacks with the second slice displayed. This assures that only the second slice will be visible when you load the stack during the presentation. When playing movie sequences on my PowerBook 520c with system 7.5.3, the play back is not smooth but jerky. I don't know why this happens, but I can make it play smoothly in the lower speeds (e.g. 3) by pressing the option key repeatedly during play back. For a presentation, still frames or animation sequences are grouped into stacks and each stack is assigned to a different F-key (F1, F2, ...). Again, use Presentation-Image only to display images, not to prepare them, because I did run into problems saving images with Presentation-Image. The following lists the modifications made to the source code of NIH-Image, version 1.58 (CodeWarrior 6). Modifications are located in files File1.p, Utilities.p and User.p. Changes are bounded by {Presentation begin} and {Presentation end}. The rest of the code shown here is to indicate the location of the changes. (I would be glad if a versed programmer could clean up my code lines so the features outlined above would be implemented more seamlessly.) File1.P . procedure ReadStackSlices . if InvertedImage then InvertPic; {Presentation begin} if i = 2 then {Presentation end} UpdatePicWindow; {During stack loading, this will hide all slices except slice two. This is important} {because you don't want to reveal all your images ahead of time during the} {presentation} if CommandPeriod then begin . Utilities.p . procedure MakeNewWindow . with Info^ do begin RemovePath(name); {Presentation begin} wleft := round(User1^[10]) {PicLeft}; wtop := round(User1^[11]) {PicTop}; {This gets the top left image location from the User1 array} {Presentation end} PicLeft := PicLeft + hPicOffset; . Revertable := false; {Presentation begin} if User1^[12] = 0 then begin with wptr^ do begin visRgn := NewRgn; RectRgn(visRgn, qd.ScreenBits.Bounds); end; end; {show image over menubar} {Presentation end} end; WhatToUndo := NothingToUndo; end; {end of procedure MakeNewWindow} User.p {here are two procedures which can be called from a macro} . procedure ShowImage; {In some instances this helps to get rid of the menu bar} begin with Info^ do begin with wptr^ do begin visRgn := NewRgn; RectRgn(visRgn, qd.ScreenBits.Bounds); end; end; end; . procedure UserMacroCode (str: str255; Param1, Param2, Param3: extended); begin MakeLowerCase(str); if pos('showimage', str) <> 0 then begin ShowImage; exit(UserMacroCode); end; if pos('restorescreen', str) <> 0 then begin {This restores the menubar} RestoreScreen; exit(UserMacroCode); end; ShowNoCodeMessage; end; . End of modifications