*** ../Mng20000822/mng-0.97b-20000822-pdg-h20.txt Tue Aug 22 21:27:52 2000 --- mng-0.97c-20000827-pdg-h20.txt Tue Aug 29 11:26:12 2000 *************** *** 1,4 **** ! MNG (Multiple-image Network Graphics) Format Version 0.97b For list of authors, see Credits (Chapter 18). --- 1,4 ---- ! MNG (Multiple-image Network Graphics) Format Version 0.97c For list of authors, see Credits (Chapter 18). *************** *** 100,106 **** + 4.2.6. CLON Clone an object + 4.2.7. DHDR, Delta-PNG chunks, IEND + 4.2.8. PAST Paste an image into another ! + 4.2.9. DISC Discard objects o 4.3. Critical MNG image displaying chunks + 4.3.1. BACK Background + 4.3.2. FRAM Frame definitions --- 100,107 ---- + 4.2.6. CLON Clone an object + 4.2.7. DHDR, Delta-PNG chunks, IEND + 4.2.8. PAST Paste an image into another ! + 4.2.9. MAGN Magnify objects ! + 4.2.10. DISC Discard objects o 4.3. Critical MNG image displaying chunks + 4.3.1. BACK Background + 4.3.2. FRAM Frame definitions *************** *** 176,186 **** o 12.3. Uniform Resource Identifier (URI) * 13. Rationale * 14. Revision History ! o 14.1. Version 0.97b ! o 14.2. Version 0.97a ! o 14.3. Version 0.97 ! o 14.4. Version 0.96 ! o 14.5. Version 0.95 * 15. References * 16. Security Considerations * 17. Appendix: Examples --- 177,188 ---- o 12.3. Uniform Resource Identifier (URI) * 13. Rationale * 14. Revision History ! o 14.1. Version 0.97c ! o 14.2. Version 0.97c ! o 14.3. Version 0.97a ! o 14.4. Version 0.97 ! o 14.5. Version 0.96 ! o 14.6. Version 0.95 * 15. References * 16. Security Considerations * 17. Appendix: Examples *************** *** 526,531 **** --- 528,538 ---- be 0 or 1, to indicate whether transparency is absent or present. MNG-VLC is a proper subset of MNG. + nullify + To nullify a chunk is to undo its effect, restoring the datastream to + the condition it would have had if the chunk being nullified had never + appeared. + object, object_id An image or a nonviewable basis object. The object_id is an unsigned sixteen-bit number that serves as the identifier of a set of object *************** *** 667,672 **** --- 674,682 ---- chunk. When an embedded object is "potentially visible," it can be displayed "on-the-fly" as it is being decoded. Later, the SHOW chunk can direct that a "potentially visible" viewable object be displayed. + It is permitted to change the potential visibility of "frozen" objects; + if this is done, the potential visibility must be restored by the + encoder prior to the end of the segment. Object is viewable. An object is viewable if it has a viewable object buffer. It is *************** *** 685,695 **** Location. The X and Y location of an object is determined by the DEFI chunk that ! introduced it, and can be changed by the MOVE chunk. Clipping boundaries. The clipping boundaries of an object are determined by the DEFI chunk ! that introduced it, and can be changed by means of the CLIP chunk. Additional information. While not required by this specification, applications may wish to --- 695,711 ---- Location. The X and Y location of an object is determined by the DEFI chunk that ! introduced it, and can be changed by the MOVE chunk. It is permitted to ! change the location of "frozen" objects, provided that the encoder ! includes a MOVE chunk prior to the end of the segment that restores ! their locations to their "saved" positions. Clipping boundaries. The clipping boundaries of an object are determined by the DEFI chunk ! that introduced it, and can be changed by means of the CLIP chunk. It ! is permitted to change the clipping boundaries of "frozen" objects, ! provided that the encoder includes a CLIP chunk prior to the end of the ! segment that restores the boundaries to their "saved" values. Additional information. While not required by this specification, applications may wish to *************** *** 1044,1059 **** A MNG-LC (i.e., a "low-complexity MNG") datastream must have a simplicity profile with bit 0 equal to 1 and all other bits except possibly for bits 1, 3, 6, and 7 ("simple MNG" MNG features and transparency) equal to zero. If ! bit 4 (JNG) is 1, the datastream is a "MNG-LC with JNG" datastream. MNG-LC ! decoders are allowed to reject such datastreams unless they have been ! enhanced with JNG capability. A MNG-VLC (i.e., a "very low-complexity MNG") datastream must have a simplicity profile with bit 0 equal to 1 and all other bits except possibly for bits 3, 6, and 7 (transparency) equal to 0. If bit 4 (JNG) is 1, the ! datastream is a "MNG-VLC with JNG" datastream. MNG-VLC decoders are allowed ! to reject such datastreams unless they have been enhanced with JNG ! capability. Encoders that write a nonzero simplicity profile should endeavor to be accurate, so that decoders that process it will not unnecessarily reject --- 1060,1075 ---- A MNG-LC (i.e., a "low-complexity MNG") datastream must have a simplicity profile with bit 0 equal to 1 and all other bits except possibly for bits 1, 3, 6, and 7 ("simple MNG" MNG features and transparency) equal to zero. If ! bit 4 (JNG) is 1, the datastream is a "MNG-LC with JNG" datastream that ! carries an image or an alpha channel. MNG-LC decoders are allowed to reject ! such datastreams unless they have been enhanced with JNG capability. A MNG-VLC (i.e., a "very low-complexity MNG") datastream must have a simplicity profile with bit 0 equal to 1 and all other bits except possibly for bits 3, 6, and 7 (transparency) equal to 0. If bit 4 (JNG) is 1, the ! datastream is a "MNG-VLC with JNG" datastream. The JNG datastream might ! carry an image or an alpha channel. MNG-VLC decoders are allowed to reject ! such datastreams unless they have been enhanced with JNG capability. Encoders that write a nonzero simplicity profile should endeavor to be accurate, so that decoders that process it will not unnecessarily reject *************** *** 1449,1472 **** 0: Basis object is not viewable. 1: Basis object is viewable. The alpha_sample can be omitted if the viewable field is also omitted. If so, and the color_type is one that requires alpha, the alpha value corresponding to an opaque pixel will be used. If the color samples are ! omitted, zeroes will be used. The decoder is responsible for converting the ! color and alpha samples to the appropriate format and sample depth for the ! specified color_type. When color_type=3, the decoder must generate a palette ! of length 2^sample_depth, whose first entry contains the given {red_sample, ! green_sample, blue_sample} triple, and whose remaining entries are filled ! with zeroes. If the viewable field is omitted, the object is not viewable. The color and alpha samples are written as four sixteen-bit samples regardless of the color_type and sample_depth. When the sample_depth is less than sixteen, the least significant bits are used and the remaining bits must be zero filled. When color_type=3, the least significant byte of each ! color sample is used and the upper byte must be zero. When color_type=0 or ! color_type=4, the green and blue samples must be present but must be ignored ! by decoders. The BASI datastream contains PNG chunks, but is not necessarily a PNG datastream. It can be incomplete or empty and it can deviate in certain ways from the PNG specification. It can serve as a parent object for a Delta-PNG --- 1465,1504 ---- 0: Basis object is not viewable. 1: Basis object is viewable. + The sample depth, color type, compression method, filter type, and interlace + type must be valid PNG types, and the width and height must be within the + valid range for PNG datastreams. + The alpha_sample can be omitted if the viewable field is also omitted. If so, and the color_type is one that requires alpha, the alpha value corresponding to an opaque pixel will be used. If the color samples are ! omitted, zeroes will be used. If the viewable field is omitted, the object ! is not viewable. + The decoder is responsible for converting the color and alpha samples to the + appropriate format and sample depth for the specified color_type. + The color and alpha samples are written as four sixteen-bit samples regardless of the color_type and sample_depth. When the sample_depth is less than sixteen, the least significant bits are used and the remaining bits must be zero filled. When color_type=3, the least significant byte of each ! color sample and the alpha sample is used and the upper byte must be zero. ! ! When color_type=0 or color_type=4, the green and blue samples must be ! present but must be ignored by decoders. + When color_type=0 or color_type=2, only the values 0 and 2^sample_depth + should be written. Any other alpha value must be interpreted as fully + opaque. + + When color_type=3, the decoder must generate a palette of length + 2^sample_depth, whose first entry contains the given {red_sample, + green_sample, blue_sample} triple, and whose remaining entries are filled + with zeroes, together with an alpha array whose first entry is the given + alpha sample and the rest are 255 (i.e., create a one-entry tRNS chunk + containing the least significant byte of the given alpha sample, unless the + given alpha sample is fully opaque). + The BASI datastream contains PNG chunks, but is not necessarily a PNG datastream. It can be incomplete or empty and it can deviate in certain ways from the PNG specification. It can serve as a parent object for a Delta-PNG *************** *** 1486,1493 **** alpha samples. A subsequent Delta-PNG that uses this as the parent object can supply the IDAT chunk or chunks. ! * The PLTE chunk can be omitted or incomplete even when the color_type=3. ! If so, the subsequent Delta-PNG that uses this as the parent object can supply a complete PLTE chunk, if the single-entry palette that is generated is not desired. --- 1518,1525 ---- alpha samples. A subsequent Delta-PNG that uses this as the parent object can supply the IDAT chunk or chunks. ! * The PLTE chunk can be omitted or incomplete even when color_type=3. If ! so, the subsequent Delta-PNG that uses this as the parent object can supply a complete PLTE chunk, if the single-entry palette that is generated is not desired. *************** *** 1494,1509 **** The BASI chunk can be used to introduce such things as a library of faLT chunks from which one or another can be selected for use with any single image, or it can be used to introduce a simple blank or colored rectangle ! into which other images will be pasted by means of the PAST chunk. ! A BASI chunk appearing in a MNG datastream must be preceded by a DEFI chunk ! that gives the object_id, location, and potential visibility for the basis ! object. The concrete_flag can be either 0 (abstract) or 1 (concrete), ! depending on whether the basis image is intended for subsequent use by a ! Delta-PNG datastream or not. When it is abstract it must also be viewable. ! When viewable=1, the resulting image, after the pixel samples are filled in, ! must be a legal PNG image. If viewable=1 and do_not_show=0, a viewer is ! expected to display it immediately, as if it were decoding a PNG datastream. If an object already exists with the same object_id, the contents of its object buffer are replaced with the new data. --- 1526,1543 ---- The BASI chunk can be used to introduce such things as a library of faLT chunks from which one or another can be selected for use with any single image, or it can be used to introduce a simple blank or colored rectangle ! that will be immediately displayed or into which other images will be pasted ! by means of the PAST chunk. ! A BASI chunk appearing in a MNG datastream receives its object_id, location, ! and potential visibility from the preceding DEFI chunk, if one is present, ! or the default values for DEFI, if one is not present. The concrete_flag can ! be either 0 (abstract) or 1 (concrete), depending on whether the basis image ! is intended for subsequent use by a Delta-PNG datastream or not. When it is ! abstract it must also be viewable. When viewable=1, the resulting image, ! after the pixel samples are filled in, must be a legal PNG image. If ! viewable=1 and do_not_show=0, a viewer is expected to display it ! immediately, as if it were decoding a PNG datastream. If an object already exists with the same object_id, the contents of its object buffer are replaced with the new data. *************** *** 1769,1775 **** simultaneously updating and displaying the destination_id, the MOVE and CLIP for the destination_id is used in the display operation). ! 4.2.9. DISC Discard objects The DISC chunk can be used to inform the decoder that it can discard the object data associated with the associated object identifiers. Whether the --- 1803,1813 ---- simultaneously updating and displaying the destination_id, the MOVE and CLIP for the destination_id is used in the display operation). ! 4.2.9. MAGN Magnify objects ! ! The MAGN chunk specification will appear here, if it is approved. ! ! 4.2.10. DISC Discard objects The DISC chunk can be used to inform the decoder that it can discard the object data associated with the associated object identifiers. Whether the *************** *** 1800,1806 **** When the object is a partial clone or is the source of a partial clone that has not been discarded, only the object attribute set (location, potential ! visibility, and clipping boundaries) can be discarded. The data in the object buffer must be retained until the last remaining partial clone is discarded. --- 1838,1844 ---- When the object is a partial clone or is the source of a partial clone that has not been discarded, only the object attribute set (location, potential ! visibility, clipping boundaries, etc.) can be discarded. The data in the object buffer must be retained until the last remaining partial clone is discarded. *************** *** 2353,2359 **** It is not an error for the MOVE chunk to name an object that has not previously been defined. In such cases, nothing is done to the nonexistent ! object. When an object is discarded, its object attribute set, which includes the MOVE data, is also discarded. --- 2391,2399 ---- It is not an error for the MOVE chunk to name an object that has not previously been defined. In such cases, nothing is done to the nonexistent ! object. It is permitted to move "frozen" objects provided that the encoder ! includes chunks to move them back to their original positions prior to then ! end of the segment. When an object is discarded, its object attribute set, which includes the MOVE data, is also discarded. *************** *** 2408,2414 **** It is not an error for the CLIP chunk to name an object that has not previously been defined. In such cases, nothing is done to the nonexistent ! object. When an object is discarded, its object attribute set, which includes the CLIP data, is also discarded. --- 2448,2455 ---- It is not an error for the CLIP chunk to name an object that has not previously been defined. In such cases, nothing is done to the nonexistent ! object. It is permitted to clip "frozen" objects provided that another CLIP ! chunk resets them to their original values prior to the end of the segment. When an object is discarded, its object attribute set, which includes the CLIP data, is also discarded. *************** *** 2545,2551 **** It is not an error for the SHOW chunk to name a nonviewable object or an object that has not previously been defined. In such cases, nothing is done ! to the nonexistent object. 4.3.6. TERM Termination action --- 2586,2594 ---- It is not an error for the SHOW chunk to name a nonviewable object or an object that has not previously been defined. In such cases, nothing is done ! to the nonexistent object. It is permitted to change the potential ! visibility of "frozen" objects provided that another SHOW chunk resets them ! to their original values prior to the end of the segment. 4.3.6. TERM Termination action *************** *** 2709,2715 **** decoders to ignore the SAVE/SEEK mechanism. Known chunks in this category include DEFI, FRAM, BACK, PLTE, cHRM, tRNS, ! fPRI, gAMA, iCCP, bKGD, sBIT, pHYg, pHYs, and sRGB. In the case of chunks like sPLT that can occur multiple times, with different "purpose" fields, additional instances of the chunk are permitted --- 2752,2761 ---- decoders to ignore the SAVE/SEEK mechanism. Known chunks in this category include DEFI, FRAM, BACK, PLTE, cHRM, tRNS, ! fPRI, gAMA, iCCP, bKGD, sBIT, pHYg, pHYs, and sRGB. In addition, it is the ! responsibility of the encoder to include chunks that restore the potential ! visibility, location, and clipping boundaries of any "frozen" objects to ! their "saved" condition. In the case of chunks like sPLT that can occur multiple times, with different "purpose" fields, additional instances of the chunk are permitted *************** *** 3012,3017 **** --- 3058,3067 ---- datastreams, when the datastream does not have its own bKGD, pHYs, or sBIT chunks. + The top-level sRGB chunk nullifies the gAMA and cHRM chunks, and either + the top-level gAMA or the top-level cHRM chunk nullifies the sRGB + chunk. + * sPLT This PNG chunk is also defined at the MNG top level. It provides a *************** *** 4827,4833 **** 14. Revision History ! 14.1. Version 0.97b Proposed 22 August 2000 --- 4877,4901 ---- 14. Revision History ! 14.1. Version 0.97c ! ! Proposed 27 August 2000 ! ! Global sRGB nullifies global gAMA and cHRM, and vice versa. ! ! This will be handled by informal consensus, i.e., by a Call for Objection. ! ! Added a terminology entry for "nullify". ! ! It is permitted to change the potential visibility, location, and clipping ! boundaries of "frozen" objects, provided that the encoder writes chunks to ! restore them to their "frozen" values prior to the end of the segment. ! ! Clarified treatment of the alpha sample in the BASI chunk when the color ! type is 0, 2, or 3, and clarified that the BASI chunk inherits default DEFI ! values if no DEFI chunk is present. ! ! 14.2. Version 0.97c Proposed 22 August 2000 *************** *** 5725,5731 **** Document source ! This document was built from the file mng-master-20000822 on 22 August 2000. Copyright Notice --- 5793,5799 ---- Document source ! This document was built from the file mng-master-20000829 on 29 August 2000. Copyright Notice