Indeks
Color
Mewakili warna dalam ruang warna RGBA. Representasi ini didesain untuk kemudahan konversi ke/dari representasi warna dalam berbagai bahasa selain kerapatan; misalnya, kolom representasi ini dapat dengan mudah diberikan kepada konstruktor "java.awt.Color" di Java; itu juga dapat dengan mudah diberikan untuk metode "+colorWithRed:green:blue:alpha" UIColor di iOS; dan, hanya dengan sedikit upaya, file itu juga dapat dengan mudah diformat menjadi string "RGBa()" CSS di JavaScript.
Catatan: proto ini tidak memberikan informasi tentang ruang warna absolut yang harus digunakan untuk menafsirkan nilai RGB (misalnya sRGB, Adobe RGB, DCI-P3, BT.2020, dll.). Secara default, aplikasi HARUS menggunakan ruang warna sRGB.
Contoh (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();
}
// ...
Contoh (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;
}
// ...
Contoh (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('');
};
// ...
| Kolom | |
|---|---|
red |
Jumlah merah dalam warna sebagai nilai dalam interval [0, 1]. |
green |
Jumlah hijau dalam warna sebagai nilai dalam interval [0, 1]. |
blue |
Jumlah biru dalam warna sebagai nilai dalam interval [0, 1]. |
alpha |
Fraksi warna ini yang harus diterapkan ke piksel. Yaitu, warna piksel akhir ditentukan oleh persamaan: warna piksel = alpha * (warna ini) + (1.0 - alpha) * (warna latar belakang) Ini berarti bahwa nilai 1,0 berarti warna solid, sedangkan nilai 0,0 berarti warna yang sepenuhnya transparan. Kode ini menggunakan pesan wrapper, bukan skalar float sederhana sehingga memungkinkan untuk membedakan antara nilai default dan nilai yang tidak disetel. Jika dihilangkan, objek warna ini akan dirender sebagai warna solid (seolah-olah nilai alfa telah secara eksplisit diberikan dengan nilai 1,0). |
LatLng
Objek yang mewakili pasangan garis lintang/garis bujur. Ini dinyatakan sebagai pasangan nilai ganda yang mewakili derajat lintang dan derajat bujur. Kecuali ditentukan lain, nilai harus sesuai dengan standar WGS84. Nilai harus berada dalam rentang yang dinormalisasi.
| Kolom | |
|---|---|
latitude |
Lintang dalam derajat. Harus dalam rentang [-90.0, +90.0]. |
longitude |
Bujur dalam derajat. Harus dalam rentang [-180.0, +180.0]. |