Value range of c3DSpecularAmt

Regina Henschel rb.henschel at
Sun Jan 30 22:28:09 UTC 2022

Hi all, hi Miklos,

MS Office uses value 80000/65536 ≈ 1.22 for attribute c3DSpecularAmt. 
The specification reads, "c3DSpecularAmt (4 bytes): A value of type 
FixedPoint, as specified in [MS-OSHARED] section, that specifies 
the ratio of incident to specular light that is reflected on a shape."
The corresponding ODF attribute is draw:extrusion-specularity. That has 
a data type zeroToHundredPercent. So we cannot write the imported 122% 
to ODF. But currently LibreOffice writes 122% to file and so produces 
invalid files.

When the shape is rendered, the product of light intensity and 
specularity is converted to a gray color for the 3D-Scene attribute 
D3DMaterialSpecularIntensity. Because the light intensity is often 
smaller than 100% a value for c3DSpecularAmt larger than 100% can be 
used meaningful.

The range to [0%,100] has been introduced with [Office-2509] for ODF 
1.2. In ODF 1.1 the data type was "percent".

What to do?

My suggestion is: Allow larger values than 100% in LibreOffice. Clamp 
the value to 100% in case of writing ODF 1.2 and 1.3 strict and use 
loext in case of ODF 1.2 and 1.3 extended. And write to ODF TC to 
re-enable values larger than 100% for ODF 1.4.

What do you think?


Kind regards,

More information about the LibreOffice mailing list