source: sans/utils/Teabag/sa_img.c @ 838

Last change on this file since 838 was 837, checked in by ajj, 11 years ago

Checkin of Teabag code for TISANE.

File size: 1.7 KB
Line 
1#include <stdio.h>
2#include <math.h>
3#include "lut.h"
4
5int
6writeppm(char * outfile, unsigned char **input, 
7     int height, int width, int grey, int size) {
8  FILE *fp;
9  unsigned char r, g, b;
10  int x, y, z, s, t;
11
12  if ((fp = fopen(outfile,"w")) == NULL) return -1;
13
14  /* Write header */
15  fprintf(fp,"P6\n");
16  fprintf(fp,"%d %d\n",width*size,height*size);
17  fprintf(fp,"%d\n",255);
18
19  /* Write pixels */
20  for(y=0;y<height;y++){
21    for (s=0;s<size;s++){
22      for(x=0;x<width;x++){
23        z = (int) input[y][x];
24        if (grey) {
25          r = input[y][x]; g = r; b = r;
26        } else {
27          r = red[z]; g = green[z]; b = blue[z];
28        }
29        for (t=0;t<size;t++){
30          fwrite(&r,1,1,fp);
31          fwrite(&g,1,1,fp);
32          fwrite(&b,1,1,fp);
33        }
34      }
35    }
36  }
37
38  fclose(fp);
39  return 0;
40}
41
42int
43buildcmap(int **input, int y, int x) {
44  int i, j;
45  //int val;
46  for(j=0;j<y;j++) {
47    for(i=0;i<x;i++) input[j][i] = 0;
48  }
49
50  for(j=0;j<y;j++) {
51    for(i=0;i<x;i++) input[j][i] = (y - j);
52  }
53  return 0;
54}
55
56/* Perform gamma correction on bitmap */
57int 
58reverse_img(unsigned char **input, int y, int x, int maxval) {
59  int i, j;
60  //int val;
61 
62  for(j=0;j<y;j++) {
63    for(i=0;i<x;i++) {
64      input[i][j] = (unsigned char) maxval - input[i][j];
65    }
66  }
67  return 0;
68}
69
70/* Perform gamma correction on bitmap */
71int 
72gamma_cor(unsigned char **input, int y, int x, int maxval, float gamma) {
73  int i, j;
74  float val;
75 
76  for(j=0;j<y;j++) {
77    for(i=0;i<x;i++) {
78      val = ((float) input[i][j])/ ((float) maxval);
79      val = pow(val,( 1 / gamma));
80      val *= (float) maxval;
81      input[i][j] = (unsigned char) ((int) val);
82    }
83  }
84  return 0;
85}
86
Note: See TracBrowser for help on using the repository browser.