# Module:         poFtiGeneric
# Copyright:      Paul Obermeier 2026 / obermeier@poSoft.de
# First Version:  2026 / 05 / 03
#
# Distributed under BSD license.
#
# Module for handling FTI (File Type Icon) vector files. 
# FTI files are used on Silicon Graphics IRIX systems to display
# scalable program icons.

namespace eval poFti {
    variable ns [namespace current]

    namespace ensemble create

    namespace export generic.doc.closed
    namespace export generic.doc
    namespace export generic.doc.open
    namespace export generic.doc.pre
    namespace export generic.exec.closed
    namespace export generic.exec.open
    namespace export generic.folder.closed
    namespace export generic.folder.open
    namespace export generic.link
    namespace export generic.panel.closed
    namespace export generic.panel.open
    namespace export generic.printer.closed
    namespace export generic.printer.open
    namespace export generic.script

    proc generic.doc.closed {} {
        # Returns the string description of icon `generic.doc.closed`.

        return {
#	Third Sheet of Paper -- Closed
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(39.59, 11.51);
			vertex(39.59, 70.48);
			vertex(77.39, 89.92);
			vertex(77.39, 30.84);
		endoutlinepolygon(outlinecolor);
        }
    }

    proc generic.doc {} {
        # Returns the string description of icon `generic.doc`.

        return {
#	Icon Shadow
		color(shadowcolor);
		bgnpolygon();
			vertex(38.83, 0.22);
			vertex(22.00, 9.12);
			vertex(60.55, 28.78);
			vertex(77.82, 20.20);
		endpolygon();

#	Paper Sheet 1
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(22.00, 19.87);
			vertex(22.00, 79.50);
			vertex(60.01, 98.93);
			vertex(60.01, 39.20);
		endoutlinepolygon(outlinecolor);

#	Paper Sheet 2
		bgnoutlinepolygon();
			vertex(30.69, 15.53);
			vertex(30.69, 74.83);
			vertex(68.70, 94.59);
			vertex(68.70, 34.97);
		endoutlinepolygon(outlinecolor);

#	Third Sheet of Paper -- Closed
		bgnoutlinepolygon();
			vertex(39.59, 11.51);
			vertex(39.59, 70.48);
			vertex(77.39, 89.92);
			vertex(77.39, 30.84);
		endoutlinepolygon(outlinecolor);
        }
    }

    proc generic.doc.open {} {
        # Returns the string description of icon `generic.doc.open`.

        return {
#	Open Paper Sheet 3 -- Back Part
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(39.59, 11.51);
			vertex(39.59, 70.48);
			vertex(51.43, 76.45);
			vertex(53.60, 76.78);
			vertex(54.91, 76.45);
			vertex(57.29, 76.13);
			vertex(58.38, 75.48);
			vertex(59.79, 74.61);
			vertex(61.42, 73.09);
			vertex(62.51, 71.35);
			vertex(77.39, 30.84);
		endoutlinepolygon(outlinecolor);

#	Open Paper Sheet 3 -- Furled Part
		bgnoutlinepolygon();
			vertex(77.39, 30.84);
			vertex(55.01, 53.11);
			vertex(56.53, 55.17);
			vertex(58.16, 57.23);
			vertex(59.25, 58.75);
			vertex(60.34, 60.27);
			vertex(61.10, 61.90);
			vertex(62.29, 63.86);
			vertex(62.83, 66.14);
			vertex(62.72, 68.64);
			vertex(62.51, 71.35);
		endoutlinepolygon(outlinecolor);
        }
    }

    proc generic.doc.pre {} {
        # Returns the string description of icon `generic.doc.pre`.

        return {
#	Icon Shadow
		color(shadowcolor);
		bgnpolygon();
			vertex(38.83, 0.22);
			vertex(22.00, 9.12);
			vertex(60.55, 28.78);
			vertex(77.82, 20.20);
		endpolygon();

#	Paper Sheet 1
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(22.00, 19.87);
			vertex(22.00, 79.50);
			vertex(60.01, 98.93);
			vertex(60.01, 39.20);
		endoutlinepolygon(outlinecolor);

#	Paper Sheet 2
		bgnoutlinepolygon();
			vertex(30.69, 15.53);
			vertex(30.69, 74.83);
			vertex(68.70, 94.59);
			vertex(68.70, 34.97);
		endoutlinepolygon(outlinecolor);
        }
    }

