/usr/share/octave/site/m/octave-epstk/ejpglist.m is in octave-epstk 2.4-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | %%NAME
%% ejpglist - generate photoprints of a JPEG-filelist
%%
%%SYNOPSIS
%% ejpglist([listFileName[,maxPhotoSize[,fitPhoto[,outputFileName]]]])
%%
%%PARAMETER(S)
%% listFileName textfile of JPEG-filenames
%% one name per line
%% default=current directory
%% maxPhotoSize vector [width heigth] of photos
%% default=[90 120] (90mmx120mm)
%% fitPhoto switch, 0=off 1=fit photos to maxPhotoSize,default=0
%% outputFileName Praefix of eps-outputfile
%% default='photos' ->photos01.jpg,photos02.jpg, ...
%%
% written by stefan.mueller@fhr.fraunhofer.de (C) 2010
function ejpglist(listFileName,maxPhotoSize,fitPhoto,outputFileName)
if nargin>4
eusage('ejpglist(listFileName[,maxPhotoSize[,fitPhoto[,outputFileName]]])');
end
if nargin<4
outputFileName='jpglist';
end
if nargin<3
fitPhoto=0;
end
if nargin<2
maxPhotoSize=[90 120];
end
if nargin<1
listFileName='.';
end
eglobpar;
einit;
textDis=2;
textSize=4;
rows1=fix(eWinHeight/maxPhotoSize(1));
cols1=fix(eWinWidth/maxPhotoSize(2));
rows2=fix(eWinHeight/maxPhotoSize(2));
cols2=fix(eWinWidth/maxPhotoSize(1));
if rows1*cols1>rows2*cols2
rows=rows1;
cols=cols1;
imgH=maxPhotoSize(1);
imgW=maxPhotoSize(2);
else
rows=rows2;
cols=cols2;
imgH=maxPhotoSize(2);
imgW=maxPhotoSize(1);
end
imgFac=imgH/imgW;
nPerPage=rows*cols;
offsetX=(eWinWidth-cols*imgW)/2;
offsetY=(eWinHeight-rows*imgH);
[tabX tabY]=etabdef(rows,cols,offsetX,offsetY,cols*imgW,rows*imgH);
ttabH=(ePageHeight-eWinHeight)/2+offsetY;
if ttabH/cols>5
ttabH=5*cols;
end
[ttabX ttabY]=etabdef(rows,cols,offsetX,offsetY-ttabH,cols*imgW,ttabH);
% list of images
list=etxtread(listFileName);
[lpos n]=etxtlpos(list);
lpos=flipud(lpos);
nPages=ceil(n/nPerPage);
outtext=sprintf('Writing %d eps-file(s) with %d images ...',...
nPages,n);
disp(outtext);
page=0;
while n>0
page=page+1;
cRows=ceil(n/cols);
if cRows<rows
rows=cRows;
offsetX=(eWinWidth-cols*imgW)/2;
offsetY=(eWinHeight-rows*imgH);
[tabX tabY]=etabdef(rows,cols,offsetX,offsetY,cols*imgW,rows*imgH);
ttabH=(ePageHeight-eWinHeight)/2+offsetY;
if ttabH/cRows>5
ttabH=5*cRows;
end
[ttabX ttabY]=etabdef(rows,cols,offsetX,offsetY-ttabH,cols*imgW,ttabH);
end
if nPages>1
epsFileName=sprintf('%s%d%d.eps',outputFileName,...
floor(page/10),rem(page,10));
else
epsFileName=sprintf('%s.eps',outputFileName);
end
eopen(epsFileName);
eglobpar;
for i=1:rows
for j=1:cols
if n>0
% outputfile
imgFileName=list(lpos(n,1):lpos(n,2));
[image head]=ejpgread(imgFileName);
jpgH=head(2);jpgW=head(3);
outtext=sprintf('%s with %dx%d Pixel loaded',...
imgFileName,jpgH,jpgW);
disp(outtext);
% rotation
if abs(jpgH/jpgW-imgFac)>abs(jpgW/jpgH-imgFac)
rotationAngle=90;
imgR=jpgW/jpgH;
else
rotationAngle=0;
imgR=jpgH/jpgW;
end
if fitPhoto
photoW=imgW;
photoH=imgH;
else
if imgH/imgW<imgR
photoH=imgH;
photoW=imgH/imgR;
else
photoW=imgW;
photoH=imgW*imgR;
end
end
if rotationAngle>0
x=tabX(j,1)+photoW;
eframe(x,tabY(i,1),photoH,photoW,0,image,head,rotationAngle);
else
x=tabX(j,1);
eframe(x,tabY(i,1),photoW,photoH,0,image,head);
end
slPos=findstr(imgFileName,'/');
slPosL=length(slPos);
if slPosL>0
iFileName=imgFileName(slPos(slPosL)+1:length(imgFileName));
else
iFileName=imgFileName;
end
etabtext(ttabX,ttabY,i,j,iFileName,0);
n=n-1;
end
end
end
eclose
end
|