anchor.diff:  import 'dart:math' as math;
   import 'package:vector_math/vector_math.dart';
   
  -irgba_r255(int v) => ((v & 0xff000000) >> 24);
  -irgba_r1(int v) => ((v & 0xff000000) >> 24) / 255.0;
  -irgba_g255(int v) => ((v & 0x00ff0000) >> 16);
  -irgba_g1(int v) => ((v & 0x00ff0000) >> 16) / 255.0;
  -irgba_b255(int v) => ((v & 0x0000ff00) >> 8);
  -irgba_b1(int v) => ((v & 0x0000ff00) >> 8) / 255.0;
  -irgba_a255(int v) => ((v & 0x000000ff));
  -irgba_a1(int v) => ((v & 0x000000ff)) / 255.0;
  +irgba_r255(int c) => ((c & 0xff000000) >> 24);
  +irgba_r1(int c) => ((c & 0xff000000) >> 24) / 255.0;
  +irgba_g255(int c) => ((c & 0x00ff0000) >> 16);
  +irgba_g1(int c) => ((c & 0x00ff0000) >> 16) / 255.0;
  +irgba_b255(int c) => ((c & 0x0000ff00) >> 8);
  +irgba_b1(int c) => ((c & 0x0000ff00) >> 8) / 255.0;
  +irgba_a255(int c) => ((c & 0x000000ff));
  +irgba_a1(int c) => ((c & 0x000000ff)) / 255.0;
   
   int rgb1_irgba(double r, double g, double b) {
     return 0x000000ff | ((r * 255).toInt() << 24) | ((g * 255).toInt() << 16) | ((b * 255).toInt() << 8);
  
positive.code: ///      expect(irgba_hexString(0x00000000), '000000');
  ///      expect(irgba_hexString(0x000000ff), '000000');
  ///    });
  irgba_hexString(int v) {
    var x = (v >> 8) | 0x1000000; // start with 1 for padding with 0
    return x.toRadixString(16).substring(1);
  }
  
  
negative.code: ///      expect(irgba_rgbaString(0x00000000), 'rgba(0, 0, 0, 0.0)');
  ///      expect(irgba_rgbaString(0x000000ff), 'rgba(0, 0, 0, 1.0)');
  ///    });
  irgba_rgbaString(int c) {
    var r = irgba_r255(c);
    var g = irgba_g255(c);
    var b = irgba_b255(c);
    var a = irgba_a1(c);
    return 'rgba(${r}, ${g}, ${b}, ${a})';
  }
  
  