Optimise drawing of the button backgrounds in the launcher.

This commit is contained in:
UnknownShadow200 2016-01-28 15:01:33 +11:00
parent 6b89bc0019
commit 09f0a04efa
9 changed files with 43 additions and 7 deletions

View File

@ -89,6 +89,7 @@ namespace Launcher2 {
if( table != null ) if( table != null )
table.ClampIndex(); table.ClampIndex();
MakeWidgets(); MakeWidgets();
RedrawAllButtonBackgrounds();
using( drawer ) { using( drawer ) {
drawer.SetBitmap( game.Framebuffer ); drawer.SetBitmap( game.Framebuffer );

View File

@ -19,6 +19,8 @@ namespace Launcher2 {
public override void Resize() { public override void Resize() {
MakeWidgets(); MakeWidgets();
RedrawAllButtonBackgrounds();
using( drawer ) { using( drawer ) {
drawer.SetBitmap( game.Framebuffer ); drawer.SetBitmap( game.Framebuffer );
RedrawAll(); RedrawAll();

View File

@ -19,15 +19,21 @@ namespace Launcher2 {
public override void Init() { public override void Init() {
base.Init(); base.Init();
Resize(); MakeWidgets();
RedrawAllButtonBackgrounds();
using( drawer ) { using( drawer ) {
drawer.SetBitmap( game.Framebuffer ); drawer.SetBitmap( game.Framebuffer );
RedrawAll();
LoadSavedInfo(); LoadSavedInfo();
} }
Dirty = true;
} }
public override void Resize() { public override void Resize() {
MakeWidgets(); MakeWidgets();
RedrawAllButtonBackgrounds();
using( drawer ) { using( drawer ) {
drawer.SetBitmap( game.Framebuffer ); drawer.SetBitmap( game.Framebuffer );
RedrawAll(); RedrawAll();

View File

@ -87,6 +87,24 @@ namespace Launcher2 {
} }
} }
protected void RedrawAllButtonBackgrounds() {
int buttons = 0;
for( int i = 0; i < widgets.Length; i++ ) {
if( widgets[i] == null || !(widgets[i] is LauncherButtonWidget) ) continue;
buttons++;
}
if( buttons == 0 ) return;
using( FastBitmap dst = new FastBitmap( game.Framebuffer, true ) ) {
for( int i = 0; i < widgets.Length; i++ ) {
if( widgets[i] == null ) continue;
LauncherButtonWidget button = widgets[i] as LauncherButtonWidget;
if( button != null )
button.RedrawBackground( dst );
}
}
}
protected void RedrawAll() { protected void RedrawAll() {
for( int i = 0; i < widgets.Length; i++ ) { for( int i = 0; i < widgets.Length; i++ ) {
if( widgets[i] == null ) continue; if( widgets[i] == null ) continue;

View File

@ -16,6 +16,8 @@ namespace Launcher2 {
public override void Resize() { public override void Resize() {
MakeWidgets(); MakeWidgets();
RedrawAllButtonBackgrounds();
using( drawer ) { using( drawer ) {
drawer.SetBitmap( game.Framebuffer ); drawer.SetBitmap( game.Framebuffer );
RedrawAll(); RedrawAll();

View File

@ -42,6 +42,8 @@ namespace Launcher2 {
public override void Resize() { public override void Resize() {
MakeWidgets(); MakeWidgets();
RedrawAllButtonBackgrounds();
using( drawer ) { using( drawer ) {
drawer.SetBitmap( game.Framebuffer ); drawer.SetBitmap( game.Framebuffer );
drawer.Clear( clearCol ); drawer.Clear( clearCol );

View File

@ -67,6 +67,8 @@ namespace Launcher2 {
public override void Resize() { public override void Resize() {
MakeWidgets(); MakeWidgets();
RedrawAllButtonBackgrounds();
using( drawer ) { using( drawer ) {
drawer.SetBitmap( game.Framebuffer ); drawer.SetBitmap( game.Framebuffer );
RedrawAll(); RedrawAll();

View File

@ -32,7 +32,6 @@ namespace Launcher2 {
int xOffset = Width - textSize.Width, yOffset = Height - textSize.Height; int xOffset = Width - textSize.Width, yOffset = Height - textSize.Height;
DrawTextArgs args = new DrawTextArgs( text, font, true ); DrawTextArgs args = new DrawTextArgs( text, font, true );
RedrawBackground();
DrawBorder( drawer ); DrawBorder( drawer );
if( Window.ClassicMode ) if( Window.ClassicMode )
DrawClassic( drawer, xOffset, yOffset ); DrawClassic( drawer, xOffset, yOffset );
@ -63,15 +62,18 @@ namespace Launcher2 {
} }
public void RedrawBackground() { public void RedrawBackground() {
using( FastBitmap dst = new FastBitmap( Window.Framebuffer, true ) )
RedrawBackground( dst );
}
public void RedrawBackground( FastBitmap dst ) {
Rectangle rect = new Rectangle( X + border, Y + border, Width - border * 2, Height - border * 2 ); Rectangle rect = new Rectangle( X + border, Y + border, Width - border * 2, Height - border * 2 );
if( Window.ClassicMode ) { if( Window.ClassicMode ) {
FastColour foreCol = Active ? new FastColour( 126, 136, 191 ) : new FastColour( 111, 111, 111 ); FastColour foreCol = Active ? new FastColour( 126, 136, 191 ) : new FastColour( 111, 111, 111 );
using( FastBitmap dst = new FastBitmap( Window.Framebuffer, true ) ) Drawer2DExt.DrawNoise( dst, rect, foreCol, 8 );
Drawer2DExt.DrawNoise( dst, rect, foreCol, 8 );
} else { } else {
FastColour foreCol = Active ? LauncherSkin.ButtonForeActiveCol : LauncherSkin.ButtonForeCol; FastColour foreCol = Active ? LauncherSkin.ButtonForeActiveCol : LauncherSkin.ButtonForeCol;
using( FastBitmap dst = new FastBitmap( Window.Framebuffer, true ) ) Drawer2DExt.FastClear( dst, rect, foreCol );
Drawer2DExt.FastClear( dst, rect, foreCol );
} }
} }
} }

View File

@ -18,6 +18,7 @@
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<ApplicationIcon>icon.ico</ApplicationIcon> <ApplicationIcon>icon.ico</ApplicationIcon>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' "> <PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>