### ----------------------------------------------------
### -- PDF::ISO_32000_2
### -- Licenses: Artistic-2.0
### -- Authors: David Warring
### -- File: lib/ISO_32000_2/Table_5-Entries_common_to_all_stream_dictionaries.rakumod
### ----------------------------------------------------
use v6;
role ISO_32000_2::Table_5-Entries_common_to_all_stream_dictionaries {
    method Length {...};
    method Filter {...};
    method DecodeParms {...};
    method F {...};
    method FFilter {...};
    method FDecodeParms {...};
    method DL {...};
}

=begin pod

=head1 Description

Table 5 — Entries common to all stream dictionaries

=head1 Methods (Entries)

=head2 Length [integer]
- (Required) The number of bytes from the beginning of the line following the keyword stream to the last byte just before the keyword endstream. (There may be an additional EOL marker, preceding endstream, that is not included in the count and is not logically part of the stream data.) See 7.3.8.2, "Stream extent", for further discussion.

=head2 Filter [name or array]
- (Optional) The name, or an array of zero, one or several names, of filter(s) that is applied in processing the stream data found between the keywords stream and endstream. Multiple filters is specified in the order in which they are to be applied.
NOTE It is not recommended to include the same filter more than once in a Filter array.

=head2 DecodeParms [dictionary or array]
- (Optional) A parameter dictionary or an array of such dictionaries, used by the filters specified by Filter, respectively. If there is only one filter and that filter has parameters, DecodeParms is set to the filter’s parameter dictionary unless all the filter’s parameters have their default values, in which case the DecodeParms entry may be omitted. If there are multiple filters and any of the filters has parameters set to nondefault values, DecodeParms is an array with one entry for each filter in the same order as the Filter array: either the parameter dictionary for that filter, or the null object if that filter has no parameters (or if all of its parameters have their default values). If none of the filters have parameters, or if all their parameters have default values, the DecodeParms entry may be omitted.

=head2 F [file specification]
- (Optional; PDF 1.2) The file containing the stream data. If this entry is present, the bytes between stream and endstream is ignored. However, the Length entry should still specify the number of those bytes (usually, there are no bytes and Length is 0). The filters that are applied to the file data is specified by FFilter and the filter parameters is specified by FDecodeParms.

=head2 FFilter [name or array]
- (Optional; PDF 1.2) The name of a filter to be applied in processing the data found in the stream’s external file, or an array of zero, one or several such names. The same rules apply as for Filter.

=head2 FDecodeParms [dictionary or array]
- (Optional; PDF 1.2) A parameter dictionary, or an array of such dictionaries, used by the filters specified by FFilter, respectively. The same rules apply as for DecodeParms.

=head2 DL [integer]
- (Optional; PDF 1.5) A non-negative integer representing the number of bytes in the decoded (defiltered) stream. This value is only a hint; for some stream filters, it may not be possible to determine this value precisely.

=end pod


