encode static method

Uint8List encode({
  1. AvatarStyle style = AvatarStyle.openPeeps,
  2. String headOrHairKey = '',
  3. String faceOrEyesKey = '',
  4. String hairColor = '',
  5. String skinColor = '',
  6. String clothingColor = '',
  7. String? facialHairKey,
  8. String? accessoriesKey,
  9. String? maskKey,
  10. String? bodyKey,
  11. String? mouthKey,
  12. String? noseKey,
  13. String? eyebrowsKey,
  14. String? earsKey,
  15. String? glassesKey,
  16. String? earringsKey,
  17. String earringColor = '',
  18. String eyeShadowColor = '',
  19. String eyesColor = '',
  20. String glassesColor = '',
  21. String mouthColor = '',
  22. String eyebrowsColor = '',
  23. String? rearHairKey,
  24. String avataaarStyleKey = '',
  25. String clothingGraphicKey = '',
  26. String accessoriesColor = '',
  27. String hatColor = '',
  28. String facialHairColor = '',
  29. String backgroundColor = '',
})

Encodes avatar parameters into exactly 13 bytes.

Implementation

static Uint8List encode({
  AvatarStyle style = AvatarStyle.openPeeps,
  String headOrHairKey = '',
  String faceOrEyesKey = '',
  String hairColor = '',
  String skinColor = '',
  String clothingColor = '',
  String? facialHairKey,
  String? accessoriesKey,
  String? maskKey,
  String? bodyKey,
  String? mouthKey,
  String? noseKey,
  String? eyebrowsKey,
  String? earsKey,
  String? glassesKey,
  String? earringsKey,
  String earringColor = '',
  String eyeShadowColor = '',
  String eyesColor = '',
  String glassesColor = '',
  String mouthColor = '',
  String eyebrowsColor = '',
  String? rearHairKey,
  String avataaarStyleKey = '',
  String clothingGraphicKey = '',
  String accessoriesColor = '',
  String hatColor = '',
  String facialHairColor = '',
  String backgroundColor = '',
}) {
  final writer = _BitWriter(13);
  writer.write(style.index, 3); // 3 bits for style (up to 8 styles)

  switch (style) {
    case AvatarStyle.openPeeps:
      writer.write(_keyIndex(OpenPeepsAssets.head, headOrHairKey), _bits(OpenPeepsAssets.head.length));
      writer.write(_keyIndex(OpenPeepsAssets.face, faceOrEyesKey), _bits(OpenPeepsAssets.face.length));
      writer.write(facialHairKey == null ? OpenPeepsAssets.facialHair.length : _keyIndex(OpenPeepsAssets.facialHair, facialHairKey), _bits(OpenPeepsAssets.facialHair.length + 1));
      writer.write(accessoriesKey == null ? OpenPeepsAssets.accessories.length : _keyIndex(OpenPeepsAssets.accessories, accessoriesKey), _bits(OpenPeepsAssets.accessories.length + 1));
      writer.write(maskKey == null ? OpenPeepsAssets.mask.length : _keyIndex(OpenPeepsAssets.mask, maskKey), _bits(OpenPeepsAssets.mask.length + 1));
      writer.write(_colorIndex(skinColor), 7);
      writer.write(_colorIndex(clothingColor), 7);
      writer.write(_colorIndex(hairColor), 7);
      break;
    case AvatarStyle.personas:
      writer.write(_keyIndex(PersonasAssets.hair, headOrHairKey), _bits(PersonasAssets.hair.length));
      writer.write(_keyIndex(PersonasAssets.eyes, faceOrEyesKey), _bits(PersonasAssets.eyes.length));
      writer.write(_keyIndex(PersonasAssets.body, bodyKey), _bits(PersonasAssets.body.length));
      writer.write(_keyIndex(PersonasAssets.mouth, mouthKey), _bits(PersonasAssets.mouth.length));
      writer.write(_keyIndex(PersonasAssets.nose, noseKey), _bits(PersonasAssets.nose.length));
      writer.write(facialHairKey == null ? PersonasAssets.facialHair.length : _keyIndex(PersonasAssets.facialHair, facialHairKey), _bits(PersonasAssets.facialHair.length + 1));
      writer.write(_colorIndex(skinColor), 7);
      writer.write(_colorIndex(clothingColor), 7);
      writer.write(_colorIndex(hairColor), 7);
      break;
    case AvatarStyle.micah:
      writer.write(_keyIndex(MicahAssets.hair, headOrHairKey), _bits(MicahAssets.hair.length));
      writer.write(_keyIndex(MicahAssets.eyes, faceOrEyesKey), _bits(MicahAssets.eyes.length));
      writer.write(_keyIndex(MicahAssets.eyebrows, eyebrowsKey), _bits(MicahAssets.eyebrows.length));
      writer.write(_keyIndex(MicahAssets.ears, earsKey), _bits(MicahAssets.ears.length));
      writer.write(_keyIndex(MicahAssets.shirt, bodyKey), _bits(MicahAssets.shirt.length));
      writer.write(_keyIndex(MicahAssets.nose, noseKey), _bits(MicahAssets.nose.length));
      writer.write(_keyIndex(MicahAssets.mouth, mouthKey), _bits(MicahAssets.mouth.length));
      writer.write(facialHairKey == null ? MicahAssets.facialHair.length : _keyIndex(MicahAssets.facialHair, facialHairKey), _bits(MicahAssets.facialHair.length + 1));
      writer.write(glassesKey == null ? MicahAssets.glasses.length : _keyIndex(MicahAssets.glasses, glassesKey), _bits(MicahAssets.glasses.length + 1));
      writer.write(earringsKey == null ? MicahAssets.earrings.length : _keyIndex(MicahAssets.earrings, earringsKey), _bits(MicahAssets.earrings.length + 1));
      writer.write(_colorIndex(skinColor), 7);
      writer.write(_colorIndex(hairColor), 7);
      writer.write(_colorIndex(clothingColor), 7);
      writer.write(_colorIndex(glassesColor), 7);
      writer.write(_colorIndex(earringColor), 7);
      writer.write(_colorIndex(eyeShadowColor), 7);
      break;
    case AvatarStyle.toonhead:
      writer.write(_keyIndex(ToonHeadAssets.hair, headOrHairKey), _bits(ToonHeadAssets.hair.length));
      writer.write(_keyIndex(ToonHeadAssets.eyes, faceOrEyesKey), _bits(ToonHeadAssets.eyes.length));
      writer.write(_keyIndex(ToonHeadAssets.mouth, mouthKey), _bits(ToonHeadAssets.mouth.length));
      writer.write(_keyIndex(ToonHeadAssets.clothes, bodyKey), _bits(ToonHeadAssets.clothes.length));
      writer.write(_keyIndex(ToonHeadAssets.eyebrows, eyebrowsKey), _bits(ToonHeadAssets.eyebrows.length));
      writer.write(rearHairKey == null ? ToonHeadAssets.rearHair.length : _keyIndex(ToonHeadAssets.rearHair, rearHairKey), _bits(ToonHeadAssets.rearHair.length + 1));
      writer.write(facialHairKey == null ? ToonHeadAssets.beard.length : _keyIndex(ToonHeadAssets.beard, facialHairKey), _bits(ToonHeadAssets.beard.length + 1));
      writer.write(_colorIndex(skinColor), 7);
      writer.write(_colorIndex(hairColor), 7);
      writer.write(_colorIndex(clothingColor), 7);
      break;
    case AvatarStyle.avataaars:
      writer.write(_keyIndex(AvataaarsAssets.top, headOrHairKey), _bits(AvataaarsAssets.top.length));
      writer.write(_keyIndex(AvataaarsAssets.eyes, faceOrEyesKey), _bits(AvataaarsAssets.eyes.length));
      writer.write(_keyIndex(AvataaarsAssets.eyebrows, eyebrowsKey), _bits(AvataaarsAssets.eyebrows.length));
      writer.write(_keyIndex(AvataaarsAssets.mouth, mouthKey), _bits(AvataaarsAssets.mouth.length));
      writer.write(_keyIndex(AvataaarsAssets.clothing, bodyKey), _bits(AvataaarsAssets.clothing.length));
      writer.write(_keyIndex(AvataaarsAssets.clothingGraphic, clothingGraphicKey), _bits(AvataaarsAssets.clothingGraphic.length));
      writer.write(_keyIndex(AvataaarsAssets.style, avataaarStyleKey), _bits(AvataaarsAssets.style.length));
      writer.write(facialHairKey == null ? AvataaarsAssets.facialHair.length : _keyIndex(AvataaarsAssets.facialHair, facialHairKey), _bits(AvataaarsAssets.facialHair.length + 1));
      writer.write(accessoriesKey == null ? AvataaarsAssets.accessories.length : _keyIndex(AvataaarsAssets.accessories, accessoriesKey), _bits(AvataaarsAssets.accessories.length + 1));
      writer.write(_colorIndex(skinColor), 7);
      writer.write(_colorIndex(clothingColor), 7);
      writer.write(_colorIndex(hairColor), 7);
      writer.write(_colorIndex(facialHairColor), 7);
      writer.write(_colorIndex(accessoriesColor), 7);
      writer.write(_colorIndex(hatColor), 7);
      writer.write(_colorIndex(backgroundColor), 7);
      break;
    case AvatarStyle.miniavs:
      writer.write(_keyIndex(MiniavsAssets.body, bodyKey), _bits(MiniavsAssets.body.length));
      writer.write(_keyIndex(MiniavsAssets.eyes, faceOrEyesKey), _bits(MiniavsAssets.eyes.length));
      writer.write(_keyIndex(MiniavsAssets.mouth, mouthKey), _bits(MiniavsAssets.mouth.length));
      writer.write(_keyIndex(MiniavsAssets.head, noseKey), _bits(MiniavsAssets.head.length));
      writer.write(facialHairKey == null ? MiniavsAssets.mustache.length : _keyIndex(MiniavsAssets.mustache, facialHairKey), _bits(MiniavsAssets.mustache.length + 1));
      writer.write(glassesKey == null ? MiniavsAssets.glasses.length : _keyIndex(MiniavsAssets.glasses, glassesKey), _bits(MiniavsAssets.glasses.length + 1));
      writer.write(_keyIndex(MiniavsAssets.hair, headOrHairKey), _bits(MiniavsAssets.hair.length));
      writer.write(_colorIndex(skinColor), 7);
      writer.write(_colorIndex(clothingColor), 7);
      writer.write(_colorIndex(hairColor), 7);
      break;
  }
  return writer.bytes;
}