Re: Simple API and associated alpha

Samuel Williams <[email protected]>
Newsgroups gmane.comp.graphics.png.devel
Message-ID <CAHkN8V95F19wcD42Y-hYK7qjmeNLsgwDp8PgJa+wbf60seccHw@mail.gmail.com>
Okay I took another look at the documentation and I think I see what's
going on.


The channels are encoded in one of two ways:
  a) As a small integer, value 0..255, contained in a single byte.  For the
alpha channel the original value is simply value/255.  For the color or
luminance channels the value is encoded according to the sRGB specification
and matches the 8-bit format expected by typical display devices.
The color/gray channels are not scaled (pre-multiplied) by the alpha
channel and are suitable for passing to color management software.
  b) As a value in the range 0..65535, contained in a 2-byte integer, in
the native byte order of the platform on which the application is running.
All channels can be converted to the original value by dividing by 65535;
all
channels are linear.  Color channels use the RGB encoding (RGB end-points)
of
the sRGB specification.  This encoding is identified by the
PNG_FORMAT_FLAG_LINEAR flag below.
When the simplified API needs to convert between sRGB and linear
colorspaces,
the actual sRGB transfer curve defined in the sRGB specification (see the
article at http://en.wikipedia.org/wiki/SRGB) is used, not the gamma=1/2.2
approximation used elsewhere in libpng.
When an alpha channel is present it is expected to denote pixel coverage
of the color or luminance channels and is returned as an associated alpha
channel: the color/gray channels are scaled (pre-multiplied) by the alpha
value.
The samples are either contained directly in the image data, between 1 and 8
bytes per pixel according to the encoding, or are held in a color-map
indexed
by bytes in the image data.  In the case of a color-map the color-map
entries
are individual samples, encoded as above, and the image data has one byte
per
pixel to select the relevant sample from the color-map.​


So, it wasn't clear to me the paragraphs following a) and b) were related.
So, for part a), this means for single byte pixel formats, "The color/gray
channels are not scaled (pre-multiplied) by the alpha
channel and are suitable for passing to color management software." I
wrongfully inferred the organisation of that documentation due to the lack
of indentation/titles.

So, I'm going to assume that when loading 8-bit formats, I can't use the
simple API if I want pre-multiplied data. Is that correct?

Thanks
Samuel

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot

_______________________________________________
png-mng-implement mailing list
png-mng-implement-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.