It should work similar like the typical colour pickers in most image-processing and editing tools (Like Adobe Photoshop), thus in a very "professional" way and using a variency of typical and for different purposes useful colour spaces.
I would imagine the functionality like this:
The CEGUIColourPicker provides in its initial form just a window displaying the currently picked colour - so basically it would be just a staticframe with a coloured quad on its inside. This way you can choose to have multiple windows if you need to have 2 ColourPickers, each saving seperate colours, and align them as you want using common CEGUI functionality, e.g. a Listbox containing numerious colourpicker windows.
If clicking the colour picker window, a window will open displaying a colour map for picking a colour using a coursor and a pointer set to the currently picked colour on the map.
It should offer 3 different map types: RGB (not sRGB), and the colour spaces CIE L*a*b in D65, and HSV
The feature set would be similar to that of the Photoshop colour picker, but Lab and HSV(or similar) are very important colour spaces in the professional environment and there is not really another or a "better" option for those kinds, so i would propose those. The Lab colour picker ( as i have currently implemented in OpenGL) is not really an intuitive picker just by itself if you want a specific colour, HSV is quite intuitive and still as "accurate", but they are both constructed for different purposes and just as useful for their relative purpose.
The colour picker map would be in 2D, each axis for an attributes of a colour space, the 3rd attribute ("depth") is being set in form of a slider. Also the colour picker would provide fields to display and manually set the values for the different colour spaces / RGB directly, and each change on the map/slider/textfield updates the others immediately and as correctly as possible.
For the colour map, like I said, I want to have RGB and CIE L*a*b* and also a third colour space to pick colours from. I don't know which one is best, options would be HSB(adobe photoshop), HSL (gimp), HSV, which are all closely related.
On this matter - A nice collection of different colour pickers (HSL/HSV):
http://upload.wikimedia.org/wikipedia/en/e/ea/Hsl-hsv-colorpickers.svg
I like the one in a), because of the pseudo 3dimensionality
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Here the gimp one
![Image](http://www.gimphelp.org/tutorials/images/color_to_alpha_color_picker.png)
Another option would be the following colour space as a picker, which does not seem to be often used for colour pickers - I haven't found a screenshot of such a colour picker:
![Image](http://www.nikon.com/about/feelnikon/light/chap03/img/sec01_pic05.jpg)
HSB on a mac:
![Image](http://cache.gawker.com/assets/images/lifehacker/2008/12/color-picker.png)
And the photoshop one which gets closest to what i want to make, for all those who live in some sort of time capsule in an a thermo- and air-isolated cave on the dark side of the moon and have never seen Adobe Photoshop before:
![Image](http://www.khulsey.com/photoshop_tutorials/photoshop_color-picker.jpeg)
My final idea on this would be to replace RGB colour picking (which is kinda useless in my opinion) and implement HSB(or similar), CIELab and CIELuv (wanna know how this one looks
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Making this whole colour pciker thingy not really difficult per se, but still kinda complex because of the colour space algorithms and conversions and the many GUI elements that interact and need to be updated. Also the colour map has to be created on the fly - otherwise I would have to store 24*mapwidth*mapheight*mapdepth bytes for each colour space in memory, which would be some megabytes of data (!). I guess this is not desirable. So i will create it on the fly whenever it changes.
I would make the whole popping up colour picker window in fixed dimensions and fixed layout. I can't think of a situation anyone would need to re-align or re-size it interface specifically for their program, unless it is too big. ( I will try to make it about 400x400).
The design of the colour picker will be very close to that of the one in Adobe Photoshop because it is pretty extensive, professional and good to use. Also there is not really many ways to implement this anyways. So if you can think of anything you do not like or would want to have additionally to that one, you are welcome to post them here.
Any special feature ideas, wishes, suggestions, ideas improvement are welcome and should also be posted here. DO IT!