AWARE SYSTEMS
TIFF and LibTiff Mail List Archive

Thread

1994.09.16 04:17 "TIFF Bit Ordering Versus Fill Order", by John M Davison
1994.09.16 17:42 "Re: TIFF Bit Ordering Versus Fill Order", by Sam Leffler
1994.09.19 06:55 "Re: TIFF Bit Ordering Versus Fill Order", by Karsten Spang
1994.09.19 15:26 "Re: TIFF Bit Ordering Versus Fill Order", by Sam Leffler
1994.09.19 11:48 "Re: TIFF Bit Ordering Versus Fill Order", by Niles Ritter
1994.09.19 22:48 "Re: TIFF Bit Ordering Versus Fill Order", by Sam Leffler
1994.09.20 00:03 "Re: TIFF Bit Ordering Versus Fill Order", by Joe Moss
1994.09.20 07:00 "Re: TIFF Bit Ordering Versus Fill Order", by Fredrik Lundh
1994.09.19 17:34 "Now that you mention bit order...", by Craig Jackson
1994.09.19 19:04 "Bit order revisited ...", by Scott Wagner
1994.09.19 22:46 "Re: Now that you mention bit order...", by Sam Leffler
1994.09.19 23:53 "RE: Now that you mention bit order...", by Craig Jackson
1994.09.20 13:25 "RE: Now that you mention bit order...", by Scott Wagner
1994.09.22 22:50 "Re: Now that you mention bit order...", by John M Davison
1994.09.22 23:49 "Re: Now that you mention bit order...", by Sam Leffler
1994.09.19 23:31 "Re: TIFF Bit Ordering Versus Fill Order", by Jim Arnold
1994.09.20 12:29 "MSB vs. LSB. (Was: TIFF Bit Ordering Versus Fill Order)", by Thomas Kinsman

1994.09.16 04:17 "TIFF Bit Ordering Versus Fill Order", by John M Davison

I am confused by the text on page 32 of the TIFF 6.0 Specification that describes the "FillOrder" tag. In particular, let's say I had

                    samples per pixel = 3
                    bits per sample = {3, 3, 3}
                    sample format = {1, 1, 1} (unsigned integral type)
                    PlanarConfiguration = 1 (chunky)
                    FillOrder = 1
                    image height = 1
                    image width = 2
                    no compression (1)
                    strip length = 2**32 - 1

and let's say that I am on a machine with 8-bit bytes.

Assuming that the pixel at (0, 0) has a value of {abc, def, ghi} and the pixel at (0, 1) has a value of {jkl, mno, pqr}, where a through r denote bit values such that, for example, a is the MSB of abc and c is the LSB of abc, what would the strip look like in memory? My guess is:

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
 MSB                         LSB|MSB                         LSB|MSB     etc.
                                |                               |
        Byte 0                  |            Byte 1             |    Byte 2

Now let's say that the FillOrder = 2. What does the strip look like now? My guess is:

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+   +---+---+
| g | h | d | e | f | a | b | c | p | m | n | o | j | k | l | i |...| q | r |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+   +---+---+
 MSB                         LSB|MSB                         LSB|        LSB
                                |                               |
        Byte 0                  |            Byte 1             |    Byte 2

I have a feeling that this is wrong, but page 32 of the TIFF 6.0 Specification is worded poorly enough that I can't tell.

Is it simpler than that? Should it have been the following?

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+   +---+---+
| h | g | f | e | d | c | b | a | p | o | n | m | l | k | j | i |...| r | q |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+   +---+---+
 MSB                         LSB|MSB                         LSB|        LSB
                                |                               |
        Byte 0                  |            Byte 1             |    Byte 2

What my question boils down to is this: what exactly does "FillOrder" mean?

--
John Davison
Electronic Mail: davisonj@ecn.purdue.edu
WWW Home Page: <http://en.ecn.purdue.edu:20002/~davisonj/HomePage.html>