holdingarea/vg/2D_OpenVG_1_1_SF/internal_formats.txt
author Matt Plumtree <matt.plumtree@nokia.com>
Thu, 16 Sep 2010 09:43:14 +0100
branchbug235_bringup_0
changeset 20 d2d6724aef32
child 24 a3f46bb01be2
permissions -rw-r--r--
Initial contribution of Khronos API implmentations suitable for simulator host-side. Code originally developed for use with PlatSim, and includes a deserialization component suitable for use with that. For convenience, the open source LLVM (http://llvm.org) installation is made available here directly.


** Premultiplication:

- Any kind of BLENDING -> all components TO premultiplied. We MUST have the
  components in internal precision also.

    - This includes all the IMAGE BLENDING operations

    - Corner case: rendering SRC_OVER with all/some alpha == 1.0

- Any FILTERING

- AFTER Color tranformation

    - Unless no absolutely no blending after that, and destination NOT in
      premultiplied format (-> color interpolation in np format)

** Unpremultiplication:

- BEFORE Color transformation

- Color conversion to dst

    - After blending if dst NOT premultiplied

    - If input PATTERN or IMAGE and NOT premultiplied -> This happens only when
      the image data is not premultiplied and no filtering is done.

** In internal format if:

- Any BLEND operation

- FILTERING applied to image source

** Description of actions to take:

- Premultiply IMMEDIATELY after any color transforms, if it hasn't been done
  before that. All the following operations can then assume that the input has
  been premultiplied. 

- Premultiplication can be only skipped if load is skipped for the pixel. This
  can only occur when opacity and alpha are both 1.0.

** Color-space conversion

- Before blending, convert generated color into destination color-space.

- gamma srgb -> gamma slum is ungamma, tolum, gamma