1 #ifndef LAYER_INFO_RSH 2 #define LAYER_INFO_RSH 3 4 // An object that contains the front and back depths values of a layer 5 typedef struct LayerInfo { 6 // Front and back depth values of this layer. 7 // front_depth >= back_depth. 8 int front_depth; 9 int back_depth; 10 } LayerInfo_t; 11 12 // An object that contains parameters used for computing matte for the current 13 // layer. 14 typedef struct BlendInfo { 15 // The max kernel radius of a layer. 16 int dilation_radius; 17 18 // A scale factor =1.0f/(1+dilation_radius), which is used to normalize a 19 // distance transform result to be a matte value within [0,1]. 20 // This data member is only used for PixelFormatF32. 21 float matte_normalizer; 22 } BlendInfo_t; 23 24 static inline int ValidDepth(int depth) { return (depth != 0); } 25 26 static inline int NotInFrontOfTheLayer(int depth, 27 const int2 layer_info_f2) { 28 return (depth <= layer_info_f2.s0); 29 } 30 31 static inline int OnTheLayer(int depth, const int2 layer_info_i2) { 32 //return (layer_info->back_depth <= depth && depth <= layer_info->front_depth); 33 return (layer_info_i2.s1 <= depth && depth <= layer_info_i2.s0); 34 } 35 36 static inline int ValidDepthNotInFrontOfTheLayer( 37 int depth, const int2 layer_info_f2) { 38 //return (depth != 0) & (depth <= layer_info->front_depth); 39 return (depth != 0) & (depth <= layer_info_f2.s0); 40 } 41 42 static inline int ValidDepthNotOnTheLayer(int depth, 43 const int2 layer_info_f2) { 44 return (depth != 0) & 45 ((depth < layer_info_f2.s1) | (depth > layer_info_f2.s0)); 46 } 47 48 #endif 49