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).

Intervallo

Rappresenta un intervallo di tempo, codificato come inizio timestamp (incluso) e come fine timestamp (esclusivo).

L'inizio deve essere inferiore o uguale alla fine. Quando l'inizio corrisponde alla fine, l'intervallo è vuoto (non corrisponde a nessun orario). Quando sia l'inizio che la fine non sono specificati, l'intervallo corrisponde a un momento qualsiasi.

Campi
start_time

Timestamp

Campo facoltativo. Inizio inclusivo dell'intervallo.

Se specificato, un timestamp che corrisponde a questo intervallo dovrà essere uguale o successivo all'inizio.

end_time

Timestamp

Campo facoltativo. Fine dell'intervallo esclusiva.

Se specificato, un timestamp che corrisponde a questo intervallo dovrà essere precedente alla fine.

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].