File: eimagexy.m

package info (click to toggle)
octave-epstk 1.6-2
  • links: PTS
  • area: main
  • in suites: potato
  • size: 6,540 kB
  • ctags: 57
  • sloc: makefile: 34
file content (51 lines) | stat: -rw-r--r-- 1,869 bytes parent folder | download | duplicates (2)
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
%eimagexy(epsFile,image,colorMap,x,y,width,height)
% this function write postscript commands in  epsFile to create an image
% written by Stefan Mueller stefan.mueller@fgan.de 1997

function eimagexy(epsFile,image,colorMap,x,y,width,height)
  if (nargin~=7)
    usage('eimagexy(epsFile,image,colorMap,x,y,width,height)');
  end

  [rows cols]=size(image);

  fprintf(epsFile,'/readstring {\n');
  fprintf(epsFile,'currentfile exch readhexstring pop\n');
  fprintf(epsFile,'} bind def\n');
  fprintf(epsFile,'/rpicstr %d string def\n',cols);
  fprintf(epsFile,'/gpicstr %d string def\n',cols);
  fprintf(epsFile,'/bpicstr %d string def\n',cols);
  fprintf(epsFile,'%%%%EndProlog\n');
  fprintf(epsFile,'gsave\n');
  fprintf(epsFile,'%1.2f %1.2f translate\n',x,y);
  fprintf(epsFile,'%1.2f %1.2f scale\n',width,height);
  fprintf(epsFile,'%d %d 8\n',cols,rows);
  fprintf(epsFile,'[ %d 0 0 -%d 0 %d ]\n',cols,rows,rows);
  fprintf(epsFile,'{ rpicstr readstring }\n');
  fprintf(epsFile,'{ gpicstr readstring }\n');
  fprintf(epsFile,'{ bpicstr readstring }\n');
  fprintf(epsFile,'true 3 colorimage\n');
  
  colorMap=fix(colorMap*255);
  for row=1:rows
    colorPart=colorMap(image(row,:),1);
    hexHigh=fix(colorPart/16);
    hexLow=colorPart-hexHigh*16;
    hexAll=[hexHigh';hexLow'];
    hexAll=reshape(hexAll,1,2*cols);
    redRow=sprintf('%x',hexAll);
    colorPart=colorMap(image(row,:),2);
    hexHigh=fix(colorPart/16);
    hexLow=colorPart-hexHigh*16;
    hexAll=[hexHigh';hexLow'];
    hexAll=reshape(hexAll,1,2*cols);
    greenRow=sprintf('%x',hexAll);
    colorPart=colorMap(image(row,:),3);
    hexHigh=fix(colorPart/16);
    hexLow=colorPart-hexHigh*16;
    hexAll=[hexHigh';hexLow'];
    hexAll=reshape(hexAll,1,2*cols);
    blueRow=sprintf('%x',hexAll);
    fprintf(epsFile,'%s\n%s\n%s\n',redRow,greenRow,blueRow);
  end
  fprintf(epsFile,'grestore\n');