home *** CD-ROM | disk | FTP | other *** search
/ The Best of Mecomp Multimedia 1 / Mecomp-CD.iso / amiga / datatypes / anim_datatype / anim.datatype.doc next >
Encoding:
Text File  |  1997-05-22  |  30.6 KB  |  783 lines

  1. TABLE OF CONTENTS
  2.  
  3. anim.datatype/--datasheed--
  4. anim.datatype/--input_format--
  5. anim.datatype/ADTM_LOADFRAME
  6. anim.datatype/ADTM_UNLOADFRAME
  7. anim.datatype/DTM_FRAMEBOX
  8. anim.datatype/DTM_WRITE
  9. anim.datatype/GM_LAYOUT
  10. anim.datatype/MAIN
  11. anim.datatype/OM_DISPOSE
  12. anim.datatype/OM_NEW
  13. anim.datatype/preferences
  14. anim.datatype/--datasheed--                       anim.datatype/--datasheed--
  15.  
  16.    NAME
  17.        anim.datatype -- data type for IFF ANIM animations
  18.  
  19.    SUPERCLASS
  20.        animation.datatype
  21.  
  22.    DESCRIPTION
  23.        The anim datatype, a sub-class of the animation.datatype, is used to
  24.        load and play IFF anim animations.
  25.        It supports all currently defined IFF anim compressions
  26.        (0/1/2/3/4/5/6/7/8/J) and any "interleave count".
  27.        ILBM BODY Interleaved bitmaps can be uncompressed or compressed using
  28.        cmpByteRun1.
  29.        Using the prefs-file, any sound can be attached to the animation.
  30.  
  31.    METHODS
  32.        OM_NEW -- Create a new animation object from a description file. The
  33.            source may be a file or a clipboard unit, both given as an
  34.            IFFHandle.
  35.  
  36.        OM_DISPOSE -- Dispose instance and contents (frames, colormaps, sounds
  37.            etc.), then pass msg to superclass
  38.  
  39.        OM_UPDATE -- Perform an ICM_CHECKLOOP check, and if succesfull, the
  40.            method will be executed like OM_SET downstairs.
  41.  
  42.        OM_SET -- Pass msg to superclass and call GM_RENDER if retval from
  43.            superclass was != 0UL.
  44.  
  45.        GM_LAYOUT -- Collect information from superclass, set up
  46.            struct DTSpecialInfo and send an OM_NOTIFY containing usefull
  47.            attributes.
  48.  
  49.        DTM_FRAMEBOX -- Set up object for a specified environment if
  50.            FRAMEF_SPECIFY was set in (dtf -> dtf_FrameFlags).
  51.  
  52.        DTM_WRITE -- Save object's contents in local (IFF ANIM-3) or
  53.            superclass (IFF ILBM) format.
  54.  
  55.        ADTM_LOADFRAME -- Fill in struct adtFrame with requested information
  56.            from internal FrameNode list like bitmap, colormap and sample. If
  57.            the bitmap information is not loaded yet, it will be loaded from
  58.            disk.
  59.  
  60.        ADTM_UNLOADFRAME -- Free resources obtained by ADTM_UNLOADFRAME.
  61.  
  62.        All other methods are passed unchanged to superclass.
  63.  
  64.    ATTRIBUTES
  65.        Following attributes are set by the object and are READ-ONLY for
  66.        applications:
  67.        ADTA_Width              -- set by BitMapHeader (ILBM BMHD chunk)
  68.        ADTA_Height             -- set by BitMapHeader (ILBM BMHD chunk)
  69.        ADTA_Depth              -- set by BitMapHeader (ILBM BMHD chunk)
  70.        ADTA_Frames             -- number of frames in animation
  71.        ADTA_FramesPerSecond    -- FPS rate (possibly set by DPAN chunk)
  72.        ADTA_KeyFrame           -- Key frame of animation
  73.        DTA_ObjName             -- set by anim file (IFF generic NAME chunk)
  74.        DTA_ObjAuthor           -- set by anim file (IFF generic AUTH chunk)
  75.        DTA_ObjAnnotation       -- set by anim file (IFF generic ANNO chunk)
  76.        DTA_ObjCopyright        -- set by anim file (IFF generic (C)  chunk)
  77.        DTA_ObjVersion          -- set by anim file (IFF generic FVER chunk)
  78.        DTA_NominalVert         -- same as ADTA_Width
  79.        DTA_NominalHoriz        -- same as ADTA_Height
  80.  
  81.    BUGS
  82.        - In large videos, the frames at the end will be played slower than
  83.          those at the beginning of the file. This is the result of the
  84.          sequential search internally used (only serious with more than 25000
  85.          frames (mc6030/50mhz)).
  86.          May or may not be fixed.
  87.  
  88.        - Currently, after a full playback mainly all frames are cached
  89.          because animation.datatype does not flush enougth frames during
  90.          playback. This is not a bug of animation.datatype. I don't know that
  91.          return codes of the ADTM_LOADFRAME method which causes
  92.          animation.datatype to flush unused frames. Without information from
  93.          CBM, Amiga Technologies or David Junod I cannot fix this bug.
  94.          Comments welcome !
  95.          Custom animation players which uses animation.datatype subclasses
  96.          for loading (like my own "DBufDTAnim", Aminet:gfx/show/DBufDTAnim)
  97.          don't have this problem because they're using a
  98.          ADTM_LODAFRAME-draw bitmap-ADTM_UNLODAFRAME-cycle.
  99.  
  100.        - Animations with more than 8 planes will crash the system
  101.          (anim.datatype handels 12 bit animations, but animation.datatype
  102.          handles only anims with a depth of 8).
  103.  
  104.        - ANIM-1-Code has been disabled because it draws the blocks to X and H
  105.          dimensions which are divisible by 8 (can't be fixed: no test files).
  106.  
  107.        - The ANHD (AnimHeader) ah_Mask-field will be ignored for ANIM-0,
  108.          2,3,4,5,6,7,8,J. ANIM-1 (acmpXORILBM) respects this.
  109.  
  110.        - The BMHD (BitMapHeader) bmh_Masking-field will be ignored.
  111.  
  112.        - ANIM-4 isn' tested yet (no test files).
  113.  
  114.        - ANIM-4 has been disabled for the reason above.
  115.  
  116.        - ANIM-J is twice as slow as it should be because ANIM-J operates on
  117.          interleaved bitmaps, but (currently) anim.datatype uses
  118.          non-interleaved bitmaps internally.
  119.  
  120.        - If no DPAN chunk occurs in the file, the FPS-Rate (Frames Per
  121.          Second) is hard-coded to 5. Other FPS-Rates can be set by the
  122.          prefs-file (per project if you use the MATCHPROJECT option).
  123.  
  124.        - Any entries in the ANHD (AnimHeader) ah_AbsTime and ah_RelTime are
  125.          ignored.
  126.  
  127.        - Loading from disk is slower than it could be because internal
  128.          buffers are allocated using the MEMF_CLEAR flag (Relict; for
  129.          debugging).
  130.  
  131.        - Any flags in the ANHD (AnimHeader) ah_Flags field except ahfLongData
  132.          (bit 0; used by Anim-7/8) and ahfXOR (bit 1; used for all
  133.          compression types except ANIM-J (not required, ANIM-J has an
  134.          internal XOR mode) and anim-0) are ignored. ANIM-4 suffers under
  135.          these problems (cannot be fixed without example files).
  136.  
  137.        - ANIM-6 left/right channels are viewed interleaved. Upon request,
  138.          I can add options to view the left or right channel only.
  139.  
  140.        - The internal "rollback" machanism used for creating full images from
  141.          given DLTAs is slow. This is caused by implementation details,
  142.          not the idea itself.
  143.  
  144.        - If an animations contains colormaps-per-frame and the given CMAP
  145.          contains less colors than (1UL << anim_depth), the remaining colors
  146.          are filled with black. I don't know where to take the remaining
  147.          colors (from last frame/previous (e.g. interleaved) frame)...
  148.          Comments __VERY__ welcome.
  149.  
  150.        - If the sample is too short to fit into the animation, at the end of
  151.          the sample a small part of noise occurs. This is caused by
  152.          the buffer size set in ADTM_LOADFRAME (e.g. full SamplesPerFrame-
  153.          length), but the buffer contains only a part of valid data.
  154.  
  155.    TODO
  156.        - Fixing the bugs above.
  157.  
  158.        - Internal cache for packed DLTA chunks. This may speed up the
  159.          internal rollback mechanism used for random frame access.
  160.  
  161.        - Other compression formats when saving, including the popular
  162.          ANIM-5.
  163.  
  164.        - Add a way how to calculate the FPS rate from stream data when a
  165.          DPAN chunk is missing or contains a 0 FPS.
  166.  
  167.        - PERIOD/SAMPLESPERFRAME options to modify the given sound.
  168.  
  169.        - Write the "--input_format--"-Autodoc section.
  170.  
  171.    HISTORY
  172.        V1.1
  173.          Released to the Waldspecht-BBS for testing.
  174.  
  175.        V1.2
  176.          Released to the Waldspecht-BBS for testing.
  177.  
  178.        V1.3
  179.          Released to the Waldspecht-BBS for testing.
  180.  
  181.        V1.4
  182.          First Aminet release.
  183.  
  184.          - Partial code cleanup
  185.  
  186.          - Recompiled with SAS/C 6.57.
  187.  
  188.          - Redirected serial "verbose" output to a CON:-window, including
  189.            the matching VERBOSE prefs option.
  190.  
  191.          - Changed the VERBOSE output a little bit.
  192.  
  193.        V1.5
  194.          - Implemented palette per frame (ILBM CMAPs per frame).
  195.            (animation.datatype 40.7 does not support these colormap changes
  196.            per frame (it's output may look like a color trash). Custom
  197.            animation players which uses animation.datatype subclasses for
  198.            loading (like my DBufDTAnim) don't have this problem.
  199.            animation.datatype will support these colormaps-per-frame in one
  200.            of the next updates.)
  201.  
  202.          - Internal changes to be able to support up to 12 planes in an anim.
  203.            The animation.datatype 40.7 supports only anims up to 8 planes,
  204.            otherwise the machine will crash. My animation.datatype V41 will
  205.            support this.
  206.  
  207.          - The generic IFF ANNO, AUTH, FVER, NAME and "(C) " chunks are now
  208.            moved to the corresponsing DataTypes attributes if they appear in
  209.            a FORM ILBM.
  210.            The data will be moved like this:
  211.            ANNO -> DTA_ObjAnnotation
  212.            AUTH -> DTA_ObjAuthor
  213.            FVER -> DTA_ObjVersion
  214.            NAME -> DTA_ObjName
  215.            (C)  -> DTA_ObjCopyright
  216.  
  217.          - DTA_Title equals now to DTA_ObjName (e.g. a given NAME chunk). If
  218.            this is NULL, DTA_Name is used instead.
  219.  
  220.          - If a DPAN (DPaint Anim) chunk occurs, the FPS rate is taken from
  221.            the "flags" field.
  222.            Thanks to Brian Jones (bjones@cadvision.com) for reporting this.
  223.            If the value taken is 0, the old, fixed rate (5 fps) is used
  224.            again.
  225.  
  226.          - Fixed a hole in the state machine which causes problems when an
  227.            animation contains no frames. Should work now.
  228.            Fixed.
  229.  
  230.          - An error in the prefs-file will now force the VERBOSE option.
  231.  
  232.          - Implemented sound. A sample can now be attached to the animation
  233.            using the SAMPLE/VERBOSE options.
  234.            Note that anim.datatype is still a GID_ANIMATION (anim WITHOUT
  235.            sound) type datatype.
  236.            The GID_#? idetifiers belongs to the source data, not the
  237.            modifications done by a datatype code (a IFF ANIM does not contain
  238.            any sound data, the sound is attached later).
  239.  
  240.        V1.6
  241.          - Disabled the optimizer. This fixes a mysterious System-Crash
  242.            when resizing the parent application window. Don't know why this
  243.            works now :-((
  244.  
  245.        V1.7
  246.          - Reorganisation of source (includes small cleanup).
  247.  
  248.          - Fixed a silly hole in the state machine which causes the
  249.            datatype to return errors on colormap changes (e.g. ILBM CMAPs).
  250.            Error codes were returned like this:
  251.            (Number_of_colors_in_CMAP * 3).
  252.  
  253.          - Enabled the optimizer (see V1.6) again. Since reorganisation of
  254.            the src, the problem never occured again. Any hint ?
  255.  
  256.          - Fixed a bug in LibExpunge (didn't check lib_OpenCnt), which is
  257.            also present in all my other external BOOSI classes (and
  258.            datatypes).
  259.            Thanks to Guenter Niki (gniki@informatik.uni-rostok.de) for
  260.            reporting this bug.
  261.  
  262.        V1.8
  263.          * Shareware
  264.            Starting with V1.8, anim.datatype is Shareware.
  265.  
  266.          - Added experimental stack swapping code. The "Need more stack"-
  267.            requester has been removed for this reason.
  268.            This also fixes a possible deadlock of "input.device" because
  269.            the GM_LAYOUT method was running with low stack.
  270.  
  271.          - Uses OpenFromLock when obtaining a fh for random frame access.
  272.            This allows the usage of "virtual filesystems" (datatypes.library
  273.            V45 allows such things).
  274.  
  275.          - Now supports saving in the local format (e.g. IFF ANIM,
  276.            currently only ANIM-3).
  277.            Note that saveing begins with the __current__ frame and can be
  278.            controlled with the ADTA_Frame, ADTA_Frames and
  279.            ADTA_FrameIncrement attributes.
  280.  
  281.          - Now support DTST_RAM (creates an empty anim.datatype object).
  282.  
  283.          - Now supports subclasses of anim.datatype, mainly to fill in
  284.            the ADTM_LOADFRAME/ADTM_UNLOADFRAME methods when using an empty
  285.            (e.g. created with DTST_RAM) anim.datatype object.
  286.  
  287.          - Now the high order bits of each color gun are replicated through
  288.            the whole INT32 in the colormap.
  289.  
  290.        V1.9
  291.          - Fixed a bug which prevents saving in local (IFF ANIM-3) format
  292.            using an (created using DTST_RAM) empty object (like "DTConvert" 
  293.            does).
  294.            Fixed.
  295.  
  296.    NOTES
  297.        This datatype first scans the whole animation to get index
  298.        information (if the LOADALL switch was set in the prefs-file,
  299.        the entire animation will be loaded), colormaps will be loaded
  300.        immediately.
  301.  
  302.    SEE ALSO
  303.        animation.datatype,
  304.        mpegsystem.datatype, mpegvideo.datatype,
  305.        picmovie.datatype,
  306.        cdxl.datatype. avi.datatype, quicktime.datatype,
  307.        moviesetter.datatype,
  308.        film.datatype,
  309.        directory.datatype,
  310.        markabletextdtclass
  311.  
  312. anim.datatype/--input_format--                 anim.datatype/--input_format--
  313.  
  314.     NAME
  315.         IFF ANIM -- IFF animation format
  316.  
  317.     DESCRIPTION
  318.         <Not written yet, sorry>
  319.  
  320.         acmpILBM             -- ILBM BODY
  321.         acmpXORILBM          -- XOR
  322.         acmpLongDelta        -- Long Delta
  323.         acmpShortDelta       -- Short Delta
  324.         acmpDelta            -- General Delta
  325.         acmpByteDelta        -- Byte Vertical
  326.         acmpStereoByteDelta  -- Stereo Byte Vertical (left/right channel)
  327.         acmpAnim7            -- Anim7 (nonstandard format)
  328.         acmpAnim8            -- Anim5 compression using LONG/WORD data
  329.         acmpAnimJ            -- Eric Grahams compression format
  330.  
  331.  
  332.     SEE ALSO
  333.         - "ANIM.DOC" IFF Animspecs,
  334.           "ANIM.BRUSH.DOC" Anim specs,
  335.           "ANIM.OP6" Anim specs,
  336.           "ANIM.OP8" Anim specs
  337.  
  338.         - ARKM Devices (Addison Wesley): IFF part
  339.  
  340.         - iffparse.library autodocs
  341.  
  342.         - AAP/AAC docs (for a complete description of the Anim7 format)
  343.  
  344. anim.datatype/ADTM_LOADFRAME                     anim.datatype/ADTM_LOADFRAME
  345.  
  346.     NAME
  347.         ADTM_LOADFRAME -- Load frame
  348.  
  349.     FUNCTION
  350.         The ADTM_LOADFRAME method is used to obtain the bitmap and timing
  351.         data of the animation.
  352.         The given timestamp will be used to find a matching timestamp
  353.         in the internal FrameNode list. If it was found, the corresponding
  354.         timing, bitmap and colormap data are stored into the struct
  355.         adtFrame. If the bitmap wasn't loaded, this method attempts to
  356.         load it from disk.
  357.  
  358.     RESULT
  359.         Returns always non-zero,
  360.         the bitmap ptr if a bitmap was found,
  361.         1UL otherwise.
  362.  
  363. anim.datatype/ADTM_UNLOADFRAME                 anim.datatype/ADTM_UNLOADFRAME
  364.  
  365.     NAME
  366.         ADTM_UNLOADFRAME -- Load frame contents
  367.  
  368.     FUNCTION
  369.         The ADTM_UNLOADFRAME method is used to release the contents of a
  370.         animation frame.
  371.  
  372.         This method frees the bitmap data found in adtFrame.
  373.  
  374.     RESULT
  375.         Returns always 0UL.
  376.  
  377. anim.datatype/DTM_FRAMEBOX                         anim.datatype/DTM_FRAMEBOX
  378.  
  379.     NAME
  380.         DTM_FRAMEBOX -- Set up object for a specified environment
  381.  
  382.     FUNCTION
  383.         The DTM_FRAMEBOX method is used to set up for a specified
  384.         environment. This method is passed to the superclass after
  385.         anim.datatype instance finished it's work.
  386.  
  387.         Only if FRAMEF_SPECIFY is set in (dtf -> dtf_FrameFlags), the
  388.         anim.datatype instance will modify the ADTA_Remap to FALSE if
  389.         the NOREMAP switch in the prefs file was set and the animation
  390.         depth matches the given (frameinfo -> fri_Screen -> BitMap . Depth)
  391.         depth.
  392.  
  393.     RESULT
  394.         The value from the superclass is returned.
  395.  
  396.     SEE ALSO
  397.         3.1_Examples2:DataTypes/Src/ClipView/clipview.c
  398.  
  399. anim.datatype/DTM_WRITE                               anim.datatype/DTM_WRITE
  400.  
  401.     NAME
  402.         DTM_WRITE -- Save data
  403.  
  404.     FUNCTION
  405.         This method saves the object's contents to disk.
  406.  
  407.         If dtw_Mode is DTWM_IFF, the method is passed unchanged to the
  408.         superclass, animation.datatype, which writes a single IFF ILBM
  409.         picture.
  410.  
  411.         If dtw_mode is DTWM_RAW, the object saved an IFF ANIM stream to
  412.         the filehandle given, starting with the current frame until
  413.         the end is reached.
  414.         The sequence saved can be controlled by the ADTA_Frame, ADTA_Frames
  415.         and ADTA_FrameIncrement attributes (see TAGS section below).
  416.  
  417.     TAGS
  418.         When writing the local ("raw") format, IFF ANIM, the following
  419.         attributes are recognized:
  420.  
  421.         ADTA_Frame (ULONG) - start frame, saving starts here.
  422.             Defaults to the current frame displayed.
  423.  
  424.         ADTA_Frames (ULONG) - the number of frames to be saved,
  425.             Defaults to (max_num_of_frames - curr_frame).
  426.  
  427.         ADTA_FrameIncrement (ULONG) - frame increment when saving.
  428.             Defaults to 1, which means: "jump to next frame".
  429.  
  430.     NOTE
  431.         - Any sound attached to the animation will NOT be saved.
  432.  
  433.         - A CTRL-D signal to the writing process aborts the save.
  434.  
  435.     RESULT
  436.         Returns 0 for failure (IoErr() returns result2), non-zero
  437.         for success.
  438.  
  439. anim.datatype/GM_LAYOUT                               anim.datatype/GM_LAYOUT
  440.  
  441.    NAME
  442.        GM_LAYOUT -- Layout animation object
  443.        DTM_PROCLAYOUT -- Layout animation object on appliaction's
  444.                          process
  445.  
  446.    FUNCTION
  447.        This method is passed to the superclass first.
  448.        Then it collects information from superclass, set up
  449.        struct DTSpecialInfo and send an OM_NOTIFY containing the following
  450.        attributes:
  451.        DTA_VisibleVert,   (DTA_Domain -> Height)
  452.        DTA_TotalVert,     (same as ADTA_Height)
  453.        DTA_NominalVert,   (same as ADTA_Height)
  454.        DTA_VertUnit,      1UL,
  455.        DTA_VisibleHoriz,  (DTA_Domain -> Width),
  456.        DTA_TotalHoriz,    (same as ADTA_Width),
  457.        DTA_NominalHoriz,  (same as ADTA_Width),
  458.        DTA_HorizUnit,     1UL,
  459.        GA_ID,             (GadgetID),
  460.        DTA_Title,         (same as DTA_ObjName, if missing, DTA_Name is
  461.                           used),
  462.        DTA_Busy,          FALSE,
  463.        DTA_Sync,          TRUE
  464.  
  465.     RESULT
  466.         The value from the superclass is returned.
  467.  
  468. anim.datatype/MAIN                                         anim.datatype/MAIN
  469.  
  470.     INTRODUCTION
  471.         Datatypes class for IFF ANIM animations. Based on the CBM datatypes
  472.         example source/ documents written by David Junod and the public
  473.         domain Anim5 code by Jim Kent.
  474.  
  475.     SHAREWARE
  476.         Starting with V1.8, anim.datatype is Shareware.
  477.  
  478.         "anim.datatype" is this version and it's contributed files
  479.         are Copyright 1995/96/97 by Roland Mainz.
  480.         All rights reserved.
  481.  
  482.         You are allowed to use anim.datatype for 30 days. If you
  483.         want to use it after this time, please register.
  484.         The registration fee is 15 DM, 10 US-$ or equivalent.
  485.         There is no different registered version, this version of
  486.         anim.datatype is fully functional.
  487.  
  488.         Payment my be done using bank transfer (prefereed; see AUTHOR
  489.         section below for my bank account), euro-scheques (on my name)
  490.         or cash money in an envelope (ON YOUR OWN RISK !).
  491.  
  492.         New versions are released through the Aminet.
  493.  
  494.         As a service for registered users I will notify you about
  495.         new versions if I get your email address.
  496.         To be able to do this, you should fill in the following form
  497.         and send this to my email/snail-mail address:
  498.  
  499.         -- snip --
  500.  
  501.         Product/Version: anim.datatype 1.9 (22.05.97)______________________
  502.  
  503.         Name:     _________________________________________________________
  504.  
  505.         Street:   _________________________________________________________
  506.  
  507.         City/ID:  _________________________________________________________
  508.  
  509.         Country:  _________________________________________________________
  510.  
  511.         Phone:    _________________________________________________________
  512.  
  513.         EMail:    _________________________________________________________
  514.  
  515.         Shareware fee: _ 10 US-$
  516.                        _ 15 DM
  517.                        _ other (in a amount which equals to the US-$ fee)
  518.  
  519.         Payed by  _ cash money in envelope (on your own risk !)
  520.                   _ euro-scheque (on my name)
  521.                   _ bank transfer
  522.  
  523.         Comments: _________________________________________________________
  524.  
  525.                   _________________________________________________________
  526.  
  527.                   _________________________________________________________
  528.  
  529.         -- snip --
  530.  
  531.     REQUIREMENTS
  532.         - You need at least Kick/WB 3.0.
  533.           | Many people wrote me that they cannot find an
  534.           | "animation.datatype" class.
  535.           | Only the 3.1 release contains it. (Subclasses of)
  536.           | animation.datatype can run under 3.0.
  537.  
  538.         - "datatypes/animation.datatype", >= V39.
  539.           "animation.datatype 40.7 (28.09.93)" requires itself some
  540.           libraries/boopsi classes:
  541.         - "realtime.library", >= V39              - for timing
  542.         - "gadgets/tapedeck.gadget" (any version) - for the controls
  543.  
  544.            If you want to attach samples, you need "sound.datatype" >= V39
  545.            and your prefereed subclass (8svx.datatype for IFF 8SVX samples
  546.            etc.).
  547.  
  548.     USAGE
  549.         If the datatypes descriptor file was activated, any attempt to load
  550.         an IFF anim stream using GMultiView, MultiView, AmigaGuide or
  551.         SwitchWindow will load and play the animation. If the source was a
  552.         file, anim.datatype loads frames dynamically from disk, if the
  553.         source was the clipboard, anim.datatype caches the whole anim.
  554.  
  555.         anim.datatype supports also the clipboard as input, e.g.
  556.         "MultiView CLIPBOARD", ClipView or SwitchWindow are able to show
  557.         IFF ANIMs from clipboard.
  558.  
  559.         If you want to save the current animation in anim.datatype's local
  560.         format, use MultiView's "Project/Save As..." menu (or GMultiView's
  561.         "Project/Save As Raw...").
  562.         anim.datatype saves the current animation, stating with the current
  563.         frame as IFF ANIM-3.
  564.         Other compression formats such as ANIM-0/1/2/4/5/7/8/J will
  565.         be implemeted later.
  566.  
  567.         If you want to attach samples to the animation, you must edit the
  568.         prefs file (ENV:Classes/DataTypes/anim.prefs) and add the following
  569.         line:
  570.         VERBOSE SAMPLE="ram:have_a_nice_day.8svx"
  571.         Which loads and attaches the sample "ram:have_a_nice_day.8svx" to the
  572.         animation. See anim.datatype.doc/preferences for a complete
  573.         description of the prefs file.
  574.  
  575.     INSTALLATION
  576.         After unpacking this archive:
  577.         Because this version does not include an Installer script, you have
  578.         to do the installation manually through the shell:
  579.  
  580.           - Unpack this archive and copy the "anim.datatype" to
  581.             SYS:Classes/DataTypes:
  582.  
  583.      Copy CLONE FROM "anim.datatype" TO "SYS:Classes/DataTypes/anim.datatype"
  584.  
  585.           - Then copy the datatypes descriptor into the DEVS:DataTypes
  586.             directory.
  587.             If the descriptor already exists, you should not replace it,
  588.             otherwise you may loose "toolnodes" and other settings stored in
  589.             the existing descriptor.
  590.  
  591.      Copy CLONE FROM "ANIM(%|.info)" TO DEVS:Datatypes/
  592.  
  593.     SOURCE
  594.         Partial source is included as an example how to write an
  595.         animation.datatype subclass which deals with things like
  596.         "delta-compression" techniques.
  597.  
  598.     AUTHOR
  599.         If you want to blame me, report any bugs, or wants a new version
  600.         send your letter to:
  601.                         Roland Mainz
  602.                         Hohenstaufenstraße 8
  603.                         52388 Nörvenich
  604.                         GERMANY
  605.  
  606.         Phone: (+49)(0)2426/901568
  607.  
  608.         Bank account: Kto. 4866 02-508
  609.         At:           Postbank Köln,
  610.                       BLZ 37010050
  611.  
  612.         EMAIL is also available (if you want to send me attachments
  613.         larger than 1MB (up to 5MB, more with my permission):
  614.  
  615.         GISBURN@w-specht.rhein-ruhr.de
  616.  
  617.         Up to July 1997 I'm reachable using this email address, too:
  618.         Reinhold.A.Mainz@KBV.DE
  619.  
  620.         | Please put your name and address in your mails !
  621.         | German mailers should add their phone numbers.
  622.         | See BUGS section above when submitting bug reports.
  623.  
  624.         Sorry, but I can only look once a week for mails.
  625.         If you don't hear something from me within three weeks, please
  626.         send your mail again (but watch about new releases) (problems with
  627.         this email port are caused by reconfigurations, hackers, network
  628.         problems etc.).
  629.  
  630.         The  entire  "anim.datatype"  package  may  be  noncommercially
  631.         redistributed, provided  that  the package  is always  distributed
  632.         in it's complete  form (including it's documentation). A small
  633.         copy fee  for media costs is okay but any kind of commercial
  634.         distribution is strictly forbidden without my permission !
  635.         Comments and suggestions how to improve this program are
  636.         generally appreciated!
  637.  
  638.         Thanks to David Junod, who wrote the animation.datatype and lots of
  639.         the datatypes example code, Jim Kent, Eric Graham and other people
  640.         for their compression formats, Matt Dillon for his DICE, Olaf
  641.         'Olsen' Barthel for his help, ideas and some text clips from his
  642.         documentations.
  643.  
  644. anim.datatype/OM_DISPOSE                             anim.datatype/OM_DISPOSE
  645.  
  646.     NAME
  647.         OM_DISPOSE -- Delete a anim.datatype object.
  648.  
  649.     FUNCTION
  650.         The OM_DISPOSE method is used to delete an instance of the
  651.         anim.datatype class. This method is passed to the superclass when
  652.         it has completed.
  653.         This method frees all frame nodes and their contents (bitmaps,
  654.         colormaps, samples etc.)
  655.  
  656.     RESULT
  657.         The object is deleted. 0UL is returned.
  658.  
  659. anim.datatype/OM_NEW                                     anim.datatype/OM_NEW
  660.  
  661.     NAME
  662.         OM_NEW -- Create a anim.datatype object.
  663.  
  664.     FUNCTION
  665.         The OM_NEW method is used to create an instance of the anim.datatype
  666.         class.  This method is passed to the superclass first. After this,
  667.         anim.datatype parses the prefs file and makes a scan through
  668.         the data to get index information. Frame bitmaps are loaded if the
  669.         input stream isn't seekable (e.g. IFF handle/clipboard),
  670.         colormaps and the first frame are loaded immediately.
  671.         If a sample was set in the prefs, it will be loaded and attached
  672.         to the animation.
  673.  
  674.         Subclasses of anim.datatype are not supported. Any attempt to
  675.         create a subclass object of anim.datatype will be rejected by this
  676.         method.
  677.  
  678.     ATTRIBUTES
  679.         The following attributes can be specified at creation time.
  680.  
  681.         DTA_SourceType (ULONG) -- Determinates the type of DTA_Handle
  682.             attribute. DTST_FILE, DTST_CLIPBOARD and DTST_RAM are supported.
  683.             If any other type was set in a given DTA_SourceType,
  684.             OM_NEW will be rejected.
  685.             A sourcetype of DTST_CLIPBOARD forces the LOADALL prefs
  686.             switch (can't seek on clipboard).
  687.             Defaults to DTST_FILE.
  688.  
  689.         DTA_Handle -- For both DTST_FILE and DTST_CLIPBOARD, a
  690.             (struct IFFHandle *) is expected. This handle will be
  691.             created by datatypesclass depeding on the DTF_#? flag, which
  692.             is DTF_IFF here.  DTST_FILE, datatypesclass creates
  693.             a IFF handle from the given DTA_Name and DTA_Handle (a
  694.             BPTR returned by Lock), if DTST_CLIPBOARD, datatypesclass
  695.             passes the given (IFF) handle through.
  696.             A DTST_RAM (create empty object) source type requires a NULL
  697.             handle.
  698.  
  699.     RESULT
  700.         If the object was created a pointer to the object is returned,
  701.         otherwise NULL is returned.
  702.  
  703. anim.datatype/preferences                           anim.datatype/preferences
  704.  
  705.    NAME
  706.        preferences
  707.  
  708.    DESCRIPTION
  709.        The "ENV:Classes/DataTypes/anim.prefs" file contains global
  710.        settings for the datatype.
  711.        The preferences file is an ASCII file containing one line where the
  712.        preferences can be set.
  713.        It can be superset by a local variable with the same name.
  714.  
  715.        Each line can contain settings, special settings for some projects
  716.        can be set using the MATCHPROJECT option.
  717.        Lines beginning with a '#' or ';' chars are treated as comments.
  718.        Lines are limitted to 256 chars.
  719.  
  720.    TEMPLATE
  721.        MATCHPROJECT/K,MODEID/K/N,NOCMAPS/S,NOREMAP/S,FPS/K/N,SAMPLE/K,
  722.        VOLUME/K/N,LOADALL/S,VERBOSE/S
  723.  
  724.        MATCHPROJECT -- The settings in this line belongs only to this
  725.            project(s), e.g. if the case-insensitive pattern does not match,
  726.            this line is ignored.
  727.            The maximum length of the pattern is 128 chars.
  728.            Defaults to #?, which matches any project.
  729.  
  730.        MODEID -- Select screen mode id of datatype (will be stored in
  731.            ADTA_ModeID). Note that the DOS ReadArgs function used for parsing
  732.            fetches a SIGNED long. The bit 31 will be represented by minus
  733.            '-'. (example: "MODEID=266240" sets the mode to the A2024 screen
  734.            mode id)
  735.            Defaults to 0, which means: Use the screen mode from CAMG chunk,
  736.            if missing use the best screenmode available for the given width,
  737.            height and depth.
  738.  
  739.        NOCMAPS -- Don't load/use colormaps per frame. Only the initial
  740.           colormap will be used.
  741.           The current version of animation.datatype (V40.7 (28.09.93)) does
  742.           not implement per frame colormaps, it's output may look trashed.
  743.           Custom players like "DBufDTAnim" does support
  744.           "per frame colormaps",
  745.           animation.datatype V41 will implement "per frame colormaps".
  746.  
  747.        FPS -- Frames Per Second
  748.            Defaults to FPS set by DPAN chunk. If the DPAN chunk is missing
  749.            a fixed 5 fps rate is used.
  750.            A value of 0 here means: Use default FPS.
  751.  
  752.        SAMPLE -- Attach the given sample to the animation. The sample will
  753.            be loaded using datatypes (GID_SOUND).
  754.            Only one sample can be attached to one animationstream, any
  755.            following attempt to attach a sample will be ignored.
  756.  
  757.        VOLUME -- Volume of the sound when playing.
  758.            Defaults to 64, which is the maximum. A value greater than 64 will
  759.            be set to 64.
  760.  
  761.        LOADALL -- Load all frames into memory. If the source input is a
  762.            clipboard, this option is always set.
  763.  
  764.        VERBOSE -- Print information about the animation. Currently
  765.           the frame numbers and the used compression are printed, after all
  766.           number of scanned/loaded frames, set FPS rate, dimensions (width/
  767.           height/depth), sample information etc.
  768.  
  769.    NOTE
  770.        An invalid prefs file line will be ignored and forces the VERBOSE
  771.        output.
  772.  
  773.    BUGS
  774.        - Low memory may cause that the prefs file won't be parsed.
  775.  
  776.        - Lines are limitted to 256 chars
  777.  
  778.        - An invalid prefs file line will be ignored.
  779.  
  780.        - The sample path length is limitted to 200 chars. A larger
  781.          value may crash the machine if an error occurs.
  782.  
  783.