Hi Andrea,

Andrea Pescetti schrieb:
On 29/10/2014 Regina Henschel wrote:
... https://issues.apache.org/ooo/show_bug.cgi?id=118191
You are right in that older documents will now have a light color where
they had a dark color before. But now not only 8 but all 16 basic html
colors will be supported, so the user can change the color name to
"teal" if he really wants the dark color. However older OpenOffice
versions don't know "teal" and will show a ?.
If the solution were obvious, I would not have brought it to the list.

Thanks for the very detailed explanation. This is surely material for
the next Release Notes. I didn't have time to follow this when you were
working on it, so please forgive me if I missed some details.

So (limiting this to Math for the moment) we will get 16 color choices
instead of 8

yes

, but some colors in older documents will now be rendered
differently due to the fact that we were writing colors in the file by
name, but we weren't respecting the name attributions in MathML (so we
used to write "red" for denoting a color that MathML did not call "red").

ODF specification simple says "The <math:math> element serves as a container for content defined by the MathML 2.0 standard." To keep the old StarMath syntax the <annotation> element of MathML is used. So when saving a formula OpenOffice writes MathML code, which is needed for ODF and in addition it writes an <annotation> element to preserve its own StarMath code. When reading a file and such <annotation> element exists, then it is used and MathML is ignored. When such <annotation> element does not exist, then the MathML code is used.

OpenOffice has written "red" to StarMath code in the <annotation> element and #ff0000 to the MathML part. That is the correct mapping. But in rendering, OpenOffice has not shown the color #ff0000 but the color #800000.


I agree with your proposals on how to handle the broken color mapping.

Is it feasible to switch to writing the RGB values to the file instead
of color names?

I have looked at it, for to be able to use the #rgb and #rrggbb notations, which are allowed in MathML. My idea was to allow such notations in StarMath too. But that is a larger task and has a lot of problems. For example the current implementation of the StarMath parser handles all content as tokens, but does not keep the context of the tokens. So the hash # is turned to a token TPOUND. And for #00ff00 the next token would be TNUMBER, but for #ff0000 the next token would be TIDENT (=identifier). As # is used as delimiter in matrix and stack, the context is needed to handle # different, when it follows a color command.

In the import filter for MathML it is no problem. There the token for color has the complete value #00ff00 (for example) as token value and it would be possible to write the correct color value into the node of the model.

 Would this ensure less equivocal compatibility with the
standards and other suites?

Writing #rrggbb values in StarMath would make it unambiguous.

I hesitate to start in that direction. It needs an own discussion (new thread) about the future of StarMath. Perhaps we should go in the same direction as with the old binary formats and drop it totally. MathML is much richer than the existing StarMath language. To be able to really use MathML 2.0, the StarMath language would have to be extended and who will do that? I have not even found a specification of the language.

 Would colors written this way be properly
remapped to their names when reopening the file?

The mapping is already done in case the annotation is missing, the value #ff0000 is mapped to StarMath "red", but "red" has been rendered as #800000.

 If I read correctly,
you said that this is what Calc does, and it looks much less error-prone.

The color names do not exist in ODF file format, but file format uses #rrggbb values directly. So there is no problem with definitions made in Format > Cell > Numbers.

The problem in Calc is, that it is possible to use a format code as string in the function TEXT and so the color names can be used indirectly.

From some strange code, which translates between German and English color names, I guess that color names were perhaps used in StarOffice binary formats.


older OpenOffice versions don't know "teal" and will show a ?.

This is important for the Release notes too. And would it be the same if
we write the color as RGB?

Yes, #rrggbb notation would result in ? too. The StarMath parser in older versions is not able to parse #rrggbb notation in StarMath code.

Kind regards
Regina

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@openoffice.apache.org
For additional commands, e-mail: dev-h...@openoffice.apache.org

Reply via email to