code: private static double colorBlending( double color1, double color2, int op ) {
          long argb1 = Double.doubleToRawLongBits( color1 );
          long r1 = ((argb1 >> 32) & 0xFFFF);
          long g1 = ((argb1 >> 16) & 0xFFFF);
          long b1 = ((argb1) & 0xFFFF);
  
          long argb2 = Double.doubleToRawLongBits( color2 );
          long r2 = ((argb2 >> 32) & 0xFFFF);
          long g2 = ((argb2 >> 16) & 0xFFFF);
          long b2 = ((argb2) & 0xFFFF);
  
          r1 = colorBlendingDigit( r1, r2, op );
          g1 = colorBlendingDigit( g1, g2, op );
          b1 = colorBlendingDigit( b1, b2, op );
          argb1 = r1 << 32 | g1 << 16 | b1;
  
          return Double.longBitsToDouble( argb1 );
      }
docs: Color blending operation
  
  @param color1 left color
  @param color2 right color
  @param op blending operation
  @return argb color value