|
@@ -30,16 +30,17 @@ void our_RecordUndo(OurLayer* ol, real xmin,real xmax, real ymin,real ymax,int A
|
|
|
|
|
|
void our_CanvasAlphaMix(uint16_t* target, uint16_t* source, real alpha){
|
|
void our_CanvasAlphaMix(uint16_t* target, uint16_t* source, real alpha){
|
|
real a_1=(real)(65535-source[3]*alpha)/65535;
|
|
real a_1=(real)(65535-source[3]*alpha)/65535;
|
|
- target[3]=source[3]*alpha+target[3]*a_1;
|
|
|
|
- target[0]=source[0]*alpha+target[0]*a_1;
|
|
|
|
- target[1]=source[1]*alpha+target[1]*a_1;
|
|
|
|
- target[2]=source[2]*alpha+target[2]*a_1;
|
|
|
|
|
|
+ int a=(int)source[3]*alpha+(int)target[3]*a_1; TNS_CLAMP(a,0,65535);
|
|
|
|
+ int r=(int)source[0]*alpha+(int)target[0]*a_1; TNS_CLAMP(r,0,65535);
|
|
|
|
+ int g=(int)source[1]*alpha+(int)target[1]*a_1; TNS_CLAMP(g,0,65535);
|
|
|
|
+ int b=(int)source[2]*alpha+(int)target[2]*a_1; TNS_CLAMP(b,0,65535);
|
|
|
|
+ target[3]=a; target[0]=r; target[1]=g; target[2]=b;
|
|
}
|
|
}
|
|
void our_CanvasAdd(uint16_t* target, uint16_t* source, real alpha){
|
|
void our_CanvasAdd(uint16_t* target, uint16_t* source, real alpha){
|
|
- int a=(int)(source[3]*alpha+target[3]); TNS_CLAMP(a,0,65535);
|
|
|
|
- int r=(int)(source[0]*alpha+target[0]); TNS_CLAMP(r,0,65535);
|
|
|
|
- int g=(int)(source[1]*alpha+target[1]); TNS_CLAMP(g,0,65535);
|
|
|
|
- int b=(int)(source[2]*alpha+target[2]); TNS_CLAMP(b,0,65535);
|
|
|
|
|
|
+ int a=((int)source[3]*alpha+(int)target[3]); TNS_CLAMP(a,0,65535);
|
|
|
|
+ int r=((int)source[0]*alpha+(int)target[0]); TNS_CLAMP(r,0,65535);
|
|
|
|
+ int g=((int)source[1]*alpha+(int)target[1]); TNS_CLAMP(g,0,65535);
|
|
|
|
+ int b=((int)source[2]*alpha+(int)target[2]); TNS_CLAMP(b,0,65535);
|
|
target[3]=a; target[0]=r; target[1]=g; target[2]=b;
|
|
target[3]=a; target[0]=r; target[1]=g; target[2]=b;
|
|
}
|
|
}
|
|
|
|
|