mirror of https://github.com/moparisthebest/xeps
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
241 lines
10 KiB
241 lines
10 KiB
<?xml version='1.0' encoding='UTF-8'?> |
|
<!DOCTYPE xep SYSTEM 'xep.dtd' [ |
|
<!ENTITY % ents SYSTEM 'xep.ent'> |
|
%ents; |
|
]> |
|
<?xml-stylesheet type='text/xsl' href='xep.xsl'?> |
|
<xep> |
|
<header> |
|
<title>Data Forms - Color Field Types</title> |
|
<abstract>This specification defines how to publish fields in data forms that take color values. Color values are best edited using a color picker dialog, rather than manual input.</abstract> |
|
&LEGALNOTICE; |
|
<number>0331</number> |
|
<status>Deferred</status> |
|
<type>Standards Track</type> |
|
<sig>Standards</sig> |
|
<approver>Council</approver> |
|
<dependencies> |
|
<spec>XMPP Core</spec> |
|
<spec>XEP-0001</spec> |
|
<spec>XEP-0004</spec> |
|
<spec>XEP-0030</spec> |
|
<spec>XEP-0122</spec> |
|
</dependencies> |
|
<supersedes/> |
|
<supersededby/> |
|
<shortname>color-parameter</shortname> |
|
&peterwaher; |
|
<revision> |
|
<version>0.3</version> |
|
<date>2015-11-09</date> |
|
<initials>pw</initials> |
|
<remark> |
|
<p>Updated contact information.</p> |
|
<p>Updated example JIDs to example.org</p> |
|
</remark> |
|
</revision> |
|
<revision> |
|
<version>0.2</version> |
|
<date>2014-03-10</date> |
|
<initials>pw</initials> |
|
<remark> |
|
<p>Namespace changed to urn:xmpp:xdata:color.</p> |
|
</remark> |
|
</revision> |
|
<revision> |
|
<version>0.1</version> |
|
<date>2013-06-26</date> |
|
<initials>psa</initials> |
|
<remark> |
|
<p>Initial published version approved by the XMPP Council.</p> |
|
</remark> |
|
</revision> |
|
<revision> |
|
<version>0.0.2</version> |
|
<date>2013-06-11</date> |
|
<initials>pw</initials> |
|
<remark> |
|
<p>Added the ColorAlpha data type.</p> |
|
</remark> |
|
</revision> |
|
<revision> |
|
<version>0.0.1</version> |
|
<date>2013-05-27</date> |
|
<initials>pw</initials> |
|
<remark> |
|
<p>First draft.</p> |
|
</remark> |
|
</revision> |
|
</header> |
|
<section1 topic='Introduction' anchor='intro'> |
|
<p> |
|
Some applications require configuration of color values. Examples can be what colors to use for different situations in control applications. |
|
There's up to this point no good way to publish color values in a &xep0004;. |
|
</p> |
|
<p> |
|
Some applications provide parameters of type list-single enabling the user to choose a color from a list of colors. This only allows the user |
|
to select from a small amount of colors, and doesn't provide any visual feedback of the actual color chosen. |
|
</p> |
|
<p> |
|
Editing color values as color components or encoded strings is both impractical and unintuitive. |
|
</p> |
|
<p> |
|
This document proposes a method to publish color field parameters in a way that allows clients to show a color picker dialog for the parameter |
|
instead of forcing the user to enter an encoded color value. For clients not supporting this extensions, the color value will still be editable |
|
as an encoded color string. |
|
</p> |
|
<p> |
|
This extension also relies on &xep0122; as a fallback mechanism so clients not recognizing the color data types can handle them as |
|
strings with a regular expressions validating user input. |
|
</p> |
|
</section1> |
|
<section1 topic='Publishing a Color Field in a Data Form'> |
|
<p> |
|
The following example shows how to publish a Color Field parameter in a Data Form: |
|
</p> |
|
<example caption='Publishing a Color Field in a Data Form'> |
|
<![CDATA[ |
|
<field var='color' type='text-single' label='Color:'> |
|
<desc>Choose a color.</desc> |
|
<xdv:validate xmlns:xdv='http://jabber.org/protocol/xdata-validate' |
|
xmlns:xdc='urn:xmpp:xdata:color' |
|
datatype='xdc:Color'> |
|
<xdv:regex>^[0-9a-fA-F]{6}$</xdv:regex> |
|
</xdv:validate> |
|
<value>9400D3</value> |
|
</field>]]> |
|
</example> |
|
<p> |
|
The color value is represented by a string consisting of six case-insensitive hexadecimal digits. The first two represent the red component, |
|
the next two the green component and the last two the blue component. |
|
</p> |
|
<p> |
|
If the client does not support XEP-0122 (Data Form Validation), it will interpret the field as a normal <strong>text-single</strong> field. It is |
|
up to the server to validate user input. But the user can still enter a color. |
|
</p> |
|
<p> |
|
A client that supports XEP-0122 (Data Form Validation), but not this extension, will not understand the data type <strong>xdc:Color</strong>. |
|
It will thus default to a normal string (xs:string). However, the client still supports the <strong>regex</strong> validation rule, |
|
making sure the client only allows user input that forms valid color values. |
|
</p> |
|
<p> |
|
A client supporting this specification will recognize the <strong>xdc:Color</strong> data type, and choose to show a color picker dialog instead |
|
of a string input field. In this case, the regular expression in the validation statement will not be used, as the string is not edited |
|
directly by the user. However, it is still available implicitly in the xdc:Color data type. |
|
</p> |
|
</section1> |
|
<section1 topic='Publishing a Color Field with Alpha channel in a Data Form'> |
|
<p> |
|
The following example shows how to publish a Color Field parameter including an Alpha channel in a Data Form: |
|
</p> |
|
<example caption='Publishing a Color Field in a Data Form'> |
|
<![CDATA[ |
|
<field var='color' type='text-single' label='Color:'> |
|
<desc>Choose a color.</desc> |
|
<xdv:validate xmlns:xdv='http://jabber.org/protocol/xdata-validate' |
|
xmlns:xdc='urn:xmpp:xdata:color' |
|
datatype='xdc:ColorAlpha'> |
|
<xdv:regex>^[0-9a-fA-F]{8}$</xdv:regex> |
|
</xdv:validate> |
|
<value>9400D3C0</value> |
|
</field>]]> |
|
</example> |
|
<p> |
|
The color value is represented by a string consisting of eight case-insensitive hexadecimal digits. The first two represent the red component, |
|
the next two the green component and the last two the blue component. The last two represents the alpha channel, where 00 means completely |
|
transparent and FF means completely opaque. |
|
</p> |
|
<p> |
|
As with the xdc:Color type defined above, if the client does not support XEP-0122 (Data Form Validation), it will interpret the field as a |
|
normal <strong>text-single</strong> field. It is up to the server to validate user input. But the user can still enter a color. |
|
</p> |
|
<p> |
|
A client that supports XEP-0122 (Data Form Validation), but not this extension, will not understand the data type <strong>xdc:ColorAlpha</strong>. |
|
It will thus default to a normal string (xs:string). However, the client still supports the <strong>regex</strong> validation rule, |
|
making sure the client only allows user input that forms valid color values. |
|
</p> |
|
<p> |
|
A client supporting this specification will recognize the <strong>xdc:ColorAlpha</strong> data type, and choose to show a color picker dialog instead |
|
of a string input field. In this case, the regular expression in the validation statement will not be used, as the string is not edited |
|
directly by the user. However, it is still available implicitly in the xdc:ColorAlpha data type. |
|
</p> |
|
</section1> |
|
<section1 topic='XMPP Registrar Considerations' anchor='registrar'> |
|
<section2 topic='Color datatype prefix: xdc'> |
|
<p> |
|
As defined in <link url='http://xmpp.org/extensions/xep-0122.html#registar-reg-prefixes'>XEP-0122 §7.2.1</link>, following is the submission |
|
to the XMPP Registrar of a new datatype prefix for use in data forms: |
|
</p> |
|
<code caption='Color datatype prefix: xdc'> |
|
<![CDATA[ |
|
<datatype-prefix> |
|
<prefix>xdc</prefix> |
|
<desc>defines the Color data type</desc> |
|
<doc>http://xmpp.org/extensions/xep-0331.html</doc> |
|
</datatype-prefix>]]> |
|
</code> |
|
</section2> |
|
<section2 topic='Color datatype'> |
|
<p> |
|
As defined in <link url='http://xmpp.org/extensions/xep-0122.html#registar-reg-datatypes'>XEP-0122 §7.2.2</link>, following is the submission |
|
to the XMPP Registrar of a new datatype representing color values for use in data forms: |
|
</p> |
|
<code caption='Color datatype'> |
|
<![CDATA[ |
|
<datatype> |
|
<name>xdc:Color</name> |
|
<desc>a color value represented as an RGB value, expressed using 6 hexadecimal digits, with each pair of |
|
the hexadecimal digits representing the values of the Red, Green and Blue channel, respectively</desc> |
|
<methods>basic regex</methods> |
|
<min>N/A</min> |
|
<max>N/A</max> |
|
</datatype>]]> |
|
</code> |
|
</section2> |
|
<section2 topic='ColorAlpha datatype'> |
|
<p> |
|
As defined in <link url='http://xmpp.org/extensions/xep-0122.html#registar-reg-datatypes'>XEP-0122 §7.2.2</link>, following is the submission |
|
to the XMPP Registrar of a new datatype representing color values with alpha channel for use in data forms: |
|
</p> |
|
<code caption='ColorAlpha datatype'> |
|
<![CDATA[ |
|
<datatype> |
|
<name>xdc:ColorAlpha</name> |
|
<desc>a color value represented as an RGBA value, expressed using 8 hexadecimal digits, with each pair of |
|
the hexadecimal digits representing the values of the Red, Green, Blue and Alpha channel, respectively</desc> |
|
<methods>basic regex</methods> |
|
<min>N/A</min> |
|
<max>N/A</max> |
|
</datatype>]]> |
|
</code> |
|
</section2> |
|
</section1> |
|
<section1 topic='XML Schema' anchor='schema'> |
|
<code> |
|
<![CDATA[ |
|
<?xml version='1.0' encoding='UTF-8'?> |
|
<xs:schema |
|
xmlns:xs='http://www.w3.org/2001/XMLSchema' |
|
targetNamespace='urn:xmpp:xdata:color' |
|
xmlns='urn:xmpp:xdata:color' |
|
elementFormDefault='qualified'> |
|
|
|
<xs:simpleType name='Color'> |
|
<xs:restriction base='xs:string'> |
|
<xs:pattern value='^[0-9a-fA-F]{6}$'/> |
|
</xs:restriction> |
|
</xs:simpleType> |
|
|
|
<xs:simpleType name='ColorAlpha'> |
|
<xs:restriction base='xs:string'> |
|
<xs:pattern value='^[0-9a-fA-F]{8}$'/> |
|
</xs:restriction> |
|
</xs:simpleType> |
|
|
|
</xs:schema>]]> |
|
</code> |
|
</section1> |
|
<section1 topic='Acknowledgements' anchor='ack'> |
|
<p>Thanks to Karin Forsell for all valuable feedback.</p> |
|
</section1> |
|
</xep>
|
|
|