summaryrefslogtreecommitdiff
path: root/ipl/gprogs/xpmtoims.icn
diff options
context:
space:
mode:
Diffstat (limited to 'ipl/gprogs/xpmtoims.icn')
-rw-r--r--ipl/gprogs/xpmtoims.icn102
1 files changed, 102 insertions, 0 deletions
diff --git a/ipl/gprogs/xpmtoims.icn b/ipl/gprogs/xpmtoims.icn
new file mode 100644
index 0000000..2b4c1be
--- /dev/null
+++ b/ipl/gprogs/xpmtoims.icn
@@ -0,0 +1,102 @@
+############################################################################
+#
+# File: xpmtoims.icn
+#
+# Subject: Program to make Icon images from XPM files
+#
+# Author: Gregg M. Townsend
+#
+# Date: May 23, 1996
+#
+############################################################################
+#
+# This file is in the public domain.
+#
+############################################################################
+#
+# Usage: xpmtoims [-d] [-gn | -cn] [file...]
+#
+# Xpmtoims reads XPM files and writes Icon image strings.
+# -cn or -gn selects the color palette used; -c1 is the default.
+# If -d is given, each image is displayed in a window after conversion.
+#
+# Output is a file of Icon source code suitable for use via $include.
+# Each image is a string constant with a comment.
+# Multiple images are separated by commas.
+#
+# (A window is always required, whether or not anything is displayed,
+# so that the XPM colors can be converted by the window system.)
+#
+############################################################################
+#
+# Requires: Version 9 graphics
+#
+############################################################################
+#
+# Links: graphics, imscolor, options
+#
+############################################################################
+
+link graphics, imscolor, options
+
+global opts, pal, nwritten
+
+procedure main(args)
+ local fname, f
+
+ # Open the window and process options.
+ Window("size=100,20", args)
+ opts := options(args, "dg+c+")
+ pal := ("c" || \opts["c"]) | ("g" || \opts["g"]) | "c1"
+ PaletteChars(pal) | stop("invalid palette ", pal)
+ ColorValue("navy") |
+ write(&errout, "warning: no X color names, conversion is risky")
+
+ # Convert the file.
+ nwritten := 0
+ if *args = 0 then
+ dofile(&input, "[stdin]")
+ else
+ while fname := get(args) do
+ if f := open(fname) then {
+ dofile(f, fname)
+ close(f)
+ }
+ else {
+ write(&errout, fname, ": can't open")
+ }
+end
+
+
+# dofile(f, fname) -- process one file.
+
+procedure dofile(f, fname)
+ local s, e
+
+ # Convert the file
+ s := XPMImage(f, pal) | {
+ write(&errout, fname, ": cannot decode")
+ return
+ }
+
+ # Add spacing if this isn't the first image.
+ if (nwritten +:= 1) > 1 then
+ write(",\n")
+
+ # Write the image.
+ write("# xpmtoims -", pal, " ", fname)
+ imswrite(, s)
+ flush(&output)
+
+ # If requested, display the image.
+ if \opts["d"] then {
+ WAttrib("width=" || imswidth(s), "height=" || imsheight(s))
+ EraseArea(0, 0)
+ DrawImage(0, 0, s)
+ while e := Event() do case e of {
+ QuitEvents(): exit() # quit on "q" etc
+ !" \t\r\n": break # continue on "\r" etc
+ }
+ }
+ return
+end