diff options
author | Karl Berry <karl@freefriends.org> | 2011-06-19 12:55:47 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-06-19 12:55:47 +0000 |
commit | e3c76dde873b406caea8362741da0537cea3ac9d (patch) | |
tree | 7fd2f7e1f928a36d640b2720562eded540bf0857 /Master/texmf/asymptote/palette.asy | |
parent | 1e36e2153080d89f519641dbfc1351b35176a7ea (diff) |
asymptote 2.12
git-svn-id: svn://tug.org/texlive/trunk@23055 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf/asymptote/palette.asy')
-rw-r--r-- | Master/texmf/asymptote/palette.asy | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/Master/texmf/asymptote/palette.asy b/Master/texmf/asymptote/palette.asy index 88f8ae2c42f..9a2d1845604 100644 --- a/Master/texmf/asymptote/palette.asy +++ b/Master/texmf/asymptote/palette.asy @@ -1,5 +1,7 @@ private import graph; +private transform swap=(0,0,0,1,1,0); + typedef bounds range(picture pic, real min, real max); range Range(bool automin=false, real min=-infinity, @@ -26,16 +28,18 @@ void image(frame f, real[][] data, pair initial, pair final, pen[] palette, bool transpose=(initial.x < final.x && initial.y < final.y), transform t=identity(), bool copy=true, bool antialias=false) { - _image(f,transpose ? transpose(data) : copy ? copy(data) : data, - initial,final,palette,t,copy=false,antialias=antialias); + transform T=transpose ? swap : identity(); + _image(f,copy ? copy(data) : data,T*initial,T*final,palette,t*T,copy=false, + antialias=antialias); } void image(frame f, pen[][] data, pair initial, pair final, bool transpose=(initial.x < final.x && initial.y < final.y), transform t=identity(), bool copy=true, bool antialias=false) { - _image(f,transpose ? transpose(data) : copy ? copy(data) : data, - initial,final,t,copy=false,antialias=antialias); + transform T=transpose ? swap : identity(); + _image(f,copy ? copy(data) : data,T*initial,T*final,t*T,copy=false, + antialias=antialias); } // Reduce color palette to approximate range of data relative to "display" @@ -69,8 +73,7 @@ bounds image(picture pic=currentpicture, real[][] f, range range=Full, bool transpose=(initial.x < final.x && initial.y < final.y), bool copy=true, bool antialias=false) { - if(transpose) f=transpose(f); - else if(copy) f=copy(f); + if(copy) f=copy(f); if(copy) palette=copy(palette); real m=min(f); @@ -93,14 +96,15 @@ bounds image(picture pic=currentpicture, real[][] f, range range=Full, initial=Scale(pic,initial); final=Scale(pic,final); + transform T=transpose ? swap : identity(); pic.add(new void(frame F, transform t) { - _image(F,f,initial,final,palette,t,copy=false,antialias=antialias); + _image(F,f,T*initial,T*final,palette,t*T,copy=false,antialias=antialias); },true); pic.addBox(initial,final); return bounds; // Return bounds used for color space } -bounds image(picture pic=currentpicture, real f(real,real), +bounds image(picture pic=currentpicture, real f(real, real), range range=Full, pair initial, pair final, int nx=ngraph, int ny=nx, pen[] palette, bool antialias=false) { @@ -126,26 +130,29 @@ void image(picture pic=currentpicture, pen[][] data, pair initial, pair final, bool transpose=(initial.x < final.x && initial.y < final.y), bool copy=true, bool antialias=false) { - if(transpose) data=transpose(data); - else if(copy) data=copy(data); + if(copy) data=copy(data); initial=Scale(pic,initial); final=Scale(pic,final); + transform T=transpose ? swap : identity(); pic.add(new void(frame F, transform t) { - _image(F,data,initial,final,t,copy=false,antialias=antialias); + _image(F,data,T*initial,T*final,t*T,copy=false,antialias=antialias); },true); pic.addBox(initial,final); } void image(picture pic=currentpicture, pen f(int, int), int width, int height, - pair initial, pair final, bool antialias=false) + pair initial, pair final, + bool transpose=(initial.x < final.x && initial.y < final.y), + bool antialias=false) { initial=Scale(pic,initial); final=Scale(pic,final); + transform T=transpose ? swap : identity(); pic.add(new void(frame F, transform t) { - _image(F,f,width,height,initial,final,t,antialias=antialias); + _image(F,f,width,height,T*initial,T*final,t*T,antialias=antialias); },true); pic.addBox(initial,final); } @@ -285,10 +292,11 @@ void palette(picture pic=currentpicture, Label L="", bounds bounds, L.transform(rotate(90)); } real[][] pdata={sequence(palette.length)}; - if(vertical) pdata=transpose(pdata); + transform T=vertical ? swap : identity(); pic.add(new void(frame f, transform t) { - _image(f,pdata,initial,final,palette,t,copy=false,antialias=antialias); + _image(f,pdata,T*initial,T*final,palette,t*T,copy=false, + antialias=antialias); },true); ticklocate locate=ticklocate(initialz,finalz,pic.scale.z,mz.min,mz.max); |