IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ticket #382: utils.c

File utils.c, 1.6 KB (added by eugene, 21 years ago)

psImage and psVector utilities

Line 
1psF64 p_psImageGetElementF64(psImage* image,
2 int col,
3 int row)
4{
5 if (image == NULL) {
6 return NAN;
7 }
8 if (col < 0 || col >= image->numCols) {
9 return NAN;
10 }
11 if (row < 0 || row >= image->numRows) {
12 return NAN;
13 }
14
15 switch (image->type.type) {
16 case PS_TYPE_U8:
17 return image->data.U8[row][col];
18 break;
19 case PS_TYPE_U16:
20 return image->data.U16[row][col];
21 break;
22 case PS_TYPE_U32:
23 return image->data.U32[row][col];
24 break;
25 case PS_TYPE_U64:
26 return image->data.U64[row][col];
27 break;
28 case PS_TYPE_S8:
29 return image->data.S8[row][col];
30 break;
31 case PS_TYPE_S16:
32 return image->data.S16[row][col];
33 break;
34 case PS_TYPE_S32:
35 return image->data.S32[row][col];
36 break;
37 case PS_TYPE_S64:
38 return image->data.S64[row][col];
39 break;
40 case PS_TYPE_F32:
41 return image->data.F32[row][col];
42 break;
43 case PS_TYPE_F64:
44 return image->data.F64[row][col];
45 default:
46 return NAN;
47 }
48}
49
50bool p_psImagePrint (FILE *f, psImage *a, char *name) {
51
52 fprintf (f, "matrix: %s\n", name);
53
54 for (int j = 0; j < a[0].numRows; j++) {
55 for (int i = 0; i < a[0].numCols; i++) {
56 fprintf (f, "%f ", p_psImageGetElementF64(a, i, j));
57 }
58 fprintf (f, "\n");
59 }
60 fprintf (f, "\n");
61 return (true);
62}
63
64bool p_psVectorPrint (FILE *f, psVector *a, char *name) {
65
66 fprintf (f, "vector: %s\n", name);
67
68 for (int i = 0; i < a[0].n; i++) {
69 fprintf (f, "%f\n", p_psVectorGetElementF64(a, i));
70 }
71 fprintf (f, "\n");
72 return (true);
73}