48
edits
Herbyderby (talk | contribs) m (make explicit that the boundaries of the animation are fixed to IHDR) |
(increased restriction for blend_op and dispose_op) |
||
| Line 146: | Line 146: | ||
If `blend_op` is APNG_BLEND_OP_SOURCE all color components of the frame, including alpha, overwrite the current contents of the frame's output buffer region. If `blend_op` is APNG_BLEND_OP_OVER the frame should be composited onto the output buffer based on its alpha, using a simple OVER operation as described in the "Alpha Channel Processing" section of the PNG specification [PNG-1.2]. Note that Variation 2 of the sample code is applicable. | If `blend_op` is APNG_BLEND_OP_SOURCE all color components of the frame, including alpha, overwrite the current contents of the frame's output buffer region. If `blend_op` is APNG_BLEND_OP_OVER the frame should be composited onto the output buffer based on its alpha, using a simple OVER operation as described in the "Alpha Channel Processing" section of the PNG specification [PNG-1.2]. Note that Variation 2 of the sample code is applicable. | ||
The first `fcTL` chunk has these restrictions: | |||
* `blend_op` must be APNG_BLEND_OP_SOURCE | |||
* `dispose_op` must not be APNG_DISPOSE_OP_PREVIOUS | |||
The `fcTL` chunk corresponding to the default image has additional restrictions, if it exists: | The `fcTL` chunk corresponding to the default image has additional restrictions, if it exists: | ||
* The `x_offset` and `y_offset` fields must be 0. | * The `x_offset` and `y_offset` fields must be 0. | ||
* The `width` and `height` fields must equal the corresponding fields from the `IHDR` chunk. | * The `width` and `height` fields must equal the corresponding fields from the `IHDR` chunk. | ||
As noted earlier, if a `fcTL` chunk does not precede `IDAT`, the default image is not part of the animation, and the output buffer must be completely initialized to fully transparent black at the beginning of each iteration. | As noted earlier, if a `fcTL` chunk does not precede `IDAT`, the default image is not part of the animation, and the output buffer must be completely initialized to fully transparent black at the beginning of each iteration. | ||
edits