home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
icon
/
historic
/
v941.tgz
/
icon.v941src.tar
/
icon.v941src
/
ipl
/
gprogs
/
colrname.icn
< prev
next >
Wrap
Text File
|
2000-08-03
|
3KB
|
126 lines
############################################################################
#
# File: colrname.icn
#
# Subject: Program to browse color names
#
# Author: Clinton L. Jeffery
#
# Date: August 3, 2000
#
############################################################################
#
# This file is in the public domain.
#
############################################################################
#
# Version: 1.1
#
# Extension to output color specification added by Ralph E. Griswold
#
############################################################################
#
# An X color name browser.
#
# Click on a colorname to change the window's background color.
# Not very interesting on a monochrome server.
#
############################################################################
#
# Requires: Version 9 graphics with mutable colors and X.
#
############################################################################
#
# Links: sort, wopen
#
############################################################################
link sort
link wopen
global w, L, startcols, rows, theBackGround
procedure drawit()
local curcol, i, maxcol
curcol := 1
i := 0
startcols := [1]
maxcol := 0
every name := !L do {
maxcol <:= *name
GotoRC(i % rows + 1,curcol)
writes(&window,name)
i +:= 1
if (i>0) & (i % rows = 0) then {
curcol +:= maxcol + 2
maxcol := 0
put(startcols,curcol)
}
}
end
procedure doevents()
local e, varcol, lastvarcol, lastrow
repeat {
Active()
while Pending()[1] do {
e := Event()
case e of {
"o": write(ColorValue(\name))
"q"|"\e": exit(0)
&lpress|&mpress|&rpress|&ldrag|&mdrag|&rdrag: {
varcol := 0
every &col >= !startcols do varcol +:= 1
if varcol === lastvarcol & &row===lastrow then next
lastvarcol := varcol
lastrow := &row
name := L[(varcol-1)*rows+&row]
Color(theBackGround,name)
WAttrib("label=Color Names: " || name)
}
}
}
}
end
procedure main(av)
local filename, f, i, t, max, line, t2, r, g, b, rgb
filename := av[1] | "/usr/lib/X11/rgb.txt"
WOpen("label=Color Names","x","cursor=on","lines=50","columns=175") |
stop("no window")
rows := WAttrib("lines")
f := open(filename) | stop("no rgb.txt")
theBackGround := NewColor("white")
Bg(theBackGround)
EraseArea()
i := 1
t := set()
t2 := table() # skip redundant colors by storing their rgb
max := 0
every line := !f do {
line ? {
tab(upto(&digits))
r := tab(many(&digits))
tab(upto(&digits))
g := tab(many(&digits))
tab(upto(&digits))
b := tab(many(&digits))
rgb := ishift(r,16)+ishift(g,8)+b
name := (tab(upto(&letters)) & tab(0))
if /t2[rgb] := name then {
insert(t,name)
max <:= *name
i +:= 1
}
}
}
L := isort(t)
drawit()
doevents()
end