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 1289 - (view) (download) (as text)

1 : lamonts 1289 /*! \file cl-types.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 :    
15 :     #ifndef _DIDEROT_TYPES_H_
16 :     # include "cl-types.h"
17 :     #endif
18 :     #ifndef _DIDEROT_INLINE_MATRIX_H_
19 :     # include "cl-inline-matrix.h"
20 :     #endif
21 :    
22 :    
23 :     /***** 1D Image functions *****/
24 :    
25 :     // check if pos is inside the img, assuming that we have a border of width s.
26 :     //
27 :     STATIC_INLINE bool Inside1f (float pos, Diderot_image1D_t *img, int s)
28 :     {
29 :     return ((s-1 < pos) && (pos < (img->size[0] - s)));
30 :     }
31 :    
32 :     STATIC_INLINE float ToImageSpace1f (Diderot_image1D_t *img, float pos)
33 :     {
34 :     return img->s * pos + img->t;
35 :     }
36 :    
37 :     /***** 2D Image functions *****/
38 :    
39 :     // check if pos is inside the img, assuming that we have a border of width s.
40 :     //
41 :     STATIC_INLINE bool Inside2f (float2 posArg, Diderot_image2D_t *img, int s)
42 :     {
43 :     return ((s-1 < posArg.s0) && (posArg.s0 < (img->size[0] - s))
44 :     && (s-1 < posArg.s1) && (posArg.s1 < (img->size[1] - s)));
45 :     }
46 :    
47 :     STATIC_INLINE float2 ToImageSpace2f (Diderot_image2D_t *img, float2 p)
48 :     {
49 :     return (float2)(dot(img->w2i[0], p), dot2f(img->w2i[1], p)) + img->tVec;
50 :     }
51 :    
52 :     STATIC_INLINE float2 ToWorldSpace2f (Diderot_image2D_t *img, float2 g)
53 :     {
54 :     return (float2)(
55 :     dot(img->w2iT[0], g),
56 :     dot(img->w2iT[1], g));
57 :     }
58 :    
59 :     STATIC_INLINE void ToWorldSpace2x2f (Diderot_Mat2x2_t dst, Diderot_image2D_t *img, Diderot_Mat2x2_t src)
60 :     {
61 :     Diderot_Mat2x2_t tmp;
62 :     mulMat2x2Mat2x2f (tmp, img->w2iT, src);
63 :     mulMat2x2Mat2x2f (dst, tmp, img->w2i);
64 :     }
65 :     /***** 3D Image functions *****/
66 :    
67 :     // check if pos is inside the img, assuming that we have a border of width s.
68 :     //
69 :     STATIC_INLINE bool Inside3f (float3 posArg, Diderot_image3D_t *img, int s)
70 :     {
71 :     return ((s-1 < posArg.s0) && (posArg.s0 < (img->size[0] - s))
72 :     && (s-1 < posArg.s1) && (posArg.s1 < (img->size[1] - s))
73 :     && (s-1 < posArg.s2) && (posArg.s2 < (img->size[2] - s)));
74 :     }
75 :    
76 :     STATIC_INLINE float3 ToImageSpace3f (Diderot_image3D_t *img, float3 p)
77 :     {
78 :     return (float3)(dot(img->w2i[0], p), dot(img->w2i[1], p), dot(img->w2i[2], p)) + img->tVec;
79 :     }
80 :    
81 :     STATIC_INLINE float3 ToWorldSpace3f (Diderot_image3D_t *img, float3 g)
82 :     {
83 :     return (float3)(
84 :     dot(img->w2iT[0], g),
85 :     dot(img->w2iT[1], g),
86 :     dot(img->w2iT[2], g));
87 :     }
88 :    
89 :     STATIC_INLINE void ToWorldSpace3x3f (Diderot_Mat3x3_t dst, Diderot_image3D_t *img, Diderot_Mat3x3_t src)
90 :     {
91 :     Diderot_Mat3x3_t tmp;
92 :     mulMat3x3Mat3x3f (tmp, img->w2iT, src);
93 :     mulMat3x3Mat3x3f (dst, tmp, img->w2i);
94 :     }
95 :    
96 :    
97 :    
98 :     #endif /* !_DIDEROT_CL_INLINE_IMAGE_H_ */
99 :    

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