Package google.type

Indice

Colore

Rappresenta un colore nello spazio colore RGBA. Questa rappresentazione è stata concepita per semplificare la conversione da e verso rappresentazioni cromatiche in vari linguaggi rispetto alla compattezza. Ad esempio, i campi di questa rappresentazione possono essere banalimente forniti al costruttore di java.awt.Color in Java; possono anche essere forniti in modo banale al metodo +colorWithRed:green:blue:alpha di UIColor in iOS e, con un piccolo lavoro, può essere facilmente formattato in una stringa CSS rgba() in JavaScript.

Questa pagina di riferimento non contiene informazioni sullo spazio colore assoluto che dovrebbe essere utilizzato per interpretare il valore RGB, ad esempio sRGB, Adobe RGB, DCI-P3 e BT.2020. Per impostazione predefinita, le applicazioni devono utilizzare lo spazio colore sRGB.

Quando è necessario determinare l'uguaglianza dei colori, le implementazioni, a meno che non sia documentato diversamente, considerano uguali due colori se tutti i valori di rosso, verde, blu e alfa differiscono al massimo 1e-5.

Esempio (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();
 }
 // ...

Esempio (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;
}
// ...

Esempio (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('');
};

// ...
Campi
red

float

La quantità di rosso nel colore come valore nell'intervallo [0, 1].

green

float

La quantità di verde nel colore come valore nell'intervallo [0, 1].

blue

float

La quantità di blu nel colore come valore nell'intervallo [0, 1].

alpha

FloatValue

La frazione di questo colore da applicare al pixel. In altre parole, il colore dei pixel finale viene definito dall'equazione:

pixel color = alpha * (this color) + (1.0 - alpha) * (background color)

Ciò significa che un valore pari a 1,0 corrisponde a un colore a tinta unita, mentre un valore pari a 0,0 corrisponde a un colore completamente trasparente. Questo utilizza un messaggio wrapper anziché un semplice valore scalare in virgola mobile, in modo che sia possibile distinguere tra un valore predefinito e il valore che viene annullato. Se omesso, questo oggetto colore viene visualizzato in un colore a tinta unita (come se al valore alfa fosse stato assegnato esplicitamente il valore 1,0).

Data

Rappresenta una data di calendario intera o parziale, ad esempio un compleanno. L'ora del giorno e il fuso orario sono specificati altrove o non sono significativi. La data è relativa al calendario gregoriano. Può rappresentare uno dei seguenti valori:

  • Una data completa, con valori di anno, mese e giorno diversi da zero.
  • Un mese e un giorno, con un anno zero (ad esempio, un anniversario).
  • Un anno per sé, con un mese e un giorno zero.
  • Un anno e un mese, con un giorno zero (ad esempio, la data di scadenza di una carta di credito).

Tipi correlati:

Campi
year

int32

Anno della data. Il valore deve essere compreso tra 1 e 9999 oppure 0 per specificare una data senza anno.

month

int32

Mese dell'anno. Deve essere compreso tra 1 e 12 oppure 0 per specificare un anno senza giorno e mese.

day

int32

Giorno del mese. Deve essere compreso tra 1 e 31 ed essere valido per l'anno e il mese oppure 0 per specificare un anno da solo o un anno e un mese in cui il giorno non è significativo.

LatLng

Un oggetto che rappresenta una coppia di latitudine/longitudine. Questo valore viene espresso come una coppia di doppi per rappresentare i gradi di latitudine e i gradi di longitudine. Se non diversamente specificato, questo oggetto deve essere conforme allo standard WGS84. I valori devono essere compresi in intervalli normalizzati.

Campi
latitude

double

Latitudine in gradi. Deve essere compreso nell'intervallo [-90,0, +90,0].

longitude

double

Longitudine in gradi. Deve essere compreso nell'intervallo [-180,0, +180,0].