Skip to content

Instantly share code, notes, and snippets.

@bc3tech
Created December 16, 2015 05:33
Show Gist options
  • Save bc3tech/f8a90b5fab99fc7b14a4 to your computer and use it in GitHub Desktop.
Save bc3tech/f8a90b5fab99fc7b14a4 to your computer and use it in GitHub Desktop.
Microsoft Band Dimensions factory
using Microsoft.Band;
using Windows.UI.Xaml.Media.Imaging;
namespace App
{
enum BandType
{
Band1,
Band2
}
abstract class BandDimensions
{
public abstract short PageWidth { get; }
public virtual short PageHeight { get; }
public abstract byte RightEdgeWidth { get; }
public virtual short MeTileWidth => 310;
public abstract short MeTileHeight { get; }
public abstract BandType BandType { get; }
public abstract WriteableBitmap CreateTileBitmap();
public virtual WriteableBitmap CreateSmallTileBitmap() => new WriteableBitmap(24, 24);
public virtual short SmallLineHeight => 25;
}
class Band1Dimensions : BandDimensions
{
public override short PageWidth => 245;
public override short PageHeight => 102;
public override byte RightEdgeWidth => 35;
public override short MeTileHeight => 102;
public override BandType BandType => BandType.Band1;
public override WriteableBitmap CreateTileBitmap() => new WriteableBitmap(46, 46);
}
class Band2Dimensions : BandDimensions
{
public override short PageWidth => 258;
public override short PageHeight => 128;
public override byte RightEdgeWidth => 22;
public override short MeTileHeight => 128;
public override BandType BandType => BandType.Band2;
public override WriteableBitmap CreateTileBitmap() => new WriteableBitmap(48, 48);
}
static class BandDimensionsFactory
{
async public static System.Threading.Tasks.Task<BandDimensions> Create(IBandClient band)
{
var hwVersion = await band.GetHardwareVersionAsync();
if (int.Parse(hwVersion) >= 20)
return new Band2Dimensions();
return new Band1Dimensions();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment