/** colour_hex( +Clr, -Hex ). Convert lexical input Clr to a hex string. Clr is passed through lexi/2. Currently passes through any represeantion of a hex and maps the long or code names from latex_colour/4 (1st and 3rd argument to second argument). == ?- colour_hex( amber, Hex ). Hex = "#FFBF00". ?- colour_hex( amberic, Hex ). ERROR: colour_hex/2: Cannot find colour: amberic false. ?- colour_hex( '#FFBB00', Hex ). Hex = "#FFBB00". ?- colour_hex( '#FFBB00wrong', Hex ). Hex = "#FFBB00wrong". == @author nicos angelopoulos @version 0.1 2022/12/16 @see bio_analytics:bio_volcano_plot/1 @see lexi/2 @tbd do some basic checks if a Hex is given */ colour_hex( Clr, Hex ) :- lexi( Clr, +ClrAtm ), colour_hex_atom( ClrAtm, Hex ). colour_hex_atom( ClrAtm, Hex ) :- atom_concat( '#', _, ClrAtm ), !, lexi( ClrAtm, &(Hex) ). colour_hex_atom( ClrAtm, Hex ) :- latex_colour( ClrAtm, Hex, _, _ ), !. colour_hex_atom( ClrAtm, Hex ) :- latex_colour( _, HexAtm, ClrAtm, _ ), !, lexi( HexAtm, &(Hex) ). colour_hex_atom( Clr, _Hex ) :- Format = 'colour_hex/2: Cannot find colour: ~w', message_report( Format, [Clr], error ), fail.