    proc generic.exec.closed {} {
        # Returns the string description of icon `generic.exec.closed`.

        return {
#		Icon Shadow - Closed
		color(shadowcolor);
		bgnpolygon();
			vertex(50.00, 0.00);
			vertex(10.00, 20.00);
			vertex(50.00, 40.00);
			vertex(90.00, 20.00);
		endpolygon();

#		Icon - Closed
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(50.00, 10.00);
			vertex(18.00, 26.00);
			vertex(15.66, 27.43);
			vertex(14.00, 29.00);
			vertex(12.00, 31.03);
			vertex(10.74, 33.49);
			vertex(10.00, 36.00);
			vertex(10.00, 40.00);
			vertex(50.00, 60.00);
			vertex(50.00, 56.00);
			vertex(51.00, 53.00);
			vertex(52.34, 50.75);
			vertex(53.54, 49.27);
			vertex(55.00, 48.00);
			vertex(58.00, 46.00);
			vertex(90.00, 30.00);
		endoutlinepolygon(outlinecolor);
        }
    }

    proc generic.exec.open {} {
        # Returns the string description of icon `generic.exec.open`.

        return {
#		Icon Shadow - Open
		color(shadowcolor);
		bgnpolygon();
			vertex(18.00, 16.00);
			vertex(10.00, 20.00);
			vertex(50.00, 40.00);
			vertex(58.00, 36.00);
		endpolygon();

#		Icon - Open
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(18.00, 26.00);
			vertex(15.84, 27.28);
			vertex(14.00, 29.00);
			vertex(12.10, 31.27);
			vertex(10.90, 33.20);
			vertex(10.00, 36.00);
			vertex(10.00, 40.00);
			vertex(10.00, 80.00);
			vertex(50.00, 100.00);
			vertex(50.00, 60.00);
			vertex(50.00, 56.00);
			vertex(50.88, 52.84);
			vertex(52.04, 50.70);
			vertex(53.48, 49.14);
			vertex(55.00, 48.00);
			vertex(58.00, 46.00);
		endoutlinepolygon(outlinecolor);
        }
    }

    proc generic.folder.closed {} {
        # Returns the string description of icon `generic.folder.closed`.

        return {
#	Shadow Always Same Closed or Open
		color(shadowcolor);
		bgnpolygon();
			vertex(26.37, 0.00);
			vertex(15.00, 5.69);
			vertex(71.86, 34.11);
			vertex(83.23, 28.43);
		endpolygon();

#	Folder Back Polygon 1
		color(iconcolor);
		bgnpolygon();
			vertex(21.14, 13.87);
			vertex(17.27, 15.81);
			vertex(17.27, 63.22);
			vertex(26.83, 68.23);
			vertex(45.25, 77.67);
			vertex(73.22, 91.65);
			vertex(73.22, 44.01);
			vertex(76.97, 41.85);
		endpolygon();

#	Folder Back Polygon 2 -- Tab on Top
		bgnpolygon();
			vertex(26.83, 68.23);
			vertex(28.42, 73.00);
			vertex(43.66, 81.76);
			vertex(45.25, 77.67);
		endpolygon();

#	Folder Back Outline
		color(outlinecolor);
		bgnline();
			vertex(21.14, 13.87);
			vertex(17.27, 15.81);
			vertex(17.27, 63.22);
			vertex(26.83, 68.23);
			vertex(28.42, 73.00);
			vertex(28.42, 73.00);
			vertex(43.66, 81.76);
			vertex(45.25, 77.67);
			vertex(73.22, 91.65);
			vertex(73.22, 44.01);
			vertex(76.97, 41.85);
		endline();

#	Folder Front Polygon -- Small Tab Indent
#	Folder Front Outline	
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(21.14, 13.87);
			vertex(21.14, 60.50);
			vertex(29.44, 64.82);
			vertex(31.49, 61.06);
			vertex(47.07, 68.80);
			vertex(47.64, 73.91);
			vertex(76.97, 88.47);
			vertex(76.97, 41.85);
		endoutlinepolygon(outlinecolor);
        }
    }

    proc generic.folder.open {} {
        # Returns the string description of icon `generic.folder.open`.

        return {
#	Folder Back Polygon 2 -- Tab on Top
		color(iconcolor);
		bgnpolygon();
			vertex(26.83, 68.23);
			vertex(28.42, 73.00);
			vertex(43.66, 81.76);
			vertex(45.25, 77.67);
		endpolygon();

#	Folder Back Polygon 1
		bgnpolygon();
			vertex(21.14, 13.87);
			vertex(17.27, 15.81);
			vertex(17.27, 63.22);
			vertex(26.83, 68.23);
			vertex(45.25, 77.67);
			vertex(73.22, 91.65);
			vertex(73.22, 44.01);
			vertex(76.97, 41.85);
		endpolygon();

#	Folder Back Outline
		color(outlinecolor);
		bgnline();
			vertex(21.14, 13.87);
			vertex(17.27, 15.81);
			vertex(17.27, 63.22);
			vertex(26.83, 68.23);
			vertex(28.42, 73.00);
			vertex(28.42, 73.00);
			vertex(43.66, 81.76);
			vertex(45.25, 77.67);
			vertex(73.22, 91.65);
			vertex(73.22, 44.01);
		endline();

#	Shadow Always Same Closed or Open
		color(shadowcolor);
		bgnpolygon();
			vertex(26.37, 0.00);
			vertex(15.00, 5.69);
			vertex(71.86, 34.11);
			vertex(83.23, 28.43);
		endpolygon();

#	Folder Front Opened
		color(iconcolor);
		bgnpolygon();
			vertex(21.14, 13.87);
			vertex(42.06, 56.52);
			vertex(49.57, 60.61);
			vertex(49.57, 55.26);
			vertex(64.81, 62.88);
			vertex(68.90, 69.93);
			vertex(97.90, 84.49);
			vertex(76.97, 41.85);
		endpolygon();

#	Folder Front Opened -- Small Tab Indent
		bgnpolygon();
			vertex(39.33, 50.72);
			vertex(42.18, 56.74);
			vertex(49.57, 60.61);
			vertex(49.57, 55.26);
		endpolygon();

#	Folder Front Opened Outline
		bgnoutlinepolygon();
			vertex(21.14, 13.87);
			vertex(41.95, 56.52);
			vertex(49.57, 60.61);
			vertex(49.57, 55.26);
			vertex(64.81, 62.88);
			vertex(68.90, 69.93);
			vertex(97.90, 84.49);
			vertex(76.97, 41.85);
		endoutlinepolygon(outlinecolor);
        }
    }

    proc generic.link {} {
        # Returns the string description of icon `generic.link`.

        return {
#	A Big Black L Broken in 2 Pieces
		color(outlinecolor);
		bgnpolygon();
			vertex(0.00, 50.00);
			vertex(0.00, 75.00);
			vertex(5.00, 77.50);
			vertex(5.00, 52.50);
		endpolygon();

#	Path_1
		bgnpolygon();
			vertex(5.00, 52.50);
			vertex(5.00, 58.50);
			vertex(14.00, 63.00);
			vertex(14.00, 57.00);
		endpolygon();
        }
    }

    proc generic.panel.closed {} {
        # Returns the string description of icon `generic.panel.closed`.

        return {
#	Path_0
		color(shadowcolor);
		bgnpolygon();
			vertex(5.00, 22.50);
			vertex(50.00, 0.00);
			vertex(90.00, 20.00);
			vertex(45.00, 42.50);
		endpolygon();

#	Path_1
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(44.80, 55.90);
			vertex(40.00, 55.00);
			vertex(10.00, 40.00);
			vertex(7.00, 37.30);
			vertex(5.00, 32.50);
			vertex(50.00, 10.00);
			vertex(90.00, 30.00);
			vertex(88.00, 34.40);
			vertex(85.00, 37.50);
			vertex(50.00, 55.00);
		endoutlinepolygon(outlinecolor);

#	Path_2
		color(-249);
		bgnoutlinepolygon();
			vertex(15.80, 36.90);
			vertex(13.96, 34.62);
			vertex(47.40, 18.00);
			vertex(49.40, 20.40);
			vertex(51.40, 21.60);
			vertex(17.96, 38.22);
		endoutlinepolygon(outlinecolor);

#	Path_3
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(27.86, 31.07);
			vertex(30.10, 32.18);
			vertex(42.92, 25.74);
			vertex(40.46, 24.47);
			vertex(38.92, 22.14);
			vertex(26.10, 28.59);
		endoutlinepolygon(outlinecolor);

#	Path_4
		color(-119);
		bgnline();
			vertex(37.07, 25.78);
			vertex(29.32, 29.65);
		endline();

#	Path_6
		color(outlinecolor);
		bgnline();
			vertex(34.19, 27.78);
			vertex(33.63, 27.50);
		endline();
        }
    }

    proc generic.panel.open {} {
        # Returns the string description of icon `generic.panel.open`.

        return {
#	Path_0
		color(shadowcolor);
		bgnpolygon();
			vertex(5.00, 12.50);
			vertex(15.00, 7.50);
			vertex(20.40, 7.20);
			vertex(25.00, 7.50);
			vertex(65.00, 27.50);
			vertex(65.00, 32.50);
			vertex(55.00, 37.50);
		endpolygon();

#	Path_1
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(10.00, 80.00);
			vertex(10.00, 20.00);
			vertex(50.00, 40.00);
			vertex(53.20, 43.00);
			vertex(55.00, 47.50);
			vertex(55.00, 92.50);
			vertex(53.20, 96.80);
			vertex(50.00, 100.00);
		endoutlinepolygon(outlinecolor);

#	Path_2
		color(-249);
		bgnoutlinepolygon();
			vertex(17.40, 74.80);
			vertex(14.80, 74.00);
			vertex(14.80, 29.00);
			vertex(17.80, 30.80);
			vertex(20.40, 33.60);
			vertex(20.40, 74.80);
		endoutlinepolygon(outlinecolor);

#	Path_3
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(17.20, 68.60);
			vertex(20.40, 68.00);
			vertex(20.40, 54.30);
			vertex(17.20, 52.60);
			vertex(14.80, 52.00);
			vertex(14.80, 66.80);
		endoutlinepolygon(outlinecolor);

#	Path_4
		color(-119);
		bgnline();
			vertex(17.00, 55.40);
			vertex(17.05, 64.12);
		endline();

#	Path_6
		color(outlinecolor);
		bgnline();
			vertex(17.36, 59.85);
			vertex(16.79, 59.57);
		endline();
        }
    }

    proc generic.printer.closed {} {
        # Returns the string description of icon `generic.printer.closed`.

        return {
#	Generic Executable Icon Shadow - Closed
		color(shadowcolor);
		bgnpolygon();
			vertex(50.00, 0.00);
			vertex(10.00, 20.00);
			vertex(50.00, 40.00);
			vertex(90.00, 20.00);
		endpolygon();

#	Generic Executable Icon - Closed
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(50.00, 10.00);
			vertex(18.00, 26.00);
			vertex(15.00, 27.50);
			vertex(13.40, 28.80);
			vertex(12.00, 30.20);
			vertex(10.60, 32.60);
			vertex(10.00, 36.00);
			vertex(10.00, 40.00);
			vertex(50.00, 60.00);
			vertex(50.00, 56.00);
			vertex(51.00, 53.00);
			vertex(52.00, 52.00);
			vertex(54.00, 49.00);
			vertex(55.00, 48.00);
			vertex(58.00, 46.00);
			vertex(90.00, 30.00);
		endoutlinepolygon(outlinecolor);

#	Drop on Top of Platform
#	Printer Body
		bgnoutlinepolygon();
			vertex(51.48, 23.49);
			vertex(31.38, 33.54);
			vertex(30.62, 34.40);
			vertex(30.25, 35.27);
			vertex(30.08, 36.49);
			vertex(30.08, 43.89);
			vertex(30.22, 44.86);
			vertex(30.65, 45.41);
			vertex(31.58, 45.99);
			vertex(64.80, 62.50);
			vertex(84.98, 52.49);
			vertex(86.28, 51.67);
			vertex(87.04, 50.92);
			vertex(87.48, 49.70);
			vertex(87.50, 41.25);
			vertex(86.95, 40.20);
			vertex(85.98, 39.49);
			vertex(53.98, 23.49);
			vertex(53.28, 23.19);
			vertex(52.29, 23.20);
		endoutlinepolygon(outlinecolor);

#	Slot
		color(shadowcolor);
		bgnoutlinepolygon();
			vertex(41.89, 43.03);
			vertex(36.89, 45.53);
			vertex(64.39, 59.28);
			vertex(69.39, 56.78);
		endoutlinepolygon(outlinecolor);

#	Back Button
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(71.02, 51.81);
			vertex(67.02, 53.81);
			vertex(71.02, 55.81);
			vertex(75.02, 53.81);
		endoutlinepolygon(outlinecolor);

#	Front Button
		bgnoutlinepolygon();
			vertex(76.57, 48.89);
			vertex(72.57, 50.89);
			vertex(76.57, 52.89);
			vertex(80.57, 50.89);
		endoutlinepolygon(outlinecolor);

#	Knob Side
		bgnoutlinepolygon();
			vertex(36.44, 32.49);
			vertex(33.98, 40.49);
			vertex(36.42, 41.70);
			vertex(37.36, 41.47);
			vertex(38.92, 40.40);
			vertex(39.75, 38.74);
			vertex(40.00, 37.28);
			vertex(39.84, 35.68);
			vertex(39.46, 34.68);
		endoutlinepolygon(outlinecolor);

#	Knob Face
		bgnoutlinepolygon();
			vertex(36.44, 32.49);
			vertex(35.63, 32.56);
			vertex(34.48, 32.93);
			vertex(33.64, 33.59);
			vertex(32.74, 34.99);
			vertex(32.35, 36.53);
			vertex(32.34, 38.49);
			vertex(32.96, 39.81);
			vertex(33.98, 40.49);
			vertex(35.21, 40.40);
			vertex(36.23, 39.66);
			vertex(37.06, 38.74);
			vertex(37.64, 37.19);
			vertex(37.84, 35.79);
			vertex(37.74, 34.19);
			vertex(37.36, 33.15);
		endoutlinepolygon(outlinecolor);

#	Side Edge
		color(outlinecolor);
		bgnline();
			vertex(52.18, 24.49);
			vertex(52.18, 32.49);
			vertex(52.08, 33.29);
			vertex(51.68, 33.89);
			vertex(51.08, 34.19);
			vertex(45.90, 36.78);
		endline();

#	Front Edge
		bgnline();
			vertex(54.08, 35.59);
			vertex(83.98, 50.49);
		endline();

#	Paper
		color(iconcolor);
		bgnpolygon();
			vertex(65.56, 56.53);
			vertex(40.36, 43.88);
			vertex(39.86, 47.83);
			vertex(38.76, 51.73);
			vertex(64.47, 65.15);
			vertex(64.76, 63.13);
			vertex(65.11, 61.47);
			vertex(65.30, 58.91);
		endpolygon();

#	Paper
		bgnpolygon();
			vertex(38.68, 51.69);
			vertex(37.38, 55.59);
			vertex(61.97, 71.54);
			vertex(63.03, 69.43);
			vertex(63.78, 67.09);
			vertex(64.39, 65.11);
		endpolygon();

#	Paper
		bgnpolygon();
			vertex(36.28, 58.09);
			vertex(33.81, 60.69);
			vertex(56.92, 75.75);
			vertex(59.97, 73.64);
		endpolygon();

#	Paper
		bgnpolygon();
			vertex(33.81, 60.69);
			vertex(30.72, 62.75);
			vertex(48.78, 76.84);
			vertex(50.72, 76.98);
			vertex(53.78, 76.84);
			vertex(56.92, 75.75);
		endpolygon();

#	Paper
		bgnpolygon();
			vertex(30.72, 62.75);
			vertex(27.32, 63.68);
			vertex(23.78, 64.34);
			vertex(48.78, 76.84);
		endpolygon();

#	Paper
		bgnpolygon();
			vertex(37.36, 55.58);
			vertex(36.26, 58.08);
			vertex(59.95, 73.63);
			vertex(61.95, 71.53);
		endpolygon();

#	Paper
		color(outlinecolor);
		bgnclosedline();
			vertex(65.48, 56.49);
			vertex(40.28, 43.84);
			vertex(39.78, 47.79);
			vertex(38.68, 51.69);
			vertex(37.38, 55.59);
			vertex(36.28, 58.09);
			vertex(33.81, 60.69);
			vertex(30.72, 62.75);
			vertex(27.32, 63.68);
			vertex(23.78, 64.34);
			vertex(48.78, 76.84);
			vertex(50.72, 76.98);
			vertex(53.78, 76.84);
			vertex(56.92, 75.75);
			vertex(59.97, 73.64);
			vertex(61.97, 71.54);
			vertex(63.03, 69.43);
			vertex(63.78, 67.09);
			vertex(64.39, 65.11);
			vertex(64.68, 63.09);
			vertex(65.03, 61.43);
			vertex(65.22, 58.87);
		endclosedline();
        }
    }

    proc generic.printer.open {} {
        # Returns the string description of icon `generic.printer.open`.

        return {
#	Generic Executable Shadow - Open
		color(shadowcolor);
		bgnpolygon();
			vertex(18.00, 16.00);
			vertex(10.00, 20.00);
			vertex(50.00, 40.00);
			vertex(58.00, 36.00);
		endpolygon();

#	Generic Executable Icon - Open
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(18.00, 26.00);
			vertex(15.00, 27.50);
			vertex(13.51, 28.94);
			vertex(12.18, 30.66);
			vertex(10.80, 33.00);
			vertex(10.00, 36.00);
			vertex(10.00, 40.00);
			vertex(10.00, 80.00);
			vertex(50.00, 100.00);
			vertex(50.00, 60.00);
			vertex(50.00, 56.00);
			vertex(51.00, 54.00);
			vertex(52.00, 52.00);
			vertex(54.00, 49.00);
			vertex(55.00, 48.00);
			vertex(58.00, 46.00);
		endoutlinepolygon(outlinecolor);

#	Drop on Top of Platform
#	Printer Body
		bgnoutlinepolygon();
			vertex(51.48, 23.49);
			vertex(31.38, 33.54);
			vertex(30.62, 34.40);
			vertex(30.25, 35.27);
			vertex(30.08, 36.49);
			vertex(30.08, 43.89);
			vertex(30.22, 44.86);
			vertex(30.65, 45.41);
			vertex(31.58, 45.99);
			vertex(64.80, 62.50);
			vertex(84.98, 52.49);
			vertex(86.28, 51.67);
			vertex(87.04, 50.92);
			vertex(87.48, 49.70);
			vertex(87.50, 41.25);
			vertex(86.95, 40.20);
			vertex(85.98, 39.49);
			vertex(53.98, 23.49);
			vertex(53.28, 23.19);
			vertex(52.29, 23.20);
		endoutlinepolygon(outlinecolor);

#	Slot
		color(shadowcolor);
		bgnoutlinepolygon();
			vertex(41.89, 43.03);
			vertex(36.89, 45.53);
			vertex(64.39, 59.28);
			vertex(69.39, 56.78);
		endoutlinepolygon(outlinecolor);

#	Back Button
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(71.02, 51.81);
			vertex(67.02, 53.81);
			vertex(71.02, 55.81);
			vertex(75.02, 53.81);
		endoutlinepolygon(outlinecolor);

#	Front Button
		bgnoutlinepolygon();
			vertex(76.57, 48.89);
			vertex(72.57, 50.89);
			vertex(76.57, 52.89);
			vertex(80.57, 50.89);
		endoutlinepolygon(outlinecolor);

#	Knob Side
		bgnoutlinepolygon();
			vertex(36.44, 32.49);
			vertex(33.98, 40.49);
			vertex(36.42, 41.70);
			vertex(37.36, 41.47);
			vertex(38.92, 40.40);
			vertex(39.75, 38.74);
			vertex(40.00, 37.28);
			vertex(39.84, 35.68);
			vertex(39.46, 34.68);
		endoutlinepolygon(outlinecolor);

#	Knob Face
		bgnoutlinepolygon();
			vertex(36.44, 32.49);
			vertex(35.63, 32.56);
			vertex(34.48, 32.93);
			vertex(33.64, 33.59);
			vertex(32.74, 34.99);
			vertex(32.35, 36.53);
			vertex(32.34, 38.49);
			vertex(32.96, 39.81);
			vertex(33.98, 40.49);
			vertex(35.21, 40.40);
			vertex(36.23, 39.66);
			vertex(37.06, 38.74);
			vertex(37.64, 37.19);
			vertex(37.84, 35.79);
			vertex(37.74, 34.19);
			vertex(37.36, 33.15);
		endoutlinepolygon(outlinecolor);

#	Side Edge
		color(outlinecolor);
		bgnline();
			vertex(52.18, 24.49);
			vertex(52.18, 32.49);
			vertex(52.08, 33.29);
			vertex(51.68, 33.89);
			vertex(51.08, 34.19);
			vertex(45.90, 36.78);
		endline();

#	Front Edge
		bgnline();
			vertex(54.08, 35.59);
			vertex(83.98, 50.49);
		endline();

#	Paper
		color(iconcolor);
		bgnpolygon();
			vertex(65.56, 56.53);
			vertex(40.36, 43.88);
			vertex(39.86, 47.83);
			vertex(38.76, 51.73);
			vertex(64.47, 65.15);
			vertex(64.76, 63.13);
			vertex(65.11, 61.47);
			vertex(65.30, 58.91);
		endpolygon();

#	Paper
		bgnpolygon();
			vertex(38.68, 51.69);
			vertex(37.38, 55.59);
			vertex(61.97, 71.54);
			vertex(63.03, 69.43);
			vertex(63.78, 67.09);
			vertex(64.39, 65.11);
		endpolygon();

#	Paper
		bgnpolygon();
			vertex(36.28, 58.09);
			vertex(33.81, 60.69);
			vertex(56.92, 75.75);
			vertex(59.97, 73.64);
		endpolygon();

#	Paper
		bgnpolygon();
			vertex(33.81, 60.69);
			vertex(30.72, 62.75);
			vertex(48.78, 76.84);
			vertex(50.72, 76.98);
			vertex(53.78, 76.84);
			vertex(56.92, 75.75);
		endpolygon();

#	Paper
		bgnpolygon();
			vertex(30.72, 62.75);
			vertex(27.32, 63.68);
			vertex(23.78, 64.34);
			vertex(48.78, 76.84);
		endpolygon();

#	Paper
		bgnpolygon();
			vertex(37.38, 55.59);
			vertex(36.28, 58.09);
			vertex(59.97, 73.64);
			vertex(61.97, 71.54);
		endpolygon();

#	Paper
		color(outlinecolor);
		bgnclosedline();
			vertex(65.48, 56.49);
			vertex(40.28, 43.84);
			vertex(39.78, 47.79);
			vertex(38.68, 51.69);
			vertex(37.38, 55.59);
			vertex(36.28, 58.09);
			vertex(33.81, 60.69);
			vertex(30.72, 62.75);
			vertex(27.32, 63.68);
			vertex(23.78, 64.34);
			vertex(48.78, 76.84);
			vertex(50.72, 76.98);
			vertex(53.78, 76.84);
			vertex(56.92, 75.75);
			vertex(59.97, 73.64);
			vertex(61.97, 71.54);
			vertex(63.03, 69.43);
			vertex(63.78, 67.09);
			vertex(64.39, 65.11);
			vertex(64.68, 63.09);
			vertex(65.03, 61.43);
			vertex(65.22, 58.87);
		endclosedline();
        }
    }

