add binfolder path relative filters, fix gbrp color model, vwdw timebar tweaks, title...
[goodguy/history.git] / cinelerra-5.1 / plugins / bluebanana / bluebananacolor.c
index 0de216de661580925b992bb469c7782188d7af13..cb64f97996145e94e42cd9dabc5b24ddf28115bf 100644 (file)
@@ -225,6 +225,21 @@ static inline void RGB_to_rgb8(float *R, float *G, float *B, float *S, float F,
   }
 }
 
+static inline void Aal_to_alp8(float *S, float F, unsigned char *row, int w, int bpp){
+  if(S){
+    while(w--){
+      float a = *S*F*255.f +.5f;
+      row[3] = CLAMP(a,0,255);
+      row+=bpp;  ++S;
+    }
+  }else{
+    float a = F*255.f +.5f;
+    unsigned char s = CLAMP(a,0,255);
+    while(w--){ row[3] = s; row+=bpp; }
+  }
+}
+
+
 static inline void RGB_to_rgbF(float *R, float *G, float *B, float *S, float F, float *row, int w, int bpp){
   if(F>SELECT_THRESH){
     if(S){
@@ -264,6 +279,16 @@ static inline void RGB_to_rgbF(float *R, float *G, float *B, float *S, float F,
   }
 }
 
+static inline void Aal_to_alpF(float *S, float F, float *row, int w, int bpp){
+  if(S){
+    while(w--){ row[3] = *S++ * F; row+=bpp; }
+  }else{
+    float a = F;
+    while(w--){ row[3] = a; row+=bpp; }
+  }
+}
+
+
 static inline void unmask_rgba8(unsigned char *row,int w){
   while(w--){
     row[3] = 255;
@@ -373,6 +398,10 @@ static inline void HSpV_to_RGB(float H, float Sp, float V, float &R, float &G, f
 
 static inline void HSpV_correct_RGB(float H, float Sp, float &V, float &R, float &G, float &B){
   float vp = Sp<0.f?0.f:(fabs(V)+HSpV_SATURATION_BIAS)*Sp*HSpV_SATURATION_ISCALE;
+#define R_TO_Y (Kr)
+#define G_TO_Y (Kg)
+#define B_TO_Y (Kb)
+
   int i = (int)H;
   switch(i){
   default: