Color Entry Widget
Here are the aims of this blueprint.
Deal with full SVG 1.1 colors
The entry accepts colors as defined by the SVG 1.1 Specifications.
SVG 1.1 colors do not handle alpha (it's stored in a separate attribute). We have three options:
- Change nothing and keep displaying the alpha value with the color value by extanding the SVG specification (#RRGGBB => RRGGBBAA, rgb(255, 255, 255) => rgba(255, 255, 255, alpha)...).
- Do like many softwares and display the color in the entry without the alpha (which is displayed in it's own entry). This would probably need a widget rearrangement.
- Allow both: implement the SVG 1.1 specification (case 2) and keep case 1 as a preparation for SVG 2. This will allow inputs but, because Inkscape files are SVG 1.1, any loaded file will be displayed using case 2.
The third case is proposed.
Prepare SVG 2
Based on SVG2. The idea is to be more SVG 2 ready.
The HSL format is closed to RGB: no issue.
Some color named are added: no issue.
sRGB colors with alpha
RGBA and HSLA are added: no issue.
ICC and LAB colors
To be implemented?
Keep the user value
Colors are stored in the SVG file as specified by the user (i.e. no more forced conversions to hex values). However, for internal purposes, the colors can be stored and handled differently. This would mean having an internal color value (as now) and a display value.
The color sets in the entry is (chronologically):
- First, the color as written in the SVG file (if any)
- Then, if modified by the user (pasted or typed), the user value
- Then, if modified by the software (in case of multiple input widgets), the software value
If the alpha is not part of the user input, Inkscape keep the previous one and will not append it in the entry.
Help the user
If the text in the entry cannot be converted to a valid color, the entry changes it's appearance (red border?).
If a color from the palette is dragged and dropped on the entry, it takes the color value.