Editor/HumanoidMocap/PhoneQrPresentation.cs
using System;
using HumanoidMocap.Editor.PhoneQr;
namespace HumanoidMocap.Editor;
/// <summary>Shared pixel-aligned QR geometry. Preserve a four-module quiet zone and keep
/// the center logo small relative to a high-error-correction symbol.</summary>
public static class PhoneQrPresentation
{
public static QrCode Create(string url)=>QrCode.EncodeText(url,QrCode.Ecc.High);
public static (int Unit,int Left,int Top,int LogoStart,int LogoModules) Measure(int modules,int width,int height)
{
var unit=Math.Max(1,(Math.Min(width,height)-24)/(modules+8));
var left=(width-modules*unit)/2;var top=(height-modules*unit)/2;
var logoModules=Math.Min(9,Math.Max(3,(modules/6)|1));
return(unit,left,top,(modules-logoModules)/2,logoModules);
}
}