Package google.type

Index

Color

Représente une couleur dans l'espace colorimétrique RVBA. Cette représentation privilégie la simplicité de conversion des représentations de couleurs en différents langages à la compacité. Par exemple, les champs de cette représentation peuvent très simplement être fournis au constructeur de "java.awt.Color" en langage Java, tout comme à la méthode "+colorWithRed:Green:blue:alpha" d'UIColor dans iOS. Avec un minimum de travail, vous pouvez aussi facilement les mettre en forme dans une chaîne CSS "rgba()" en JavaScript.

Remarque : Ce fichier Proto ne contient pas d'informations sur l'espace colorimétrique absolu à utiliser pour interpréter la valeur RVB (par exemple : sRVB, Adobe RVB, DCI-P3 et BT.2020). Par défaut, les applications DEVRAIENT partir du principe qu'il s'agit de l'espace colorimétrique sRVB.

Exemple (Java) :

 import com.google.type.Color;

 // ...
 public static java.awt.Color fromProto(Color protocolor) {
   float alpha = protocolor.hasAlpha()
       ? protocolor.getAlpha().getValue()
       : 1.0;

   return new java.awt.Color(
       protocolor.getRed(),
       protocolor.getGreen(),
       protocolor.getBlue(),
       alpha);
 }

 public static Color toProto(java.awt.Color color) {
   float red = (float) color.getRed();
   float green = (float) color.getGreen();
   float blue = (float) color.getBlue();
   float denominator = 255.0;
   Color.Builder resultBuilder =
       Color
           .newBuilder()
           .setRed(red / denominator)
           .setGreen(green / denominator)
           .setBlue(blue / denominator);
   int alpha = color.getAlpha();
   if (alpha != 255) {
     result.setAlpha(
         FloatValue
             .newBuilder()
             .setValue(((float) alpha) / denominator)
             .build());
   }
   return resultBuilder.build();
 }
 // ...

Exemple (iOS/Obj-C) :

 // ...
 static UIColor* fromProto(Color* protocolor) {
    float red = [protocolor red];
    float green = [protocolor green];
    float blue = [protocolor blue];
    FloatValue* alpha_wrapper = [protocolor alpha];
    float alpha = 1.0;
    if (alpha_wrapper != nil) {
      alpha = [alpha_wrapper value];
    }
    return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
 }

 static Color* toProto(UIColor* color) {
     CGFloat red, green, blue, alpha;
     if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
       return nil;
     }
     Color* result = [[Color alloc] init];
     [result setRed:red];
     [result setGreen:green];
     [result setBlue:blue];
     if (alpha <= 0.9999) {
       [result setAlpha:floatWrapperWithValue(alpha)];
     }
     [result autorelease];
     return result;
}
// ...

Exemple (JavaScript) :

// ...

var protoToCssColor = function(rgb_color) {
   var redFrac = rgb_color.red || 0.0;
   var greenFrac = rgb_color.green || 0.0;
   var blueFrac = rgb_color.blue || 0.0;
   var red = Math.floor(redFrac * 255);
   var green = Math.floor(greenFrac * 255);
   var blue = Math.floor(blueFrac * 255);

   if (!('alpha' in rgb_color)) {
      return rgbToCssColor_(red, green, blue);
   }

   var alphaFrac = rgb_color.alpha.value || 0.0;
   var rgbParams = [red, green, blue].join(',');
   return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
};

var rgbToCssColor_ = function(red, green, blue) {
  var rgbNumber = new Number((red << 16) | (green << 8) | blue);
  var hexString = rgbNumber.toString(16);
  var missingZeros = 6 - hexString.length;
  var resultBuilder = ['#'];
  for (var i = 0; i < missingZeros; i++) {
     resultBuilder.push('0');
  }
  resultBuilder.push(hexString);
  return resultBuilder.join('');
};

// ...
Champs
red

float

Quantité de rouge dans la couleur en tant que valeur dans l'intervalle [0, 1].

green

float

Quantité de vert dans la couleur en tant que valeur dans l'intervalle [0, 1].

blue

float

Quantité de bleu dans la couleur en tant que valeur dans l'intervalle [0, 1].

alpha

FloatValue

Fraction de cette couleur à appliquer au pixel. En d'autres termes, la couleur finale du pixel est définie par l'équation :

couleur de pixel = alpha * (cette couleur) + (1,0 - alpha) * (couleur de fond)

Cela signifie qu'une valeur de 1,0 correspond à une couleur opaque, tandis qu'une valeur de 0,0 correspond à une couleur totalement transparente. Un message wrapper est utilisé à la place d'une simple valeur scalaire flottante pour permettre de faire la distinction entre une valeur par défaut et la valeur vide. En cas d'omission, cet objet de couleur doit être affiché en tant que couleur unie (comme si la valeur alpha avait été explicitement fournie avec une valeur de 1,0).

LatLng

Objet représentant une paire latitude/longitude. Celle-ci est exprimée par une paire de valeurs correspondant aux degrés de latitude et de longitude. Sauf indication contraire, ces valeurs doivent être conformes à la norme WGS84. Les valeurs doivent se situer dans les limites normalisées.

Champs
latitude

double

Latitude en degrés. Elle doit être comprise dans la plage [-90.0, +90.0].

longitude

double

Longitude en degrés. Elle doit être comprise dans la plage [-180.0, +180.0].