}
static inline void Aal_to_alp8(float *S, float F, unsigned char *row, int w, int bpp){
- F = 1.f - F;
- while(w--){
- float a = (1 - *S*F)*255.f +.5f;
- row[3] = CLAMP(a,0,255);
- row+=bpp; ++S;
+ 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 Aal_to_alpF(float *S, float F, float *row, int w, int bpp){
- F = 1.f - F;
- while(w--){
- float a = 1.f - *S*F;
- row[3] = a;
- row+=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 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: