summaryrefslogtreecommitdiff
path: root/ipl/gprogs/textures.icn
blob: 3069650025f964f9fa4200f49aded3714521626b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
############################################################################
#
#	File:     textures.icn
#
#	Subject:  Program to show various 4x4 patterns
#
#	Author:   Gregg M. Townsend
#
#	Date:     May 31, 1994
#
############################################################################
#
#   This file is in the public domain.
#
############################################################################
#
#     textures illustrates many different patterns that can be
#  created by tiling a 4x4 pixel cell.
#
############################################################################
#
#  Requires:  Version 9 graphics
#
############################################################################
#
#  Links: graphics
#
############################################################################

link graphics

global win

procedure main(args)
   local cols, rows, xsiz, ysiz, gutter, w, h, pats, i, x, y, s

   pats := [
      "#0000 #0010 #8010 #0820 #0420 #1040",
      "#8050 #0124 #0424 #0260 #0142 #0610 #0224 #0601 #2208",
      "#A050 #0161 #1414 #0660 #1284 #4221 #0168 #1144 #0505 _
             #0258 #0158 #8421 #4510 #0306",
      "#A052 #8641 #8443 #1922 #0272 #0525 #0515 #0433 #281C",
      "#A452 #0356 #2C34 #2A54 #1C32 #8711 #88E1 #0555 #0707 #070D #5451",
      "#A552 #8356 #2F22 #2555 #0787 #5A1A #124F #121F #9887",
      "#6666 #5555 #5AA5 #A5A5 #9696 #0F0F #0FF0"]

   cols := 2 * *pats - 1
   rows := 16
   xsiz := 36
   ysiz := 30
   gutter := 6

   w := cols * xsiz + (cols + 1) * gutter - 1
   h := rows * ysiz + (rows + 1) * gutter - 1
   win := open("textures", "g", "width="||w, "height="||h)

   Shade(win, "gray")
   FillRectangle(win, 0, 0, w, h)
   Fg(win, "black")

   WAttrib(win, "fillstyle=textured")

   every i := 1 to *pats do {
      y := gutter
      x := gutter + 2 * (xsiz + gutter) * (i - 1)
      pats[i] ? {
         while tab(upto('#')) do {
            s := move(5)
            rect(x, y, xsiz, ysiz, s)
            rect(x + xsiz + gutter, y, xsiz, ysiz,
               map(s, "0123456789ABCDEF", "FEDCBA9876543210"))
            y +:= ysiz + gutter
            }
         }
      }
   WDone(win)
end

procedure rect(x, y, w, h, s)
   Pattern(win, "1,1")
   DrawLine(win, x + w, y - 1, x + w, y + h, x - 1, y + h)
   Pattern(win, "1,0")
   DrawLine(win, x - 1, y + h, x - 1, y - 1, x + w, y - 1)
   Pattern(win, "4," || s)
   FillRectangle(win, x, y, w, h)
end