diff options
-rw-r--r-- | src/base/TextGL.pas | 8 | ||||
-rw-r--r-- | src/base/ULyrics.pas | 30 |
2 files changed, 37 insertions, 1 deletions
diff --git a/src/base/TextGL.pas b/src/base/TextGL.pas index 7da1d558..eb61c15e 100644 --- a/src/base/TextGL.pas +++ b/src/base/TextGL.pas @@ -73,6 +73,7 @@ procedure SetFontSize(Size: real); procedure SetFontStyle(Style: integer); // sets active font style (normal, bold, etc) procedure SetFontItalic(Enable: boolean); // sets italic type letter (works for all fonts) procedure SetFontReflection(Enable:boolean;Spacing: real); // enables/disables text reflection +procedure SetOutlineColor(R, G, B, A: GLFloat); // set outline color implementation @@ -242,6 +243,7 @@ begin SetFontZ(0); SetFontItalic(False); SetFontReflection(False, 0); + SetOutlineColor(0,0,0,1); end; procedure SetFontPos(X, Y: real); @@ -282,4 +284,10 @@ begin Fonts[ActFont].Font.ReflectionSpacing := Spacing - Fonts[ActFont].Font.Descender; end; +procedure SetOutlineColor(R, G, B, A: GLFloat); +begin + if (ActFont > 1) then + TFTScalableOutlineFont(Fonts[ActFont].Font).SetOutlineColor(R, G, B, A); +end; + end. diff --git a/src/base/ULyrics.pas b/src/base/ULyrics.pas index 3f62db9c..4b2bc4ae 100644 --- a/src/base/ULyrics.pas +++ b/src/base/ULyrics.pas @@ -516,7 +516,11 @@ var WordY: real; // word y-position LyricsEffect: TLyricsEffect; Alpha: real; // alphalevel to fade out at end - ClipPlaneEq: array[0..3] of GLdouble; // clipping plane for slide effect + ClipPlaneEq: array[0..3] of GLdouble; // clipping plane for slide effect + + OutlineColor_act: TRGB; // outline color actual line + OutlineColor_dis: TRGB; // outline color next line + OutlineColor_en: TRGB; // outline color sing line {// duet mode IconSize: real; // size of player icons IconAlpha: real; // alpha level of player icons @@ -592,6 +596,9 @@ begin Alpha := 0; end; + // outline color + SetOutlineColor(OutlineColor_act.R, OutlineColor_act.G, OutlineColor_act.B, Alpha); + // draw sentence before current word if (LyricsEffect in [lfxSimple, lfxBall, lfxShift]) then // only highlight current word and not that ones before in this line @@ -604,10 +611,17 @@ begin glColorRGB(LineColor_en, Alpha); if (NextWord <> nil) then begin + + // outline color + SetOutlineColor(OutlineColor_en.R, OutlineColor_en.G, OutlineColor_en.B, Alpha); + DrawLyricsWords(Line, LyricX + NextWord.X, LyricY, Line.CurWord+1, High(Line.Words)); end; + // outline color + SetOutlineColor(OutlineColor_act.R, OutlineColor_act.G, OutlineColor_act.B, Alpha); + // draw current word if (LyricsEffect in [lfxSimple, lfxBall, lfxShift]) then begin @@ -680,12 +694,26 @@ begin // enable the upper, disable the lower line if (Line = UpperLine) then + begin + // outline color + SetOutlineColor(OutlineColor_en.R, OutlineColor_en.G, OutlineColor_en.B, Alpha); + glColorRGB(LineColor_en) + end else + begin + // outline color + SetOutlineColor(OutlineColor_dis.R, OutlineColor_dis.G, OutlineColor_dis.B, Alpha); + glColorRGB(LineColor_dis); + end; DrawLyricsWords(Line, LyricX, LyricY, 0, High(Line.Words)); end; + + // reset + SetOutlineColor(0,0,0,1); + end; {** |