meta data for this page
  •  

Farbkonvertierungen in JScript


RGB-Wert und Farbreferenz (colorref)

Das Dialogelement Color liefert als Ergebnis den RGB-Wert ("000 000 000" bis "255 255 255").
Viele FF-Befehle benötigen aber zur Farbangabe den Referenzwert colorref (0 - 16777215)

Hier zwei Umrechnungsroutinen in JScript

  1. // Farbwert in String wandeln
  2. function rgb2string(rgb)
  3. {
  4. var i,s = new Array((rgb & 255).toString(),
  5. ((rgb >>> 8) & 255).toString(),
  6. ((rgb >>> 16) & 255).toString() );
  7. for(i=0; i<3; i++)
  8. while( s[i].length < 3) { s[i] = "0" + s[i] };
  9. return s.join(" ");
  10. }
  11.  
  12. // String in Farbwert wandeln
  13. function string2rgb(cols)
  14. {
  15. var c = cols.split(" ");
  16. return (parseInt(c[2],10) << 16) + (parseInt(c[1],10) << 8) + parseInt(c[0],10) ;
  17. }
  18.  
  19. // Test
  20. col = 0x123456;
  21. cols = rgb2string(col); // in Text wandeln
  22. col2 = string2rgb(cols); // und wieder zurück
  23. /Anzeigen (rgb als Hexzahl)
  24. FF_MessageBox("rgb\t " + "0x"+col.toString(16) + "\r\n" +
  25. "=>String\t " + cols + "\r\n" +
  26. "=>rgb\t " + "0x"+col2.toString(16) ,1);


Die Umwandlung einer Zahl in einen Text ist in JScript mit der Funktion toString(x) einfach möglich,
Hier wird noch eine Hlfsfunktion zum erzeugen einen festen Textlänge verwendet.
Das Ergebnis wird mit der FF_MessageBox Funktion angezeigt.

  1. // Hilfsfunktion
  2. // Text auf der Linken Seite mit "filler" erweitern bis der Text die gewünschte länge besitzt.
  3. function fillleft(s,len,filler)
  4. {
  5. var result = s;
  6. while(result.length < len)
  7. result=filler+result;
  8. return result;
  9. }
  10.  
  11. // Tabelle erzeugen
  12. function CreateRadixTable ()
  13. {
  14. var s, x;
  15. s = "Hex\tDec\tBin\n";
  16. for (x = 0; x < 16; x++)
  17. {
  18. s += fillleft(x.toString(16),8,'0') + "\t"
  19. + x.toString(10) + "\t"
  20. + fillleft(x.toString(2),8,'0')+ "\n";
  21. }
  22. return(s);
  23. }
  24.  
  25. // Tabelle anzeigen.
  26. FF_MessageBox( CreateRadixTable() , 1);