Some antialiasing for slave shield halo too

git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@286 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
gewlitys
2002-12-01 22:52:20 +00:00
parent abf7a86cc2
commit c7e69c1041
+13 -3
View File
@@ -307,7 +307,7 @@ void CreateShieldMask()
DWORD rad2,red,red_nt,clear,**rgba,p; DWORD rad2,red,red_nt,clear,**rgba,p;
int x,y; int x,y;
FRAME ShieldFrame; FRAME ShieldFrame;
DWORD aa_delta,aa_delta2;
ShieldFrame = CaptureDrawable ( ShieldFrame = CaptureDrawable (
CreateDrawable (WANT_PIXMAP, SHIELD_DIAM, SHIELD_DIAM, 1) CreateDrawable (WANT_PIXMAP, SHIELD_DIAM, SHIELD_DIAM, 1)
@@ -316,9 +316,11 @@ void CreateShieldMask()
// This is a 'transparent' red for the planet mask. // This is a 'transparent' red for the planet mask.
red=frame_mapRGBA (ShieldFrame,255,0,0,200); red=frame_mapRGBA (ShieldFrame,255,0,0,200);
// This is a non-transparent red for the halo // This is a non-transparent red for the halo
red_nt=frame_mapRGBA (ShieldFrame,180,0,0,255); red_nt=180;
// This is 100% transparent. // This is 100% transparent.
clear=frame_mapRGBA (ShieldFrame,0,0,0,0); clear=frame_mapRGBA (ShieldFrame,0,0,0,0);
aa_delta=SHIELD_RADIUS_2-(SHIELD_RADIUS-1)*(SHIELD_RADIUS-1);
aa_delta2=(RADIUS+3)*(RADIUS+3)-(RADIUS+2)*(RADIUS+2);
for(y=-SHIELD_RADIUS;y<=SHIELD_RADIUS;y++) { for(y=-SHIELD_RADIUS;y<=SHIELD_RADIUS;y++) {
rgba[y+SHIELD_RADIUS]=(DWORD *)calloc((SHIELD_DIAM),sizeof(DWORD)); rgba[y+SHIELD_RADIUS]=(DWORD *)calloc((SHIELD_DIAM),sizeof(DWORD));
for(x=-SHIELD_RADIUS;x<=SHIELD_RADIUS;x++) { for(x=-SHIELD_RADIUS;x<=SHIELD_RADIUS;x++) {
@@ -333,7 +335,15 @@ void CreateShieldMask()
p=clear; p=clear;
} else { } else {
// The halo itself // The halo itself
p=red_nt; DWORD red=red_nt;
if(rad2>(SHIELD_RADIUS-1)*(SHIELD_RADIUS-1))
{
DWORD r;
r=rad2-(SHIELD_RADIUS-1)*(SHIELD_RADIUS-1);
red=red_nt-red_nt*r/aa_delta;
}
p=frame_mapRGBA (ShieldFrame,red,0,0,255);
} }
} else { } else {
p=clear; p=clear;