Color Entry Widget

From Inkscape Wiki
Jump to navigation Jump to search

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:

  1. 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)...).
  2. 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.
  3. 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.

SVG 1.1 compliance matrix
Input/Loaded color SVG 1.1 Saved as

#FF00AA

Yes

#F0A

Yes

FF00AA

No*

F0A

No*

#FF00AADD

No**

FF00AADD

No*

rgb(255, 0, 170)

Yes

rgb(100%, 0%, 66%)

Yes

red

Yes

* Kept for historycal reasons ** Kept for historycal reasons and as an hypotetical SVG 2 valid color format

Prepare SVG 2

Based on SVG2. The idea is to be more SVG 2 ready.

sRGB colors

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):

  1. First, the color as written in the SVG file (if any)
  2. Then, if modified by the user (pasted or typed), the user value
  3. 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.