source: trunk/SRC/ToBeReviewed/POSTSCRIPT/chcolps.pro @ 114

Last change on this file since 114 was 114, checked in by smasson, 18 years ago

new compilation options (compile_opt idl2, strictarrsubs) in each routine

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 3.6 KB
Line 
1PRO format_colortable_hexa, table
2;
3  compile_opt idl2, strictarrsubs
4;
5
6    tvlct, r, g, b, /get
7
8    z = strarr(256)
9    y = strarr(256)
10    for k=0,255 do z[k]='00'+strtrim(string(r[k], format = '(Z)'),2)
11    for k=0,255 do y[k]=y[k]+strmid(z[k],strlen(z[k])-2,2)
12
13    for k=0,255 do z[k]='00'+strtrim(string(g[k], format = '(Z)'),2)
14    for k=0,255 do y[k]=y[k]+strmid(z[k],strlen(z[k])-2,2)
15
16    for k=0,255 do z[k]='00'+strtrim(string(b[k], format = '(Z)'),2)
17    for k=0,255 do y[k]=y[k]+strmid(z[k],strlen(z[k])-2,2)
18   
19    table =  strlowcase(y)
20
21END
22
23
24PRO build_table, tableout
25;
26; Fabrique le bloc de colortable
27;
28;
29  compile_opt idl2, strictarrsubs
30;
31
32    format_colortable_hexa, table
33
34
35    tableout = strarr(25)
36
37    tableout[0] = '/COLORTAB < '
38    FOR k = 0, 8 DO tableout[0] = tableout[0]+table[k]+' '
39    FOR i = 1, 22 DO BEGIN
40          FOR k = 11*i-2, 11*i+8 DO tableout[i] = tableout[i]+table[k]+' '
41    ENDFOR
42    FOR k = 251, 255 DO tableout[i] = tableout[i]+table[k]+' '
43    tableout[i] = tableout[i]+'> def'
44   
45END
46
47
48
49PRO chcolps, n1, n2, file, PALIT1 = palit1, PALIT2 = palit2
50;;
51;; Modifie les couleurs d''un fichier postscript
52;;
53;; Creation : G. Roullet 1999
54;;
55;
56; recupere les palettes
57;
58;
59  compile_opt idl2, strictarrsubs
60;
61    lct, n1
62    IF keyword_set(palit1) THEN palit, palit1
63    tvlct, red, green, blue, /get
64
65    lct, n2
66    IF keyword_set(palit2) THEN palit, palit2
67    tvlct, red1, green1, blue1, /get
68;
69;
70;
71    filein = file
72    fileout = file+'.new'
73   
74    openr, numin, filein, /get_lun
75    openw, numout, fileout, /get_lun
76    ligne = ''
77    nl = 0
78    colortab = 0
79;
80; Scan le fichier
81;
82    WHILE NOT(eof(numin)) DO BEGIN
83          readf, numin, ligne, format = '(A)'
84          nl = nl+1
85;
86; Replace setrgbcolor statements
87;
88          pos = strpos(ligne, 'setrgbcolor')
89          IF pos NE -1 THEN BEGIN
90                r = round(float(strmid(ligne, pos-18, 6))*255)
91                g = round(float(strmid(ligne, pos-12, 6))*255)
92                b = round(float(strmid(ligne, pos-6, 6))*255)         
93                ind = where(r EQ red AND g EQ green AND b EQ blue)
94                ind = ind[0]
95                IF ind[0] NE -1 THEN BEGIN
96                      r1 = red1[ind]/255.
97                      g1 = green1[ind]/255.
98                      b1 = blue1[ind]/255.
99                      color = string(r1, g1, b1, format = '(3(F5.3,:,X))')
100                      strput, ligne, color, pos-18
101                ENDIF ELSE BEGIN
102;                      print, 'erreur ligne :', nl
103                      dist = abs(r-red)+abs(g-green)+abs(b-blue)
104                      ind = (where(dist EQ min(dist)))[0]
105                      ind = ind[0]
106;                      print, 'je trouve            ', long([r, g, b])
107;                      print, 'je remplace par ', [red[ind], green[ind], blue[ind]]
108                      r1 = red1[ind]/255.
109                      g1 = green1[ind]/255.
110                      b1 = blue1[ind]/255.
111                      color = string(r1, g1, b1, format = '(3(F5.3,:,X))')
112                      strput, ligne, color, pos-18
113                ENDELSE
114          ENDIF           
115;
116; Replace COLORTAB
117;
118          pos = strpos(ligne, '/COLORTAB')
119          IF pos NE -1 THEN BEGIN
120                build_table, table
121                n = 0
122                colortab = 1
123          ENDIF
124
125          IF colortab THEN BEGIN
126                ligne = table[n]
127                n = n+1
128                IF n EQ 24 THEN colortab = 0
129          ENDIF
130;
131; Ecrit le fichier de sorti
132;
133          printf, numout, ligne, format = '(A)'
134    ENDWHILE
135    close, numin
136    close, numout
137    free_lun, numin
138    free_lun, numout
139
140    spawn, 'gs '+fileout
141
142END
143
Note: See TracBrowser for help on using the repository browser.