JD2022-TU1/main/tools/apps/DanceEditor/Source/Macros/PictogramStatistics.cs

51 lines
2 KiB
C#

using System.Drawing;
using System.IO;
using System.Linq;
using JD.Core;
using JD.Core.Drawing;
using JD.Core.ProjectManaging;
using JD.LogService;
using JD.Timeline.View.Actions.Refactor;
using TeaBox;
using TeaBox.Macros;
using Directory = System.IO.Directory;
namespace DanceEditor.Source.Macros
{
//[Module]
class PictogramStatistics : TapeActionHandlerBase
{
[Macro]
public void PictogramWidth(IExecutionContext context)
{
float meanWidth = 0;
meanWidth = ComputePictogramWidth(Path.Combine(ProjectManager.Instance.CurrentProject.DataPath,@"World\Maps\Starships\Timeline\Pictos"));
meanWidth = ComputePictogramWidth(Path.Combine(ProjectManager.Instance.CurrentProject.DataPath, @"World\Maps\GetLucky\Timeline\Pictos"));
meanWidth = ComputePictogramWidth(Path.Combine(ProjectManager.Instance.CurrentProject.DataPath, @"World\Maps\GimmeGimmeOSC\Timeline\Pictos"));
meanWidth = ComputePictogramWidth(Path.Combine(ProjectManager.Instance.CurrentProject.DataPath, @"World\Maps\BlameIt\Timeline\Pictos"));
meanWidth = ComputePictogramWidth(Path.Combine(ProjectManager.Instance.CurrentProject.DataPath, @"World\Maps\KissYouSIX\Timeline\Pictos"));
context.LogMessage("Mean width: {0}", meanWidth);
}
private float ComputePictogramWidth(string pictoDir)
{
float meanWidth = 0;
int nbPictos = 0;
var files = Directory.EnumerateFiles(pictoDir, "*.png", SearchOption.AllDirectories).ToList();
foreach (var f in files)
{
Bitmap bitmap = ImageUtility.LoadBitmap(f);
if (bitmap.Width > 256)
{
Rectangle rect = ImageUtility.ComputeAlphaBorderlessBounds(bitmap, 200);
meanWidth += rect.Width;
nbPictos ++;
}
}
meanWidth = meanWidth / nbPictos;
return meanWidth;
}
}
}