Categories

Ultimate Color Picker

☆☆☆☆☆ No ratings yet
  • support every color model. include a true cones and rods of the eye function, not one made simpler for purposes of calculation like CIE or L*a*b.
      color models:
        LSM space
        CIE/L*a*b
        sRGB (used for everything)
        Adobe RGB (better than sRGB, shows 50% of L*a*b space)
        HSB
        HSL
        L*C*h
        CYM
    to support some color spaces, we may need to support arbitrary algorithms to convert a color to and from LSM or perhaps a full spectral envelope., but converting to an envelope is arbitrary for any space fixed on another 3d model like cie and thus introduces metamerism
     show information on color models; equations, graphs, rationale, how much of the gamet is supported, how uniform teh color differentiability is, what each primary means, whether it's absolute, etc.
  • select rfom different ICC profiles to make non-ablsolute color spaces absolute.
  • to support certain types of color models our interpreters to lsm space
  • some color models can be fully expressed in 2d or call for particular visual modalities of interaction
  • exclude any variable and map the other two to a 2d gradient
  • box that shows current color
  • sliders for each variable that show the gradient over that variable for the current selected color. also show light and dark regions of each sliders for where they can and cannot go and still be within displayable color space while the other two remain the same.
                                                             differentiate between undisplayable colors, unviewable colors and imaginary colors. (unviewable would be outside of wavelength; imaginary are due to overlapping cell response curves.) possibly allow approximation to unviewable colors but indicate that it's doing so.
  • can show sliders for multiple color models simultaneously
       if too many color modules to show, user can select which ones to add or remove
  • collections of colors by various standards, with names
  • hexagonal models avaiilale to variable resolution of color
  • along the x and y axis of the 2d display are the colored gradient sliders for those two dimensions, e.g. hue might be horizontal.
  • buttons to rotate the 2d picker, reverse an axis or switch the axes
  • copy or paste the current hex color value. provide a button that copies it to the clip board.
  • can enter numbers for the color model variables
  • can save 50 or so colors and remembers them between uses. in fact, program should retain its entire state between uses, perhaps with a 'clean slate' button and an undo, though. 'clean slate' should not delete saved colors, palettes or 2d picker gradients.
  • saved colors internally store exact data from whatever color model they were picked if they couldn't be exactly represented in rgb
  • when using a model not isomorphic to rgb and a color isn't accurately expressed, show 3 meters indicating how far off the expressed color is from hte real color in each of the model's dimensions, and also a fourth meter showign the subjective difference. and/or probably meters showing differences in HSB levels. 5 meters would be a lot of clutter for that so provide an option for each of the three meter groups. LSM or red-green, yellow-blue, and brightness might also be a good meter group.
  • take any two colors and create a gradient slider between them.
  • take any three colors and creade a 2d gradient picker by arbitrarily placing them on it. the picker shouldn't necessarirly be rectangular.
  • include a desktop color samplier tool. just click to change the current color or drag to place onto the 2d gradiant or into the saved colors list.
  • if you drag a color onto the 2d color picker that's not on it, it will change the excluded color dimension to the nearest value for which the 2d picker contains your color anywhere. however, since we can also put three colors into it to define a 2d scape, we need a way of distinguishing the two types of dropping a color.
  • seems as we can create arbitrary 2d picker gradients, provide ability to save/retrieve them.

