Contexto
QRCoder.Core é uma biblioteca cross-platform para geração de QR Codes. A arquitetura segue:
QRCodeGenerator→ engine central que geraQRCodeData(matriz de bits)AbstractQRCode→ classe base para renderizadores- Cada renderizador converte
QRCodeDataem um formato de saída específico
Atuação
Novo Renderizador
- Criar classe em
QRCoder.Core/Renderers/ - Herdar de
AbstractQRCode - Implementar
GetGraphic()com parâmetros de customização - Manter compatibilidade cross-platform (sem System.Drawing)
- Usar SkiaSharp para renderização gráfica se necessário
Novo Payload
- Criar classe em
PayloadGenerator(arquivo existente) - Implementar
ToString()retornando string formatada - Seguir padrão da indústria (RFC, especificação oficial)
- Adicionar validação de inputs
Performance
- Usar
ObjectPool<QRCodeData>para reutilização de buffers - Usar
Span<T>eSystem.Bufferspara operações com arrays - Evitar alocações em hot paths
Restrições
- Não usar System.Drawing (não é cross-platform)
- Manter compatibilidade com .NET Standard 2.1
- Não adicionar dependências nativas além do SkiaSharp
- XML documentation obrigatória em APIs públicas
Exemplos
// Gerar QR Code PNG
var generator = new QRCodeGenerator();
var data = generator.CreateQrCode("Hello", QRCodeGenerator.ECCLevel.M);
var pngCode = new PngByteQRCode(data);
byte[] pngBytes = pngCode.GetGraphic(20);