Package google.type

Index

Color

Ermöglicht die Darstellung einer Farbe im RGBA-Farbraum. Diese Darstellung wurde für eine einfache Konvertierung in und aus Farbdarstellungen in verschiedenen Sprachen über Kompaktheit entwickelt. Die Felder dieser Darstellung können beispielsweise dem Konstruktor von java.awt.Color in Java ganz einfach zur Verfügung gestellt werden. Sie können auch einfach an die Methode +colorWithRed:green:blue:alpha von UIColor in iOS übergeben werden. Mit nur wenig Aufwand kann sie in JavaScript als CSS-rgba()-String formatiert werden.

Diese Referenzseite enthält keine Informationen zum absoluten Farbraum, der zur Interpretation des RGB-Werts verwendet werden sollte, z. B. sRGB, Adobe RGB, DCI-P3 und BT.2020. Standardmäßig sollte für Anwendungen der sRGB-Farbraum verwendet werden.

Wenn eine Farbgleichheit entschieden werden muss, behandeln Implementierungen, sofern nicht anders angegeben, zwei Farben als gleich, wenn sich ihre Rot-, Grün-, Blau- und Alpha-Werte jeweils um höchstens 1e-5 unterscheiden.

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

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

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

// ...
Felder
red

float

Der Rotanteil der Farbe als Wert im Intervall [0, 1].

green

float

Der Grünanteil der Farbe als Wert im Intervall [0, 1].

blue

float

Der Blauanteil der Farbe als Wert im Intervall [0, 1].

alpha

FloatValue

Der Anteil dieser Farbe, der auf den Pixel angewendet werden soll. Die endgültige Pixelfarbe wird durch folgende Gleichung definiert:

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

Der Wert 1,0 entspricht einer soliden Farbdarstellung, während die Farbe bei einem Wert von 0,0 vollständig transparent ist. Dabei wird anstelle eines einfachen Float-Skalarwerts eine Wrapper-Nachricht verwendet, sodass zwischen einem Standardwert und dem zurückgesetzten Wert unterschieden werden kann. Wenn dieses Farbobjekt nicht angegeben wird, wird es als Volltonfarbe dargestellt (als ob dem Alphawert explizit der Wert 1,0 gegeben worden wäre).

Datum

Stellt ein ganzes Kalenderdatum oder einen Teil davon dar, z. B. einen Geburtstag. Tageszeit und Zeitzone werden entweder an anderer Stelle angegeben oder sind unbedeutend. Das Datum bezieht sich auf den gregorianischen Kalender. Dies kann Folgendes bedeuten:

  • Ein vollständiges Datum mit Werten für Jahr, Monat und Tag ungleich null.
  • Monat und Tag mit einem Jahr 0 (z. B. ein Jahrestag)
  • Ein Jahr für sich allein, mit einem Monat 0 und einem Tag 0.
  • Ein Jahr und ein Monat mit einem Tag null (z. B. das Ablaufdatum einer Kreditkarte).

Ähnliche Typen:

Felder
year

int32

Jahr des Datums. Der Wert muss zwischen 1 und 9999 liegen, oder 0, um ein Datum ohne Jahr anzugeben.

month

int32

Monat eines Jahres. Muss zwischen 1 und 12 liegen, oder 0, um ein Jahr ohne Monat und Tag anzugeben.

day

int32

Tag eines Monats Der Wert muss zwischen 1 und 31 liegen und für das Jahr und den Monat gültig sein. Mit 0 können Sie ein Jahr allein oder ein Jahr und einen Monat angeben, bei dem der Tag nicht von Bedeutung ist.

LatLng

Ein Objekt, das ein Paar aus Breiten- und Längengrad darstellt. Dies wird als Paar von Double-Werten zur Darstellung von Breiten- und Längengraden ausgedrückt. Sofern nicht anders angegeben, muss dieses Objekt dem WGS84-Standard entsprechen. Die Werte müssen innerhalb normalisierter Bereiche liegen.

Felder
latitude

double

Der Breitengrad in Grad. Er muss im Bereich [-90,0, +90,0] liegen.

longitude

double

Der Längengrad in Grad. Er muss im Bereich [-180,0, +180,0] liegen.