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

SCM Repository

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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

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

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