text static method

List<int> text({
  1. required String text,
  2. AlignPos align = AlignPos.left,
  3. bool bold = false,
  4. bool inverse = false,
  5. FontSize fontSize = FontSize.normal,
})

Implementation

static List<int> text({required String text, AlignPos align = AlignPos.left, bool bold = false, bool inverse = false, FontSize fontSize = FontSize.normal}) {
  String enter = "\n";
  String reset = '\x1B@';
  String alignmentCode = "";

  const cAlignLeft = '\x1Ba0'; // Alinear a la izquierda
  const cAlignCenter = '\x1Ba1'; // Alinear al centro
  const cAlignRight = '\x1Ba2'; // Alinear a la derecha

  const cBoldOn = '\x1BE\x01'; // Turn emphasized mode on
  const cBoldOff = '\x1BE\x00'; // Turn emphasized mode off

  const cInverseOn = '\x1dB\x01'; // Activar texto invertido
  const cInverseOff = '\x1dB\x00'; // Desactivar texto invertido

  //const cFontNormal = '\x1D!\x00'; // Tamaño de fuente normal
  //const cFontNormal = '\x1d\x21\x00'; // La fuente no se agranda (0)
  const cFontNormal = '\x1b\x4d\x00'; // Fuente estándar ASCII (2)
  const cFontCompressed = '\x1b\x4d\x01'; // Fuente comprimida
  const cDoubleHeightFont = '\x1d\x21\x11'; // Altura doblada
  const cDoubleWidthFont = '\x1d\x21\x22'; // Ancho doblado
  const cBigFont = '\x1d\x21\x33'; // Ancho y alto doblados
  const cTripleHeightFont = '\x1d\x21\x33'; // Altura doblada (5)

  // Aplicar los comandos según los parámetros
  if (align == AlignPos.left) {
    alignmentCode = cAlignLeft;
  } else if (align == AlignPos.center) {
    alignmentCode = cAlignCenter;
  } else if (align == AlignPos.right) {
    alignmentCode = cAlignRight;
  }

  String fontSizeCode = "";
  switch (fontSize) {
    case FontSize.normal:
      fontSizeCode = cFontNormal;
      break;
    case FontSize.compressed:
      fontSizeCode = cFontCompressed;
      break;
    case FontSize.doubleHeight:
      fontSizeCode = cDoubleHeightFont;
      break;
    case FontSize.doubleWidth:
      fontSizeCode = cDoubleWidthFont;
      break;
    case FontSize.big:
      fontSizeCode = cBigFont;
      break;
    case FontSize.superBig:
      fontSizeCode = cTripleHeightFont;
      break;
  }

  if (inverse) {
    text = '$cInverseOn$text$cInverseOff';
  }

  if (bold) {
    text = '$reset$cBoldOn$alignmentCode$fontSizeCode$text$enter$cBoldOff';
  } else {
    text = '$reset$alignmentCode$fontSizeCode$text$enter';
  }

  return text.codeUnits;
}