Index
Farbe
Ermöglicht die Darstellung einer Farbe im RGBA-Farbraum. Die Funktion bietet eine einfache, wenn auch nicht so kompakte Möglichkeit zur Umwandlung von Farbdarstellungen zwischen verschiedenen Sprachen. Zum Beispiel lassen sich die Felder dieser Darstellung auf triviale Weise dem Konstruktor von "java.awt.Color" in Java bereitstellen; ebenso der Methode "+colorWithRed:green:blue:alpha" von UIColor in iOS. Mit geringem Aufwand lässt sie sich auch als CSS-String "rgba()" in JavaScript formatieren.
Hinweis: Diese Proto-Datei enthält keine Informationen zum absoluten Farbraum, der zur Interpretation des RGB-Werts verwendet werden sollte (z. B. sRGB, Adobe RGB, DCI-P3, BT.2020 usw.). Anwendungen sollten standardmäßig den sRGB-Farbraum verwenden.
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 |
Der Rotanteil der Farbe als Wert im Intervall [0, 1]. |
green |
Der Grünanteil der Farbe als Wert im Intervall [0, 1]. |
blue |
Der Blauanteil der Farbe als Wert im Intervall [0, 1]. |
alpha |
Der Anteil dieser Farbe, der auf den Pixel angewendet werden soll. Die endgültige Pixelfarbe wird durch folgende Gleichung definiert: Pixelfarbe = Alpha * (diese Farbe) + (1,0 - Alpha) * (Hintergrundfarbe) 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 nicht angegeben, wird das Farbobjekt als solide Farbe dargestellt (als ob für den Alphawert explizit 1,0 angegeben worden wäre). |
LatLng
Ein Objekt, das ein Wertepaar aus Längen- und Breitengrad darstellt. Es wird als Paar von Double-Werten ausgedrückt, die für den Breitengrad und den Längengrad stehen. Sofern nicht anders angegeben, muss dieser Wert dem WGS84-Standard entsprechen. Die Werte müssen in normalisierten Bereichen liegen.
| Felder | |
|---|---|
latitude |
Der Breitengrad in Grad. Er muss im Bereich [-90,0, +90,0] liegen. |
longitude |
Der Längengrad in Grad. Er muss im Bereich [-180,0, +180,0] liegen. |