File: flines.c

package info (click to toggle)
libimager-perl 0.75-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 4,532 kB
  • ctags: 3,278
  • sloc: ansic: 24,109; perl: 21,732; makefile: 13
file content (72 lines) | stat: -rw-r--r-- 1,378 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "pluginst.h"


char evalstr[]="Fancy lines";

/* input parameters
   image is the image object.
*/



unsigned char
static
saturate(int in) {
  if (in>255) { return 255; }
  else if (in>0) return in;
  return 0;
}



void
flines(void *INP) {
  i_img *im;
  i_color vl;
  int x,y;
  
  if ( !getOBJ("image","Imager::ImgRaw",&im) ) {
		fprintf(stderr,"Error: image is missing\n"); 
		return;
	}
  
  fprintf(stderr, "flines: parameters: (im %p)\n",im);
  fprintf(stderr, "flines: image info:\n size (%d,%d)\n channels (%d)\n",
	  im->xsize,im->ysize,im->channels);

  for(y = 0; y < im->ysize; y ++) {
    for(x = 0; x < im->xsize; x ++ ) {
      i_gpix(im,x,y,&vl); 
			if (!(y%2)) {
				float yf = y/(float)im->ysize;
				float mf = 1.2-0.8*yf;
				vl.rgb.r = saturate(vl.rgb.r*mf);
				vl.rgb.g = saturate(vl.rgb.g*mf);
				vl.rgb.b = saturate(vl.rgb.b*mf);
			} else {
				float yf = (im->ysize-y)/(float)im->ysize;
				float mf = 1.2-0.8*yf;
				vl.rgb.r = saturate(vl.rgb.r*mf);
				vl.rgb.g = saturate(vl.rgb.g*mf);
				vl.rgb.b = saturate(vl.rgb.b*mf);
			} 
     i_ppix(im,x,y,&vl); 
    }
  }
}



func_ptr function_list[]={
  {
    "flines",
    flines,
    "callseq => ['image'], \
    callsub => sub { my %hsh=@_; DSO_call($DSO_handle,0,\\%hsh); } \
    "
  },
  {NULL,NULL,NULL}};


/* Remember to double backslash backslashes within Double quotes in C */