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

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

debug xxx and cie + clean data file + rm perldoc_idl

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