' Useful Colours ... ' GWS - February 2019 AUTODEFINE "off" WINDOW w INT item,pos INT lvext,lvfull,lvgrid INT cr,cg,cb STRING ColorR[256] ' RGB Colours array STRING ColorH[256] ' Hex Colours array STRING Crgb[256] ' RGB data array STRING Chex[256] ' Hex data array STRING desc[256] ' Colour description STRING a$,Ctemp STRING hcr,hcg,hcb ' The Red, Green and Blue Hex values of a colour INT i DECLARE Hex2Dec(n1:STRING),DOUBLE ' Listview User Defined Type .. TYPE LISTVIEW UINT hwndFrom INT idFrom INT code INT iItem ENDTYPE LISTVIEW lv ' Extended Listview constants ... lvext=0x1000+54 ' extended listview styles lvfull=0x20 ' full row select lvgrid=0x1 ' LV gridlines ' Memory and listview variable to read LV data MEMORY mem OPENWINDOW w,0,0,480,480,@CAPTION|@SYSMENU,0,"Colours",&messages CONTROL w,@BUTTON,"RGB",20,410,56,25,0,1 CONTROL w,@BUTTON,"Hex",90,410,56,25,0,2 CONTROL w,@BUTTON,"Exit",398,410,56,25,0,4 CONTROL w,@RICHEDIT,"",113,-30,50,18,@CTEDITLEFT,5 ' Hidden RE Control CONTROL w,@STATIC,"",24,24,145,16,@CTEDITLEFT,6 ' Saved to Clipboard text CONTROL w,@STATIC,"",287,12,160,39,@CTEDITCENTER|0x200,7 ' Data to be saved to Clipboard CONTROL w,@STATIC,"",170,13,90,37,0,8 ' Colour display box CONTROL w,@LISTVIEW,"",10,60,454,336,@LVSREPORT|@LVSSHOWSELALWAYS|@TABSTOP|@LVSSINGLESEL|@BORDER,10 SENDMESSAGE w,lvext,0,lvfull|lvgrid,10 ' Set extra Listview styles LoadColorData() SETWINDOWCOLOR w,RGB(180,220,180) SETCONTROLCOLOR w,1,0,RGB(0,200,250) SETCONTROLCOLOR w,2,0,RGB(180,180,180) SETCONTROLCOLOR w,6,0,RGB(180,220,180) SETCONTROLCOLOR w,7,0,RGB(0,200,250) SETCONTROLCOLOR w,8,0,RGB(180,220,180) SETFONT w,"Calibri",12,400,0,1 SETFONT w,"Calibri",12,400,0,2 SETFONT w,"Calibri",12,400,0,4 SETFONT w,"Verdana",10,400,0,6 SETFONT w,"Verdana",12,400,0,7 SETCONTROLTEXT w,6,"Saved to Clipboard" RECT w,169,12,92,39,0 ' Black border for colour display ' Insert LV columns and size them CONTROLCMD w,10,@LVINSERTCOLUMN,0,"Colour" CONTROLCMD w,10,@LVSETCOLWIDTH,0,60 CONTROLCMD w,10,@LVINSERTCOLUMN,1,"RGB" CONTROLCMD w,10,@LVSETCOLWIDTH,1,100 CONTROLCMD w,10,@LVINSERTCOLUMN,2,"Hex" CONTROLCMD w,10,@LVSETCOLWIDTH,2,100 CONTROLCMD w,10,@LVINSERTCOLUMN,3,"Description" CONTROLCMD w,10,@LVSETCOLWIDTH,3,176 ' After an item is inserted, use @LVSETTEXT to change the item column data FOR i=0 TO 250 ' Fill the listview table .. CONTROLCMD w,10,@LVINSERTITEM,i,STR$(i) ' The Colour number CONTROLCMD w,10,@LVSETTEXT,i,1,colorR[i] ' Rhe Red, Green and Blue values CONTROLCMD w,10,@LVSETTEXT,i,2,colorH[i] ' The Colour Hex value CONTROLCMD w,10,@LVSETTEXT,i,3,desc[i] ' The Colour description NEXT i item=1 ' Default to the RGB value for a selected item pos=-1 ' No LV selection yet made ' Show colour of first item in listview SETFOCUS w,10 CONTROLCMD w,10,@LVSETSELECTED,0 WAITUNTIL IsWindowClosed(w) END SUB messages(),INT SELECT @MESSAGE CASE @IDCREATE CENTERWINDOW w CASE @IDCLOSEWINDOW CLOSEWINDOW w CASE @IDCONTROL SELECT @CONTROLID CASE 1 :' use RGB values IF (pos >= 0) :' a selection has been made a$="RGB("+ColorR[pos]+")" :' display RGB value Clip() :' copy to Clipboard Ctemp=ColorR[pos] CParse() :' separate the integer Color values from the Ctemp string SETCONTROLCOLOR w,8,0,RGB(cr,cg,cb) :' show the selected colour ENDIF item=1 BtnClr1() :' set button colours for Symbols SETFOCUS w,10 CASE 2 :' use Hex values IF (pos >= 0) :' a selection has been made a$="0x" + ColorH[pos] Clip() :' copy to Clipboard hcr=RIGHT$(ColorH[pos],2) :' the Red component in Hex hcg=MID$(ColorH[pos],3,2) :' the Green component in Hex hcb=LEFT$(ColorH[pos],2) :' the Blue component in Hex cr=Hex2Dec(hcr) :' the Red value in decimal cg=Hex2Dec(hcg) :' the Green value in decimal cb=Hex2Dec(hcb) :' the Blue value in decimal SETCONTROLCOLOR w,8,0,RGB(cr,cg,cb) :' show the selected colour ENDIF item=2 :' display the Hex value for a selected item BtnClr2() :' set button colours for Hex SETFOCUS w,10 CASE 4 CLOSEWINDOW w CASE 10 ' Listview clicked - Read the data from @QUAL into mem SELECT @NOTIFYCODE CASE @NMCLICK CASE& @LVNITEMCHANGED mem=@QUAL READMEM mem,1,lv pos=lv.iItem :' listview selected row SELECT item CASE 1 a$="RGB("+ColorR[pos]+")" :' displaying RGB Ctemp=ColorR[pos] CParse() :' separate the integer Color values from the Ctemp string SETCONTROLCOLOR w,8,0,RGB(cr,cg,cb) :' show the selected colour CASE 2 a$="0x"+ColorH[pos] :' displaying hex value hcr=RIGHT$(ColorH[pos],2) :' the Red component in Hex hcg=MID$(ColorH[pos],3,2) :' the Green component in Hex hcb=LEFT$(ColorH[pos],2) :' the Blue component in Hex cr=Hex2Dec(hcr) :' the Red value in decimal cg=Hex2Dec(hcg) :' the Green value in decimal cb=Hex2Dec(hcb) :' the Blue value in decimal SETCONTROLCOLOR w,8,0,RGB(cr,cg,cb) :' show the selected colour ENDSELECT SETCONTROLTEXT w,7,LTRIM$(a$) :' display the chosen item in the text box Clip() :' copy a$ to Clipboard ENDSELECT endselect ENDSELECT RETURN 0 ENDSUB SUB LoadColorData() ' Set the colour RGB values .. Crgb[0]="32,32,32","229,229,255","250,235,215","0,255,255","127,255,212" Crgb[5]="240,255,255","245,245,220","255,228,196","0,0,0","255,235,205" Crgb[10]="0,0,255","138,43,226","165,42,42","222,184,135","95,158,160" Crgb[15]="127,255,0","210,105,30","255,127,80","100,149,237","255,248,220" Crgb[20]="220,20,60","0,255,255","0,0,139","0,139,139","184,134,11" Crgb[25]="169,169,169","0,100,0","189,183,107","139,0,139","85,107,47" Crgb[30]="255,140,0","153,50,204","139,0,0","233,150,122","143,188,143" Crgb[35]="72,61,19","47,79,79","0,206,209","148,0,211","255,20,147" Crgb[40]="0,191,255","105,105,105","30,144,255","178,34,34","255,250,240" Crgb[45]="34,139,34","255,0,255","220,220,220","248,248,255","255,215,00" Crgb[50]="218,165,32","128,128,128","0,128,0","173,255,47","240,255,240" Crgb[55]="255,105,180","205,92,92","75,0,130","255,255,240","240,230,140" Crgb[60]="230,230,250","255,240,255","124,252,0","255,250,205","173,216,230" Crgb[65]="240,128,128","224,255,255","250,250,210","211,211,211","144,238,144" Crgb[70]="255,182,193","255,160,122","32,178,170","135,206,250","119,136,153" Crgb[75]="176,196,222","255,255,224","191,255,0","50,205,50","250,240,230" Crgb[80]="255,0,255","128,0,0","102,205,170","0,0,205","186,85,211" Crgb[85]="147,112,219","60,179,113","123,104,238","0,250,154","72,209,204" Crgb[90]="199,21,133","25,25,112","235,255,250","255,228,225","255,228,161" Crgb[95]="255,222,173","0,0,128","253,245,230","128,128,0","107,142,35" Crgb[100]="255,165,0","255,19,255","218,112,214","238,168,170","152,251,152" Crgb[105]="175,238,238","219,112,147","255,239,213","255,218,185","205,133,63" Crgb[110]="255,192,203","221,160,221","176,224,230","176,0,176","255,0,0" Crgb[115]="188,143,143","65,105,225","139,69,19","250,128,114","244,164,96" Crgb[120]="46,139,87","255,245,238","160,82,45","192,192,192","135,206,235" Crgb[125]="106,90,205","112,128,144","255,250,250","0,255,127","70,130,180" Crgb[130]="210,180,140","0,128,128","216,191,216","255,99,71","64,224,208" Crgb[135]="238,130,238","245,222,179","255,255,255","245,245,245","255,255,0" Crgb[140]="154,205,50","0,48,143","0,51,102","0,56,168","0,64,64" Crgb[145]="0,71,171","0,98,111","0,102,204","0,105,148","0,106,78" Crgb[150]="0,109,176","0,112,060","0,114,187","0,123,167","0,127,102" Crgb[155]="0,135,159","0,157,196","0,158,096","0,168,107","0,204,153" Crgb[160]="1,121,111","3,80,150","3,180,200","3,192,60","10,126,140" Crgb[165]="10,186,181","11,218,81","15,82,186","26,179,133","65,102,245" Crgb[170]="68,215,168","73,151,208","74,118,110","75,163,81","76,107,136" Crgb[175]="77,77,255","78,81,128","78,108,157","79,134,247","80,114,167" Crgb[180]="80,200,120","81,87,79","85,74,60","86,130,3","87,89,93" Crgb[185]="87,109,142","89,186,163","90,79,207","91,110,145","93,138,168" Crgb[190]="101,173,178","102,179,72","102,183,225","103,190,144","108,218,231" Crgb[195]="109,155,195","111,255,255","113,166,210","117,135,110","119,181,254" Crgb[200]="119,221,119","120,109,95","120,133,122","125,249,255","126,205,221" Crgb[205]="128,118,97","129,124,135","132,135,137","132,156,169","134,040,046" Crgb[210]="134,210,193","140,146,172","164,244,249","168,195,188","170,152,169" Crgb[215]="166,213,208","167,252,0","169,157,157","173,223,173","174,198,207" Crgb[220]="176,169,159","176,196,196","179,112,132","185,242,255","187,205,165" Crgb[225]="191,148,228","194,213,196","195,205,230","198,234,221","200,162,200" Crgb[230]="202,180,212","202,231,226","203,206,192","204,182,155","206,205,184" Crgb[235]="208,138,155","210,219,050","214,240,205","217,223,205","218,148,41" Crgb[240]="218,192,26","222,49,99","223,215,210","227,221,057","238,242,147" Crgb[245]="241,156,187","244,208,164","245,245,204","249,215,126","255,183,197" Crgb[250]="1,1,1" for i=0 to 250 colorR[i]=Crgb[i] next i ' Set the color Hex values .. Chex[0]="202020","FFE5E5","D7EBFA","FFFF00","D4FF7F" Chex[5]="FFFFF0","DCF5F5","C4E4FF","000000","CDEBFF" Chex[10]="FF0000","E22B8A","2A2AA5","87B8DE","A09E5F" Chex[15]="00FF7F","1E69D2","507FFF","ED9564","DCF8FF" Chex[20]="3C14DC","FFFF00","8B0000","8B8B00","0B86B8" Chex[25]="A9A9A9","006400","6BB7BD","8B008B","2F6B55" Chex[30]="008CFF","CC3299","00008B","7A96E9","8FBC8F" Chex[35]="8B3D48","4F4F2F","D1CE00","D30094","9314FF" Chex[40]="FFBF00","696969","FF901E","2222B2","F0FAFF" Chex[45]="228B22","FF00FF","DCDCDC","FFF8F8","00D7FF" Chex[50]="20A5DA","808080","008000","2FFFAD","F0FFF0" Chex[55]="B469FF","5C5CCD","82004B","F0FFFF","8CE6F0" Chex[60]="FAE6E6","F5F0FF","00FC7C","CDFAFF","E6D8AD" Chex[65]="8080F0","FFFFE0","D2FAFA","D3D3D3","90EE90" Chex[70]="C1B6FF","7AA0FF","AAB220","FACE87","998877" Chex[75]="DEC4B0","E0FFFF","00FFBF","32CD32","E6F0FA" Chex[80]="FF00FF","000080","AACD66","CD0000","D355BA" Chex[85]="DB7093","71B33C","EE687B","9AFA00","CCD148" Chex[90]="8515C7","701919","FAFFF5","E1E4FF","B5E4FF" Chex[95]="ADDEFF","800000","E6F5FD","008080","238E6B" Chex[100]="00A5FF","0045FF","D670DA","AAA8EE","98FB98" Chex[105]="EEEEAF","9370DB","D5EFFF","B9DAFF","3F85CD" Chex[110]="CBC0FF","DDA0DD","E6E0B0","B000B0","0000FF" Chex[115]="8F8FBC","E16941","13458B","7280FA","60A4F4" Chex[120]="578B2E","EEF5FF","2D52A0","C0C0C0","EBCE87" Chex[125]="CD5A6A","908070","FAFAFF","7FFF00","B48246" Chex[130]="8CB4D2","808000","D8BFD8","4763FF","D0E040" Chex[135]="EE82EE","B3DEF5","FFFFFF","F5F5F5","00FFFF" Chex[140]="32CD9A","8F3000","663300","A83800","404000" Chex[145]="AB4700","6F6200","CC6600","946900","4E6A00" Chex[150]="B06D00","3C7000","BB7200","A77B00","667F00" Chex[155]="9F8700","C49D00","609E00","6BA800","99CC00" Chex[160]="6F7901","965003","C8B403","3CC003","8C7E0A" Chex[165]="B5BA0A","51DA0B","BA520F","85B31A","F56641" Chex[170]="A8D744","D09749","6E764A","51A34B","886B4C" Chex[175]="FF4D4D","80514E","9D6C4E","F7864F","A77250" Chex[180]="78C850","4F5751","3C4A55","038256","5D5957" Chex[185]="8E6D57","A3BA59","CF4F5A","916E5B","A88A5D" Chex[190]="B2AD65","48B366","E1B766","90BE67","E7DA6C" Chex[195]="C39B6D","FFFF6F","D2A671","6E8775","FEB577" Chex[200]="77DD77","5F6D78","7A8578","FFF97D","DDCD7E" Chex[205]="617680","877C81","898784","A99C84","2E2886" Chex[210]="C1D286","AC928C","F9F4A4","BCC3A8","A998AA" Chex[215]="D0D5A6","00FCA7","9D9DA9","ADDFAD","CFC6AE" Chex[220]="9FA9B0","C4C4B0","8470B3","FFF2B9","A5CDBB" Chex[225]="E494BF","C4D5C2","E6CDC3","DDEAC6","C8A2C8" Chex[230]="D4B4CA","E2E7CA","C0CECB","9BB6CC","B8CDCE" Chex[235]="9B8AD0","32DBD2","CDF0D6","CDDFD9","2994DA" Chex[240]="1AC0DA","6331DE","D2D7DF","39DDE3","93F2EE" Chex[245]="BB9CF1","A4D0F4","CCF5F5","7ED7F9","C5B7FF" Chex[250]="010101" for i=0 to 250 ColorH[i]=Chex[i] next i ' Load Colour descriptions .. desc[0]="Almost Black","Alice Blue","Antique White","Aqua","Aqua Marine" desc[5]="Azure","Beige","Bisque","Black","Blanched Almond" desc[10]="Blue","Blue Violet","Brown","Burly Wood","Cadet Blue" desc[15]="Chartreuse","Chocolate","Coral","Cornflower Blue","Corn Silk" desc[20]="Crimson","Cyan","Dark Blue","Dark Cyan","Dark Goldenrod" desc[25]="Mid Grey","Dark Green","Dark Khaki","Dark Magenta","Dark Olive Green" desc[30]="Dark Orange","Dark Orchid","Dark Red","Dark Salmon","Dark Sea Green" desc[35]="Dark Slate Blue","Dark Slate Grey","Dark Turquoise","Dark Violet","Deep Pink" desc[40]="Deep Sky Blue","Dim Grey","Dodger Blue","Fire Brick","Floral White" desc[45]="Forest Green","Fuchsia","Gainsboro Grey","Ghost White","Gold" desc[50]="Goldenrod","Grey","Green","Green Yellow","Honeydew" desc[55]="Hot Pink","Indian Red","Indigo","Ivory","Khaki" desc[60]="Lavender","Lavender Blush","Lawn Green","Lemon Chiffon","Light Blue" desc[65]="Light Coral","Light Cyan","Light Goldenrod Yellow","Light Grey","Light Green" desc[70]="Light Pink","Light Salmon","Light Sea Green","Light Sky Blue","Light Slate Grey" desc[75]="Light Steel Blue","Light Yellow","Lime","Lime Green","Linen" desc[80]="Magenta","Maroon","Medium Aquamarine","Medium Blue","Medium Orchid" desc[85]="Medium Purple","Medium Sea Green","Medium Slate Blue","Medium Spring Green","Medium Turquoise" desc[90]="Medium Violet Red","Midnight Blue","Mint Cream","Misty Rose","Moccasin" desc[95]="Navajo White","Navy","Old Lace","Olive","Olive Drab" desc[100]="Orange","Orange Red","Orchid","Pale Goldenrod","Pale Green" desc[105]="Pale Turquoise","Pale Violet Red","Papaya Whip","Peach Puff","Peru" desc[110]="Pink","Plum","Powder Blue","Purple","Red" desc[115]="Rosy Brown","Royal Blue","Saddle Brown","Salmon","Sandy Brown" desc[120]="Sea Green","Sea Shell","Sienna","Silver","Sky Blue" desc[125]="Slate Blue","Slate Grey","Snow","Spring Green","Steel Blue" desc[130]="Tan","Teal","Thistle","Tomato","Turquoise" desc[135]="Violet","Wheat","White","White Smoke","Yellow" desc[140]="Yellow Green","* Air Force Blue (USAF)","* Prussian Blue","* Royal Azure","* Rich Black Cyan" desc[145]="* Cobalt","* Blue Lagoon","* Navy Blue","* Sea Blue","* Bottle Green" desc[150]="* Honolulu Blue","* Dartmouth Green","* French Blue","* Cerulean","* Viridian" desc[155]="* Eastern Blue","* Pacific Blue","* Shamrock Green","* Jade","* Caribbean Green" desc[160]="* Pine Green","* Medium Electric Blue","* Iris Blue","* Dark Pastel Green","* Metallic Seaweed" desc[165]="* Tiffany Blue","* Malachite","* Sapphire","* Mountain Meadow","* Ultramarine" desc[170]="* Eucalyptus","* Celestial Blue","* Dark Green Copper","* Fruit Salad","* Wedgewood" desc[175]="* Neon Blue","* Purple Navy","* San Marino","* Blueberry","* Blue Yonder" desc[180]="* Emerald","* Battleship Grey","* Metallic Bronze","* Avocado","* Bright Grey" desc[185]="* Kashmir Blue","* Puerto Rico","* Iris","* Waikawa Blue Grey","* Air Force Blue" desc[190]="* Fountain Blue","* Apple","* Malibu","* Silver Tree","* Turquoise Blue" desc[195]="* Cerulean Frost","* Baby Blue","* Iceberg","* Xanadu","* French Sky Blue" desc[200]="* Pastel Green","* Sandstone","* Blue Smoke","* Electric Blue","* Spray" desc[205]="* Stonewall","* Topaz","* Aluminium","* Bali Hai","* Flame Red" desc[210]="* Bermuda","* Grey Blue","* Waterspout","* Opal","* Rose Quartz" desc[215]="* Sinbad","* Spring Bud","* Nobel","* Light Moss Green","* Pastel Blue" desc[220]="* Cloudy","* Jungle Mist","* Tapestry","* Diamond","* Pixie Green" desc[225]="* Bright Lavender","* Sea Mist","* Periwinkle","* Mint Tulip","* Lilac" desc[230]="* Prelude","* Jagged Ice","* Harp","* Vanilla","* Moon Mist" desc[235]="* Can Can","* Bitter Lemon","* Snowy Mint","* Gin","* Buttercup" desc[240]="* Sunflower","* Cerise","* Bon Jour","* Starship","* Jonquil" desc[245]="* Amaranth Pink","* Tequila","* Mimosa","* Golden Glow","* Cherry Blossom" desc[250]="* Glossy Black" ENDSUB SUB Clip() ' copy a$ to the hidden RE Control off the top of the screen IF w.hWnd SETCONTROLTEXT w,5,a$ :' load the item into the hidden RE Control SETCONTROLTEXT w,7,a$ CONTROLCMD w, 5, @RTSETSELECTION, 0, -1 :' Select it CONTROLCMD w, 5, @RTSETSELCOLOR, 0x0 CONTROLCMD w, 5, @RTSETSELFONT, "Arial",10,0,0 CONTROLCMD w, 5, @RTCOPY :' copy to clipboard ' (LV item text is now in the clipboard, and cntl-V will paste it at the cursor ..) ENDIF ENDSUB SUB BtnClr1() SETCONTROLCOLOR w,1,0,RGB(0,200,250) SETCONTROLCOLOR w,2,0,RGB(180,180,180) ENDSUB SUB BtnClr2() SETCONTROLCOLOR w,2,0,RGB(0,200,250) SETCONTROLCOLOR w,1,0,RGB(180,180,180) ENDSUB SUB CParse() INT pos 'Parse CTemp for the integer Color values cr, cg, cb pos=INSTR(Ctemp,",") cr=VAL(LEFT$(Ctemp,pos-1)) Ctemp=RIGHT$(Ctemp, LEN(Ctemp)-pos) pos=INSTR(Ctemp,",") cg=VAL(LEFT$(Ctemp,pos-1)) Ctemp=RIGHT$(Ctemp, LEN(Ctemp)-pos) cb=VAL(Ctemp) ENDSUB SUB Hex2Dec(n1:STRING),DOUBLE INT nl1 DOUBLE nGVal INT nSteper,nCount,x,nVal,Stepit STRING hVal nl1=LEN(n1) nGVal=0 nSteper=16 nCount=1 FOR x=nl1 TO 1 STEP -1 hVal=UCASE$(MID$(n1, x, 1)) SELECT hVal CASE "A" nVal=10 CASE "B" nVal=11 CASE "C" nVal=12 CASE "D" nVal=13 CASE "E" nVal=14 CASE "F" nVal=15 DEFAULT nVal=VAL(hVal) ENDSELECT Stepit=(nSteper ^ (nCount - 1)) nGVal=nGVal + nVal * Stepit nCount++ NEXT x RETURN nGVal ENDSUB