-- palette editing mode --

  • some standard palettes to start from
  • same features present in fractal explorer
  • draw curves in rgb, hsv, or perhaps any other color model, and can have them smoothed to any degree
  • grab a palette from a gif, png or bmp.
  • drag any number of colors from the saved colors onto the palette in order to automatically create a palette from them via splines, or if two colors then just linearly extrapolte and interpolate.
  • select from different spline formulae
  • cut and paste sections of a palette
  • change hue, saturation or brightness of a palette or RGB levels.
  • replace R with a% R, b% G, c% B, G with d% R, e% G, f% B, B with g% R, h% G, and i% B. resultant palette can be clipped or normalized.
  • slide from one palette to another to find intermediate palettes
  • create a palette by drawing a line, lines, arc, circle, ellipse, elliptical arc, spline, circular spline, polygon or arbitrary shape on any 2d color picker or color model-specific UI. arbitrary shapes may be smoothed to arbitrary fuzziness. provide for arbitrary shape drawings to easily link end to beginning, like the lasso tool, perhaps.
  • slider to rotate the palette
  • import a 256-color image to show in the current palette and even animate by rotating the palette at an arbitrary speed.
  • color the image according to current intermediate palette when sliding between two palettes.
  • collection of saved palettes
  • save palettes in any known format, including gif, jpg and bmp
  • drag palettes onto the 2d gradiant to create a new 2d gradient between and around them. i suppose this can only be done by internally drawing line gradients between corresponding points on the two palettes and interpolating pixel values based on the lines that run through them. perhaps there is a less radial way to do it. that is an interesting problem: given any arbitrary collection of data points on a 2d map, extrapolate the whole map. an ANN could be ideal for this. that woudl be an awesome feature. for any given set of data points, create an ANN whose size is commensurate with the size of the set. Speaking of ann's, htat would also be a great way to repair blemishes on a picture. as for 2d gradiant extrapolation, do htis using different color models and see if the results are significatnly different. if they are, provide the hcoice for color model. since we can create a scape from arbitrary data points, we shoudl be able to draw a palette onto the 2d picker in an arbitrary set curves, i.e., for every pixel unit length the mouse travels in any direction, exhaust one index of the palette and plot that value at the fractional x,y location. or use the scroll wheel to modulate palette exhaustion. faster turning = faster exhaustion. reverse turning = reverse exhaustion. or perhaps it should be the derivative. if derivative, show a slider that shows current exhaustion rate, logarithmic, with a bar in the middle to indicate one pixel length : one palette index. the slider should be transparent and float somewhere to the top right of the mouse pointer. it should not appear if no scroll wheel is present. if a drawing pad is being used, pressure could control exhaustion speed.

  • create a random palette from an arbitrary number of spline inputs.

places to drag colors from:
  desktop pixels via color sampler
  pixels on the imported display image
  pixels in the 2d color gradient
  anywhere on a palette
  colors in the saved colors
  colors in a standard color collection
  anyhwere on a color dimension slider
  pixels in a color model-specific UI
places to drop colors onto:
  a palette in spline defining mode
  a blank 2d color picker
  the collection of saved colors
  the current selected color
places to click to change the current color
  desktop pixels via color sampler
  pixels on the important display image
  pixels in the 2d color gradient
  colors in the saved colors
  colors in a standard color collection
  pixels in a color model-specific UI

  • make this all a web app.

buttons to quickly set a parameter to a default value, ex., make the r channel 0, 128, 64, or 255

show a shape of some 3d trace of color in one model with its corresponding shape in another model. color the traces to show corresponding colors. to show place in space, paint them with a grid. (add perspective to the grid?)
how to get our traces?
 -histograms
 -mouse
 -ellipses and such
 -palettes made in palette editing mode

-can show the trace (and color cubes below) in 3d using 3d glasses
3d methods
 3d hdtv
 red/cyan < better than red/green or red/blue
 blue/yellow < newer than red/cyan
 blue/amber (ColorCode) < supposedly better than red/cyan, and looks more like a normal picture but that shouldn't matter
 magenta/green (TrioScopic) < supposedly better than ColorCode since not much detail is carried in the blue channel
 cross-eyed

preferred color picking parameters (non-orthogonal):
yellow-blue
red-green
saturation
brightness
red
green
blue
cyan
magenta
yellow
white
black
hue

group yellow-blue, red-green, brightness together (orthogonal)
group red, blue, white, black, yellow, green together (six dimensions of color opponent model without the need for orthogonality) < preferred model.
group cyan, magenta, yellow together
group red, green, blue together
group hue, saturation, brightness together

can arbitrarily rotate the coordinate system for a color model
how to define such a rotation? a user must be able to find a vector they like to slide
-by defining a line on the 2d palette surface.
-by selecting two colors and making one vector the line between them
-by rotating a plane through 3d space
-by showing a cube with a slice in it and rotating the cube's outline within the same space
 -problem: can't actually make a cube for any other rotation, it goes outside the bounsd of the color space. perhaps:
  show the frame of the cube in white, so it may extend beyond the colors, and
  show the frame of the actual color space shape along the corners, and
  still rotate the slice part
 -alternatively, keep the parameter frame constant and rotate the color space

include eyedropper

maybe support various color model layouts besides just the 2d color plane, such as a cylinder which i think is good for one of the color models, and i've seen other schemes

ideas on http://www.colourlovers.com/copaso/ColorPaletteSoftware < split/triad/quad, color sphere