    proc generic.script {} {
        # Returns the string description of icon `generic.script`.

        return {
#	Script
		color(iconcolor);
		bgnoutlinepolygon();
			vertex(50.40, 20.30);
			vertex(23.90, 33.10);
			vertex(22.50, 34.20);
			vertex(21.10, 35.20);
			vertex(19.60, 36.70);
			vertex(18.60, 37.90);
			vertex(17.50, 39.50);
			vertex(16.90, 41.90);
			vertex(16.90, 56.60);
			vertex(53.10, 74.10);
			vertex(53.10, 59.50);
			vertex(53.60, 57.70);
			vertex(54.80, 55.90);
			vertex(56.00, 54.50);
			vertex(57.30, 53.60);
			vertex(58.80, 52.60);
			vertex(60.40, 51.30);
			vertex(86.50, 38.50);
		endoutlinepolygon(outlinecolor);

#	Text Lines
		color(outlinecolor);
		bgnline();
			vertex(25.10, 52.50);
			vertex(47.30, 63.00);
		endline();

#	Path_2
		bgnline();
			vertex(28.90, 48.40);
			vertex(47.20, 57.10);
		endline();

#	Path_3
		bgnline();
			vertex(25.40, 41.00);
			vertex(45.00, 50.30);
		endline();

#	Path_4
		bgnline();
			vertex(33.20, 38.60);
			vertex(52.80, 48.30);
		endline();

#	Path_5
		bgnline();
			vertex(40.30, 36.40);
			vertex(58.70, 45.30);
		endline();

#	Path_6
		bgnline();
			vertex(46.30, 33.20);
			vertex(64.90, 42.40);
		endline();

#	Path_7
		bgnline();
			vertex(48.30, 28.20);
			vertex(70.80, 39.30);
		endline();
        }
    }
}
