ANIMATION-CARDS An Animation Facility for NoteCards Steven C. Bagley Xerox PARC Written: 23-May-86 This file describes the implementation of a new kind of NoteCard, the Animation Card. An animation card stores a movie, a sequence of frames which can be replayed, in a NoteCard so that it can be included as part of a larger NoteFile. Each frame can be drawn using either a bitmap editor, or by using Sketch. It contains commands for inserting new frames, copying frames, deleting frames, and running the movie. The bitmap may be edited using Paint, EDITBM, or with Area and Texture Fill Commands. The Animation Card sits at the interface of four different software systems: NoteCards (which supplies the supporting structure), ACE (a animation system that manages sequences of bitmaps), SKETCH (a object based drawing program), and AREAFILL (a utility in the LISPUSERS's package for filling closed regions with a single color or with a texture). An AnimationCard is the size of a single frame. (All the frames are the same size.) There is an attached window on the top edge displaying the number of the frame currently viewed and the total number of frames. The Mouse operations inside the Animation Card are as follows. In the title bar: Mouse left brings up the standard NoteCards menu. Mouse middle brings up the Animation Card Menu. The operations in this menu are described below. Mouse right brings up the default window menu. In the body of the card: Mouse left runs the movie. This is identical to selecting Run sequence in the Animation Card Menu. Mouse middle brings up the Animation Card Menu. See below. Mouse right brings up the standard window menu. The Animation Card menu: This menu, available on the middle button (both in the title bar and inside the body of the window), looks like this: ˜•˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ŕ÷˙˙˙˙˙˙ŕ˙˙˙˙˙ű˙˙˙˙Ÿw˙˙˙˙˙˙Ÿ?˙˙˙˙{˙˙˙˙żˇ˙˙˙˙˙˙żż˙˙˙˙˙˙˙˙´?Ăáń˙ڏg;ĂĐ˙˙óŢ÷˝Ţî˙ŮďwV÷{˝Ď˙÷íű~ßßŰöű=÷{~ßż˙÷íű~áŔŰöÇ{~ßż˙ˇíű~ţß˙Űö˙~7{~ßż˙żˇíű~Ţß˙żťö˙}÷{~ßż˙Ÿwî÷˝ŢďŸ9ď{}ç{˝ßż˙ŕ÷ďĂáđ˙ŕú‡~;Ăßż˙˙˙˙˙˙˙˙˙˙ű˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ű˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ű˙˙˙˙˙˙˙˙€€A€0!@0QŽ.8QĹÇGaĹĎ)‘‘1"DR&$Hș’&$U€Ÿ! |ä!ČO‘ä$)€H! @“$&HH$QH‘‘‘!"D$$Hȑ$$!‡ŽŽ!8Ô#§GÄ#A€€@€€€€€€@ ~€@ @€Gx@YŘp€HŠ |j&dˆ€O„ @@äDř€H @C$D€€Ȋ @B$Dˆ€G@AÔDp€€€€@€ŕ@đ€€Î"GˆGÎ,À€Q"HHHƒăQ3$@€âHHG"'Ŕ€HH@‚"$€HHȂ"$@€G‡G˘#€€€€€€€€€@€ žxqf€ H„‰™"€#ČH„9>€ HH„É €ČH„‰"€G†xu€€€€€ Ŕ€ „€%ÇáDq 8ł€&$Hš$‰D̑€$#$řވŸ€$ H€Şdˆ€$$H ˆDDˆ‘€$#‡apD:ˆŽ€€€€€€ř€€€\8q~ ‡ž¸qagaŔ€bD‰¨ HHĉĄń¨™’ €B8ůˆHH„ů‘ŕ€BˆHH„ ‘€BD‰HHH„‰‘ €B8qHG†„qQŔ€€€€€ŕ€đř€€€â9ç k8šágaŔ€ Dˆ‚ ­Dāń¨™’ € ň|‚ |„‘ŕ€ @ˆ @„ ‘€Dˆ D„‘ €ŕâ8gđé8„aQŔ€€€€€~ŕ€A€A!.ä#‹‡€A!1Â$d$LH‘€~!!#ä$'ČH€A!!$$H€A#!$ddHH‘€A!áĂŁŁˆG€ € €€€üŕ€‚€‚8¸pç„ä#‹‡€‚DĉÂ$d$LH‘€ü|„řr#ä$'ČH€‚@„’$$H€‚Dĉ$ddHH‘€‚8¸péƒáĂŁŁˆG€€ €€ €€€đ@ü€@€€Ňđ€ł‹0ŕ€â2@řÔLÉ€@€Č‰đ€@€†H‰€2@€„H‰€ńŇ0€ƒ¨ˆŕ€€€€ €? ƒ€ ƒ€ $AE\B€>"E"bB€ !)>BB€ !) BB€ ""BF€ $AB:€€˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ Sequence Management -- Entry into a submenu of less common operations that looks like this: ľ&˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ř€€ €€€? €ŕ€@ˆ€<%˜—‚â8ˆŕH€&d˜‘‚ D‰¨€$D‚ ňPŕH€H$D‚ dPˆ€H$D‘‚D!€‡ $DŽƒŕâ: ŕ€€ €Ŕ€€€Ŕ € ˆ€„/<#‹‡xH€„$B$LH‘ ¨€D$BÇČO‡ H€Ä$B$H ˆ€$dB$LH‘ €#Ł<#‹‡˜€€€€ @‡ˆŕŕ$@ˆH€ ‡ŽŝŜ8¸/G‹ˆ H˜‘‘&ŁÂ&˘DĐ‘$HLHCŸä!">|„Ž$HHHL$! @„$HHHˆHH‘‘$#$"D„‘$HHH‡ˆGPŽŽáÔáÄ8„#GˆH€€€˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ř Set Timing Delays -- Sets the timing delays (the amount of time each frame spends on the screen). Set the delay for individual frames gives you a menu to set the delay for each frame. Set interframe delay for sequence asks for a single delay which is applied to all frames. Auto Repeat -- Toggles the auto repeat mode of this card. The subitems let you explicitly set it or clear it. When a card has the auto repeat flag set, then when that card it brought up on the screen, it immediately starts running. Change Card Screen Position -- Each card can remember where it was created, and always come up at that screen position. Such a card is called locked. This option pops up a menu to set or clear this option for the card. Next Frame -- Moves to the next frame in the sequence. Prints a message in the promptwindow if you are already at the end of the sequence. Previous Frame -- Moves to the previous frame in the sequence. Goto Frame -- Moves to an arbitrary frame in the sequence. Prints a message in the promptwindow and then reads the number of the frame to which to move. Insert New Frame -- Inserts a copy of the current frame after the current frame, and moves to that new frame. It copies both the bitmap and the sketch. Insert Another Frame -- Insert a copy of an arbitrary frame after the current frame, and moves to that new frame. It prompts and reads the frame number from the promptwindow. Delete Current Frame -- Deletes the current frame, and moves to the next frame, (or to the previous frame if you were at the end of the sequence). It asks you to confirm the delete by clicking left on the mouse. Click the middle or right button to abort the deletion. Run Sequence -- Runs the entire sequence as a movie, using the timing delays associated with each frame. It leaves you at the last frame in the sequence. Repeat Sequence -- Runs the entire sequence of frames as a movie, over and over again, until you hit any key on the keyboard. Edit Frame -- Enters a submenu for editting the current frame. The operations in this submenu are: ƒ­˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ŕ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ŕ˙ŕűż˙ƒ˙˙˙˙˙ď˙˙˙ŕ˙ď˙űťţ|˙˙˙˙ýď˙˙˙ŕ˙ď˙űűţţ˙˙˙˙ý˙˙˙˙ŕ˙ď˙ ąý˙h~=œ8ďC˙ŕ˙ďţóťý˙g˝Ý[Ýî÷=˙ŕ˙ŕűťý˙oŰě÷Ýíű~˙ŕ˙ďýűťý˙oŘ ˙íű~˙ŕ˙ďýűťý˙oŰýřÝíű~˙ŕ˙ďýűťţţďŰý÷Ýíű~˙ŕ˙ďţóťţ|ç˝í÷î÷~˙ŕ˙ŕ š˙ƒč~řLď~˙ŕ˙˙˙˙˙˙˙ď˙˙˙˙˙˙˙˙ŕ˙˙˙˙˙˙˙ď˙˙˙˙˙˙˙˙ŕ˙˙˙˙˙˙˙ď˙˙˙˙˙˙˙˙ŕ€ €€ €ü’ €€ €€’…œ8 €ř’†˘D  €€’D> €€’Ä d €€’$"D €€’$: € € € € € € €8‹Đ–p pŕ €DQšˆ ‰  €|!řřp €@!€ €DQˆ ‰ €8ˆÎp pč € € € €€ €@ü€ €@‚ €â#‹đ‚8t €$M@‚DŒ˜€ €GČ@ü|„€ €D@‚@„€ €„H@‚DŒ€ €ƒˆ0‚8t€ €„ €x € € €Äđ €$ €pâÂáŇ<\ €‰B 2Bb €řrńňBB €’ BB €$‰ 2BB €ÄpęáŇBHH@ € A BHH@ € ‘ A"FHH@ €A:Gˆ@ €B €< € € €Ŕř €  €ĹÄApé. €&$A‰!1 €$"řů !! €$" !! €$&!‰!! €ĂĹÁpé! € €đ € € €0ř €0 €Qâ#pé. €R$A‰!1 €’GÁřů !! €’D !! €„A‰!! €ŕƒpé! € €đ € €  ŕ$ř$@€ ˆ @@ ˆĽágaŔˆŻ\G砏Ädń¨™’ ˆ¤bH“ ˆ$‘ŕU$Bƒ’ ˆ$ ‘U$B ’ ˆd‘ "$B’ ă¤aQŔ"#BR € € € €@ ŸŔIđüH A‚ KÂÎ,ÀáŔ‚^ł. ŸˆÉăQ3$A üH̑1 I"'ŔqŔ‚Hˆ‡! I"$ ‚Hˆ™! É"$A ‚Hˆ‘1 ŸÇH¢#€éŔüFˆŽŽ € € € € ŸŔIđ|@ A‚@ KÂÎ,ÀáŔ€DsÎ. ŸˆÉăQ3$A xH‰1 I"'ŔqŔPů! I"$ h! É"$A ‚D‰! ŸÇH¢#€éŔ|BpÎ! € € € € € €€ € €€ € — € ˜‘€ € € € € € ‘€ €Ž € € € € €€ €€ € ŕ € š€ €€ €€ € ˜€ € —` € € € € € €€ €G‹‡ €HLH€ €HHO€ €HHH €ˆHH€ €ˆG € € ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ŕ Fill Area -- Fills a closed region of the bitmap with either all white or all black. You click the mouse cursor inside the region to be filled. You normally want to use black pixels as the boundary and fill with black pixels, but these can be changed using the submenus. Warning: the operation is not very smart about what it considers a closed region (it uses 4-connectedness). Also, the fill area operation is painfully slow. Texture Area -- Applies a texture to a closed region of the bitmap. A menu of predefined textures will appear. There are also two options for making your own 4x4 or 16x16 textures. These textures are added to the texture menu. You then click the mouse inside the region to be textured. The same warnings about fill area apply to texture area. The submenu item lets you remove unneeded textures from the texture menu. Invert Region -- Lets you sweep out a rectangular area of the frame using the mouse, which is then inverted (black goes to white, white to black). Clear Region -- Fills a selected rectangular area with white. Set Region -- Fills a selected rectangular area with black. Copy Region -- Copies a selected rectangular area. You sweep out the area to be copied, using the mouse. The mouse cursor is then replaced with this pattern. When it is moved to the correct location, click any mouse button, and that copy will be dropped into the bitmap. Move Region -- Moves a selected rectangular area. Like Copy Region, but erase the original after the copy has been dropped. Edit Frame with Paint -- Lets you "paint" on the bitmap with the mouse, using the standard paint interface. You paint with the left button and erase with the middle button. Use the right button to get the paint menu. Edit Frame as Bitmap -- Calls the standard bitmap editor (EDITBM). You can paint with the left button and erase with the middle button. Use the right button to get the editor menu. Edit Frame as Sketch -- Starts up a Sketch window on top of the sequence window, and loads the sketch substance associated with the current frame into that sketch viewer. You are then in the Sketch system. When done, click on one of the two items in the menu attached to the top of the sketch viewer: DONE, to move back to the bitmap, or Done, Update Bitmap, to copy the contents of the sketch viewer back into the bitmap, destroying the old contents of the bitmap. (It currently doesn't warn you about this.) Undo -- Undoes the last operation on the bitmap. You can only undo one operation back, and you can't undo the undo operation. This is most useful is somehow the Fill Area operation has blacked out your work of art. Abort -- Return from this submenu, forgetting the changes to the bitmap. Asks for confirmation. Done -- Returns from this submenu, recompiling the changes in this bitmap. Fix Menu -- Fixes the Animation Card menu to the side of the card. You can close the fixed menu to make it go away.(((HH((  TIMESROMAN  TIMESROMAN  TIMESROMAN HELVETICA TIMESROMAN GACHA  TIMESROMAN MODERN  TIMESROMAN  $    ö  _  Ö  ?   (   V   $   1    0   %  y   ° BMOBJ.GETFN3 TIMESROMAN   F  œ BMOBJ.GETFN3 O #4 !9  Ü  ż     .  Œ † ˜  ö  ‹  l  V  " 6 BMOBJ.GETFN3     Ą ˜  ƒ / .  n Ă  # w  ę  Ň   $  D   i 6ţęzş