Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Annotation of /branches/vis12-cl/src/include/Diderot/cl-inline-image.h
ViewVC logotype

Annotation of /branches/vis12-cl/src/include/Diderot/cl-inline-image.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3118 - (view) (download) (as text)

1 : jhr 1671 /*! \file cl-inline-image.h
2 :     *
3 :     * \author Lamont Samuels
4 :     */
5 :    
6 :     /*
7 :     * COPYRIGHT (c) 2011 The Diderot Project (http://diderot-language.cs.uchicago.edu)
8 :     * All rights reserved.
9 :     */
10 :    
11 :     #ifndef _DIDEROT_CL_INLINE_IMAGE_H_
12 :     #define _DIDEROT_CL_INLINE_IMAGE_H_
13 :    
14 :     #ifndef _DIDEROT_CL_TYPES_H_
15 :     # include "cl-types.h"
16 :     #endif
17 :     #ifndef _DIDEROT_CL_INLINE_MATRIX_H_
18 :     # include "cl-inline-matrix.h"
19 :     #endif
20 :    
21 :    
22 :     /***** 1D Image functions *****/
23 :    
24 :     // check if pos is inside the img, assuming that we have a border of width s.
25 :     //
26 : jhr 3118 inline bool Inside1 (Diderot_real_t pos, __global Diderot_image1D_t *img, int s)
27 : jhr 1671 {
28 :     return ((s-1 < pos) && (pos < (img->size[0] - s)));
29 :     }
30 :    
31 : jhr 3118 inline Diderot_real_t ToImageSpace1 ( __global Diderot_image1D_t *img, Diderot_real_t pos)
32 : jhr 1671 {
33 :     return img->s * pos + img->t;
34 :     }
35 :    
36 :     /***** 2D Image functions *****/
37 :    
38 :     // check if pos is inside the img, assuming that we have a border of width s.
39 :     //
40 : jhr 3118 inline bool Inside2 (Diderot_vec2_t posArg, __global Diderot_image2D_t *img, int s)
41 : jhr 1671 {
42 :     return ((s-1 < posArg.s0) && (posArg.s0 < (img->size[0] - s))
43 :     && (s-1 < posArg.s1) && (posArg.s1 < (img->size[1] - s)));
44 :     }
45 :    
46 : jhr 3118 inline Diderot_vec2_t ToImageSpace2 (__global Diderot_image2D_t *img, Diderot_vec2_t p)
47 : jhr 1671 {
48 : jhr 3118 return (Diderot_vec2_t)(dot(img->w2i[0], p), dot(img->w2i[1], p)) + img->tVec;
49 : jhr 1671 }
50 :    
51 : jhr 3118 inline Diderot_vec2_t ToWorldSpace2 (__global Diderot_image2D_t *img, Diderot_vec2_t g)
52 : jhr 1671 {
53 : jhr 3118 return (Diderot_vec2_t)(
54 : jhr 1671 dot(img->w2iT[0], g),
55 :     dot(img->w2iT[1], g));
56 :     }
57 :    
58 : jhr 3118 inline void ToWorldSpace2x2 ( Diderot_Mat2x2_t dst, __global Diderot_image2D_t *img, Diderot_Mat2x2_t src)
59 : jhr 1671 {
60 :     /* Diderot_Mat2x2_t tmp;
61 :     mulMat2x2Mat2x2f (tmp, img->w2iT, src);
62 :     mulMat2x2Mat2x2f (dst, tmp, img->w2i); */
63 :    
64 :     Diderot_Mat2x2_t tmp;
65 :    
66 : jhr 3118 tmp[0] = (Diderot_vec2_t)(
67 :     dot(img->w2iT[0], (Diderot_vec2_t)(src[0].s0, src[1].s0)),
68 :     dot(img->w2iT[0], (Diderot_vec2_t)(src[0].s1, src[1].s1)));
69 :     tmp[1] = (Diderot_vec2_t)(
70 :     dot(img->w2iT[1], (Diderot_vec2_t)(src[0].s0, src[1].s0)),
71 :     dot(img->w2iT[1], (Diderot_vec2_t)(src[0].s1, src[1].s1)));
72 : jhr 1671
73 : jhr 3118 dst[0] = (Diderot_vec2_t)(
74 :     dot(tmp[0], (Diderot_vec2_t)(img->w2i[0].s0, img->w2i[1].s0)),
75 :     dot(tmp[0], (Diderot_vec2_t)(img->w2i[0].s1, img->w2i[1].s1)));
76 :     dst[1] = (Diderot_vec2_t)(
77 :     dot(tmp[1], (Diderot_vec2_t)(img->w2i[0].s0, img->w2i[1].s0)),
78 :     dot(tmp[1], (Diderot_vec2_t)(img->w2i[0].s1, img->w2i[1].s1)));
79 : jhr 1671
80 :     }
81 :    
82 :     /***** 3D Image functions *****/
83 :    
84 :     // check if pos is inside the img, assuming that we have a border of width s.
85 :     //
86 : jhr 3118 inline bool Inside3f (Diderot_vec3_t posArg, __global Diderot_image3D_t *img, int s)
87 : jhr 1671 {
88 :     return ((s-1 < posArg.s0) && (posArg.s0 < (img->size[0] - s))
89 :     && (s-1 < posArg.s1) && (posArg.s1 < (img->size[1] - s))
90 :     && (s-1 < posArg.s2) && (posArg.s2 < (img->size[2] - s)));
91 :     }
92 :    
93 : jhr 3118 inline Diderot_vec3_t ToImageSpace3f (__global Diderot_image3D_t *img, Diderot_vec3_t p)
94 : jhr 1671 {
95 :     return VEC3(dot(img->w2i[0], p), dot(img->w2i[1], p), dot(img->w2i[2], p)) + img->tVec;
96 :     }
97 :    
98 : jhr 3118 inline Diderot_vec3_t ToWorldSpace3f (__global Diderot_image3D_t *img, Diderot_vec3_t g)
99 : jhr 1671 {
100 :     return VEC3(
101 :     dot(img->w2iT[0], g),
102 :     dot(img->w2iT[1], g),
103 :     dot(img->w2iT[2], g));
104 :     }
105 :    
106 :     inline void ToWorldSpace3x3f ( Diderot_Mat3x3_t dst, __global Diderot_image3D_t *img, Diderot_Mat3x3_t src)
107 :     {
108 :     Diderot_Mat3x3_t tmp;
109 :    
110 :     tmp[0] = VEC3(
111 :     dot(img->w2iT[0], VEC3(src[0].s0, src[1].s0, src[2].s0)),
112 :     dot(img->w2iT[0], VEC3(src[0].s1, src[1].s1, src[2].s1)),
113 :     dot(img->w2iT[0], VEC3(src[0].s2, src[1].s2, src[2].s2)));
114 :     tmp[1] = VEC3(
115 :     dot(img->w2iT[1], VEC3(src[0].s0, src[1].s0, src[2].s0)),
116 :     dot(img->w2iT[1], VEC3(src[0].s1, src[1].s1, src[2].s1)),
117 :     dot(img->w2iT[1], VEC3(src[0].s2, src[1].s2, src[2].s2)));
118 :     tmp[2] = VEC3(
119 :     dot(img->w2iT[2], VEC3(src[0].s0, src[1].s0, src[2].s0)),
120 :     dot(img->w2iT[2], VEC3(src[0].s1, src[1].s1, src[2].s1)),
121 :     dot(img->w2iT[2], VEC3(src[0].s2, src[1].s2, src[2].s2)));
122 :    
123 :     dst[0] = VEC3(
124 :     dot(tmp[0], VEC3(img->w2i[0].s0, img->w2i[1].s0, img->w2i[2].s0)),
125 :     dot(tmp[0], VEC3(img->w2i[0].s1, img->w2i[1].s1, img->w2i[2].s1)),
126 :     dot(tmp[0], VEC3(img->w2i[0].s2, img->w2i[1].s2, img->w2i[2].s2)));
127 :     dst[1] = VEC3(
128 :     dot(tmp[1], VEC3(img->w2i[0].s0, img->w2i[1].s0, img->w2i[2].s0)),
129 :     dot(tmp[1], VEC3(img->w2i[0].s1, img->w2i[1].s1, img->w2i[2].s1)),
130 :     dot(tmp[1], VEC3(img->w2i[0].s2, img->w2i[1].s2, img->w2i[2].s2)));
131 :     dst[2] = VEC3(
132 :     dot(tmp[2], VEC3(img->w2i[0].s0, img->w2i[1].s0, img->w2i[2].s0)),
133 :     dot(tmp[2], VEC3(img->w2i[0].s1, img->w2i[1].s1, img->w2i[2].s1)),
134 :     dot(tmp[2], VEC3(img->w2i[0].s2, img->w2i[1].s2, img->w2i[2].s2)));
135 :    
136 :     }
137 :    
138 :     #endif /* !_DIDEROT_CL_INLINE_IMAGE_H_ */
139 : jhr 3118

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0