Changeset 16 for trunk/ToBeReviewed/POSTSCRIPT
- Timestamp:
- 05/02/06 11:17:47 (18 years ago)
- Location:
- trunk/ToBeReviewed/POSTSCRIPT
- Files:
-
- 3 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/ToBeReviewed/POSTSCRIPT/calibre.pro
r14 r16 8 8 ; characteres) des differentes marges, calcul posfenetre et posbar qui 9 9 ; servent a placer le dessin et la barre de couleur grace a 10 ; !p.position sur une feuille petitfeuille*grandfeuille (21*29.7)ou10 ; !p.position sur une feuille ou 11 11 ; sur une sortie ecran dont la fenetre a les memes proportions 12 12 ; … … 14 14 ; 15 15 ; CALLING SEQUENCE: 16 ; calibre, rapportyx,marge,margebar, petitdessin,posfenetre, posbar16 ; calibre, rapportyx,marge,margebar, smalldraw,posfenetre, posbar 17 17 ; 18 18 ; INPUTS: … … 30 30 ; couleur. tout est mesure en lignes de characteres 31 31 ; 32 ; petitdessin: 2 possiblites32 ; smalldraw: 2 possiblites 33 33 ; un vecteur de 4 elements donnant (en portrait ou 34 34 ; en landscape) la position de cadre ds lequel doit rentrer le … … 40 40 ; faire de le dessin, le nombre de lignes et enfin le numero de la 41 41 ; case que doit occuper le dessin (cf matlab). par ex pour faire 6 42 ; dessin en 2 colonnes et 3 lignes et occuper la 4 eme case, petit=[2,3,4]42 ; dessin en 2 colonnes et 3 lignes et occuper la 4 eme case, small=[2,3,4] 43 43 ; 44 44 ; KEYWORD PARAMETERS: 45 45 ; 46 46 ; /REMPLI:oblige le dessin a occuper l'espace maximum definit 47 ; par petitdessinsans resperter le rapport y sur x.48 ; 49 ; Y SURX: force le rapport y sur x a prendre la valeur50 ; rapportyx*y surx. ce mot cle est utile ds deux cas:51 ; 1) y surx=1 : oblige rapportyx a etre bien respecte sinon47 ; par smalldraw sans resperter le rapport y sur x. 48 ; 49 ; YXASPECT: force le rapport y sur x a prendre la valeur 50 ; rapportyx*yxaspect. ce mot cle est utile ds deux cas: 51 ; 1) yxaspect=1 : oblige rapportyx a etre bien respecte sinon 52 52 ; calibre se reserve le droit de changer un peu celui-ci dans 53 ; le cas ou le rapport d''aspect de petitdessin est trop54 ; different de celui de petitdessin.55 ; 2) y surx=n : multiplie par n le rapport d''aspect donne par53 ; le cas ou le rapport d''aspect de small dessin est trop 54 ; different de celui de smalldraw. 55 ; 2) yxaspect=n : multiplie par n le rapport d''aspect donne par 56 56 ; defaut.par ex ds plt, rapportyx est calcule pour que le 57 57 ; repere soit orthonorme, pour avoir un repere ou l''axe des y 58 ; est 2 fois plus dilate que celui des y Y SURX=258 ; est 2 fois plus dilate que celui des y YXASPECT=2 59 59 ; 60 60 ; PORTRAIT et LANDSCAPE: mots cles plus utilises mais tjs fonctionnels … … 84 84 ;------------------------------------------------------------ 85 85 ;------------------------------------------------------------ 86 pro calibre, rapportyx,marge,margebar, petitdessin,posfenetre, posbar $ 87 ,REMPLI=rempli,YSURX=ysurx,PORTAIT=portrait,LANDSCAPE=lanscape 88 ;------------------------------------------------------------ 89 @common 86 pro calibre, rapportyx, marge, margebar, smalldraw, posfenetre, posbar $ 87 , REMPLI = rempli, YXASPECT = yxaspect, PORTRAIT = portrait $ 88 , LANDSCAPE = lanscape, _extra = ex 89 ;--------------------------------------------------------- 90 @cm_4ps 91 IF NOT keyword_set(key_forgetold) THEN BEGIN 92 @updatenew 93 @updatekwd 94 ENDIF 95 ;--------------------------------------------------------- 96 ;------------------------------------------------------------ 90 97 tempsun = systime(1) ; pour key_performance 91 98 ;------------------------------------------------------------- 92 99 if keyword_set(portrait) then key_portrait=1 93 100 if keyword_set(landscape) then key_portrait=0 94 if keyword_set(y surx) then begin95 rapportyx=rapportyx*y surx101 if keyword_set(yxaspect) then begin 102 rapportyx=rapportyx*yxaspect 96 103 test2=0 97 104 endif else begin 98 y surx=1.105 yxaspect=1. 99 106 test2=1 100 endelse 107 ENDELSE 108 ; 109 mipgsz = min(page_size, max = mapgsz) 101 110 ;------------------------------------------------------------ 102 111 ; choix de Landscape ou Portrait … … 107 116 endif 108 117 ;------------------------------------------------------------- 109 ; si petitdessinest compte comme ds matlab118 ; si smalldraw est compte comme ds matlab 110 119 ;------------------------------------------------------------- 111 if n_elements( petitdessin) EQ 3 then begin112 if n_elements( margescadre) EQ 0 then margescadre= [1, 1, 1, 1]113 petitdessin = long(petitdessin)114 nbrecol = petitdessin[0]115 nbrelig = petitdessin[1]116 numero = petitdessin[2]-1120 if n_elements(smalldraw) EQ 3 then begin 121 if n_elements(page_margins) EQ 0 then page_margins = [1, 1, 1, 1] 122 smalldraw = long(smalldraw) 123 nbrecol = smalldraw[0] 124 nbrelig = smalldraw[1] 125 numero = smalldraw[2]-1 117 126 numlig = numero/nbrecol 118 127 numcol = numero-numlig*nbrecol 119 bas = petitfeuille*key_portrait+grandfeuille*(1-key_portrait)120 cote = grandfeuille*key_portrait+petitfeuille*(1-key_portrait)121 poscol = margescadre[0]+findgen(nbrecol+1)*(1.*(bas-(margescadre[0]+margescadre[1]))/nbrecol)122 poslig = cote- margescadre[3]-findgen(nbrelig+1)*(1.*(cote-(margescadre[2]+margescadre[3]))/nbrelig)123 petitdessin= [poscol[numcol], poslig[numlig+1], poscol[numcol+1], poslig[numlig]]128 bas = mipgsz*key_portrait+mapgsz*(1-key_portrait) 129 cote = mapgsz*key_portrait+mipgsz*(1-key_portrait) 130 poscol = page_margins[0]+findgen(nbrecol+1)*(1.*(bas-(page_margins[0]+page_margins[1]))/nbrecol) 131 poslig = cote-page_margins[3]-findgen(nbrelig+1)*(1.*(cote-(page_margins[2]+page_margins[3]))/nbrelig) 132 smalldraw = [poscol[numcol], poslig[numlig+1], poscol[numcol+1], poslig[numlig]] 124 133 endif 125 134 ;------------------------------------------------------------ … … 127 136 ;------------------------------------------------------------ 128 137 nombre_de_mots_ds_titre = 60. 129 !p.charsize=1.*( petitdessin[2]-petitdessin[0])*!d.x_px_cm / $138 !p.charsize=1.*(smalldraw[2]-smalldraw[0])*!d.x_px_cm / $ 130 139 (nombre_de_mots_ds_titre* !d.y_ch_size) 131 140 if !p.charsize gt 1 then !p.charsize=1 … … 140 149 ;------------------------------------------------------------ 141 150 if key_portrait eq 0 then begin 142 grand=petitdessin[2]-petitdessin[0]143 petit=petitdessin[3]-petitdessin[1]151 big=smalldraw[2]-smalldraw[0] 152 small=smalldraw[3]-smalldraw[1] 144 153 endif else begin 145 petit=petitdessin[2]-petitdessin[0]146 grand=petitdessin[3]-petitdessin[1]154 small=smalldraw[2]-smalldraw[0] 155 big=smalldraw[3]-smalldraw[1] 147 156 endelse 148 157 if key_portrait eq 0 then $ 149 rapportmax=1.*( petit-marge[3]-marge[1])/(grand-marge[2]-marge[0]) $150 else rapportmax=1.*( petit-marge[2]-marge[0])/(grand-marge[3]-marge[1])151 ;------------------------------------------------------------ 152 ; si y surxn'est pas specifie on modifie la valeur de rapportyx pour que158 rapportmax=1.*(small-marge[3]-marge[1])/(big-marge[2]-marge[0]) $ 159 else rapportmax=1.*(small-marge[2]-marge[0])/(big-marge[3]-marge[1]) 160 ;------------------------------------------------------------ 161 ; si yxaspect n'est pas specifie on modifie la valeur de rapportyx pour que 153 162 ; ca colle un peu plus aux proportions de la feuille 154 163 ;------------------------------------------------------------ … … 175 184 if key_portrait eq 0 then begin 176 185 if keyword_set(rempli) then begin 177 xs= grand178 ys= petit186 xs=big 187 ys=small 179 188 endif else begin 180 189 if rapportyx le rapportmax then begin 181 xs= grand182 ys=1.*( grand-marge[0]-marge[1])*rapportyx+marge[2]+marge[3]183 if ys gt petitthen begin184 xs=1.*( petit-marge[2]-marge[3])/rapportyx+marge[0]+marge[1]185 ys= petit190 xs=big 191 ys=1.*(big-marge[0]-marge[1])*rapportyx+marge[2]+marge[3] 192 if ys gt small then begin 193 xs=1.*(small-marge[2]-marge[3])/rapportyx+marge[0]+marge[1] 194 ys=small 186 195 endif 187 196 endif else begin 188 xs=1.*( petit-marge[2]-marge[3])/rapportyx+marge[0]+marge[1]189 ys= petit190 if xs gt grandthen begin191 xs= grand192 ys=1.*( grand-marge[0]-marge[1])*rapportyx+marge[2]+marge[3]197 xs=1.*(small-marge[2]-marge[3])/rapportyx+marge[0]+marge[1] 198 ys=small 199 if xs gt big then begin 200 xs=big 201 ys=1.*(big-marge[0]-marge[1])*rapportyx+marge[2]+marge[3] 193 202 endif 194 203 endelse 195 204 endelse 196 xoff=1.*( petit-ys)/2.+petitdessin[1]197 yoff=1.*( grand-xs)/2.+xs+grandfeuille-petitdessin[2]198 a=1.*( grandfeuille-yoff)/grandfeuille199 b=1.*xoff/ petitfeuille200 c=a+1.*xs/ grandfeuille201 d=b+1.*ys/ petitfeuille205 xoff=1.*(small-ys)/2.+smalldraw[1] 206 yoff=1.*(big-xs)/2.+xs+mapgsz-smalldraw[2] 207 a=1.*(mapgsz-yoff)/mapgsz 208 b=1.*xoff/mipgsz 209 c=a+1.*xs/mapgsz 210 d=b+1.*ys/mipgsz 202 211 endif $ 203 212 ;------------------------------------------------------------ … … 206 215 else begin 207 216 if keyword_set(rempli) then begin 208 xs= petit209 ys= grand217 xs=small 218 ys=big 210 219 endif else begin 211 220 if rapportyx le rapportmax then begin 212 xs= petit213 ys=1.*( petit-marge[0]-marge[1])*rapportyx+marge[2]+marge[3]214 if ys gt grandthen begin215 xs=1.*( grand-marge[2]-marge[3])/rapportyx+marge[0]+marge[1]216 ys= grand221 xs=small 222 ys=1.*(small-marge[0]-marge[1])*rapportyx+marge[2]+marge[3] 223 if ys gt big then begin 224 xs=1.*(big-marge[2]-marge[3])/rapportyx+marge[0]+marge[1] 225 ys=big 217 226 endif 218 227 endif else begin 219 xs=1.*( grand-marge[2]-marge[3])/rapportyx+marge[0]+marge[1]220 ys= grand221 if xs gt petitthen begin222 xs= petit223 ys=1.*( petit-marge[0]-marge[1])*rapportyx+marge[2]+marge[3]228 xs=1.*(big-marge[2]-marge[3])/rapportyx+marge[0]+marge[1] 229 ys=big 230 if xs gt small then begin 231 xs=small 232 ys=1.*(small-marge[0]-marge[1])*rapportyx+marge[2]+marge[3] 224 233 endif 225 234 endelse 226 235 endelse 227 xoff=1.*( petit-xs)/2.+petitdessin[0]228 yoff=1.*( grand-ys)/2.+petitdessin[1]229 a=1.*xoff/ petitfeuille230 b=1.*yoff/ grandfeuille231 c=a+1.*xs/ petitfeuille232 d=b+1.*ys/ grandfeuille236 xoff=1.*(small-xs)/2.+smalldraw[0] 237 yoff=1.*(big-ys)/2.+smalldraw[1] 238 a=1.*xoff/mipgsz 239 b=1.*yoff/mapgsz 240 c=a+1.*xs/mipgsz 241 d=b+1.*ys/mapgsz 233 242 xset = xoff 234 243 yset = yoff 235 244 endelse 236 245 ;------------------------------------------------------------ 237 bas= grandfeuille*(1-key_portrait)+petitfeuille*key_portrait238 cote= petitfeuille*(1-key_portrait)+grandfeuille*key_portrait246 bas=mapgsz*(1-key_portrait)+mipgsz*key_portrait 247 cote=mipgsz*(1-key_portrait)+mapgsz*key_portrait 239 248 posfenetre=[a,b,c,d]+[ marge[0]/bas, marge[2]/cote $ 240 249 ,-marge[1]/bas,-marge[3]/cote ] … … 243 252 ;------------------------------------------------------------ 244 253 if keyword_set(key_performance) THEN print, 'temps calibre', systime(1)-tempsun 254 255 IF NOT keyword_set(key_forgetold) THEN BEGIN 256 @updateold 257 ENDIF 258 245 259 return 246 260 end -
trunk/ToBeReviewed/POSTSCRIPT/ps.pro
r14 r16 46 46 ;------------------------------------------------------------ 47 47 ; on recupere le journal sous la forme d''un vecteur de string: 48 vectjournal = getfile( homedir+'idlsave.pro')48 vectjournal = getfile(myuniquetmpdir+'idlsave.pro') 49 49 ;FOR i = 0,n_elements(vectjournal)-1 DO print, vectjournal[i] 50 50 ;------------------------------------------------------------ 51 51 ; on coupe la derniere ligne qui est @ps 52 52 ;------------------------------------------------------------ 53 vectjournal = vectjournal[0:n_elements(vectjournal)-2 ] 53 IF strpos(vectjournal[n_elements(vectjournal)-1],'@ps') ne -1 then $ 54 vectjournal = vectjournal[0:n_elements(vectjournal)-2 ] 54 55 ;------------------------------------------------------------ 55 56 ; on le corrige si besoin est... … … 92 93 93 94 ; on le complete pour le transformer en une procedure equivalente a plein2dessin 94 vectjournal = ['reinitplt, /z,/invert' $95 ,'openps, infowidget= infowidget' $95 ; vectjournal = ['reinitplt, /z,/invert' $ 96 vectjournal = ['openps, infowidget= infowidget' $ 96 97 , vectjournal $ 97 98 ,'closeps, infowidget= infowidget' $ 98 ,' imprime' ]99 ,'printps' ] 99 100 ;FOR i = 0,n_elements(vectjournal)-1 DO print, vectjournal[i] 100 101 ; on reecrit idlsave.pro 101 putfile, homedir+'idlsave.pro', vectjournal102 putfile, myuniquetmpdir+'idlsave.pro', vectjournal 102 103 ; applique idlsave 103 cd, homedir 104 cd, current = curdir 105 cd, myuniquetmpdir 104 106 @idlsave 107 cd, curdir 105 108 ; on reouvre le journal et on y met les elements de 106 109 ; vectjournal sauf les 2 premieres lignes et les 3 dernieres lignes 107 journal 110 journal, myuniquetmpdir+'idlsave.pro' 108 111 for i = 2, n_elements(vectjournal)-3 DO $ 109 112 printf, !journal, vectjournal[i]
Note: See TracChangeset
for help on using the changeset viewer.