Farbdefinition aus HEX-Code erstellen
Wenn man z. B. "Web-Farben" in RagTime nutzen will, ist es schwierig die dort verwendeten hexadezimalen Werte in eine RagTime-Farbe umzurechnen. Dieses Skript automatisiert die Farbdefinition.
Wenn man eine HTML-Farbdefinition wie "DarkOrange" in RagTime nutzen will, kennt man in der Regel den dazugehörigen HEX-Code der Farbe (hier "FF8C00"), in der die RGB-Werte hexadezimal von 0 bis 255 angegeben sind.
Eine RagTime-Farbe wird aber über den Farbraum (RGB, CMYK, …) definiert, deren Kanäle von 0 bis 100% angegeben werden.
Da die Umrechnung nicht ganz einfach ist, habe ich ein AppleScript geschrieben, dass diesen Vorgang automatisiert.
Nachdem das Skript im Extras-Menü -> AppleScript -> "Insert HEX Color" gestartet wurde, fragt es nach einer Farbkodierung (z.B. FF8C00) und legt dann eine neue Farbe mit dem Namen "FF8C00" und den RGB-Werten Rot=100%, Grün=55% und Blau=0% an. Die Farbe erscheint dann im Farbwähler unter "Benannte Farben" bzw. unter Fenster-Menü -> Hilfsmittel -> Farben.
Das hier angehängten RagTime-Dokument enthält dieses Skript.
Hier der Code zum Anschauen:
property hexString : "0123456789ABCDEF"
on hex2dec(hex)
((offset of (item 1 of hex) in hexString) - 1) * 16 + (offset of (item 2 of hex) in hexString) - 1
end hex2dec
on hex2Color(hexValue)
if (count hexValue) ≠ 6 then
tell application "System Events"
set dlgResult to display dialog "Hex string is not 6 characters long!" with title "Error" buttons {"Stop"} default button 1
return ""
end tell
end if
repeat with i from 1 to 6
if not (hexString contains (character i of hexValue)) then
tell application "System Events"
set dlgResult to display dialog "Hex string contains illegal characters!" with title "Error" buttons {"Stop"} default button 1
end tell
return ""
end if
end repeat
set R to hex2dec(character 1 of hexValue & character 2 of hexValue)
set G to hex2dec(character 3 of hexValue & character 4 of hexValue)
set B to hex2dec(character 5 of hexValue & character 6 of hexValue)
-- hex is 0-255, colors are 0-100% so recalcluate the values and round it
set R to round (R / 255 * 1000) / 10
set G to round (G / 255 * 1000) / 10
set B to round (B / 255 * 1000) / 10
return {R, G, B}
end hex2Color
on run
tell application "System Events"
set dlgResult to display dialog "Enter Hex Code:" with title "Create new named color for RagTime" default answer "" buttons {"Cancel", "Ok"} default button 2 cancel button 1
end tell
if button returned of dlgResult = "Cancel" then return
set hexColor to text returned of dlgResult
set rtColor to hex2Color(hexColor)
if rtColor = "" then return
tell document 1
make new named color with properties {name:hexColor, kind:process, color:{red:item 1 of rtColor, green:item 2 of rtColor, blue:item 3 of rtColor}} at end
end tell
end run
Anhang | Größe |
---|---|
InserHexColor.rtd | 41.5 KB |