Dizin
Renk
RGBA renk alanındaki bir rengi temsil eder. Bu temsil, kompaktlık yerine çeşitli dillerdeki renk temsillerine geçişin basit olması için tasarlanmıştır. Örneğin, bu temsilin alanları Java'daki java.awt.Color
oluşturucuya basit bir şekilde sağlanabilir; ayrıca iOS'teki UIColor'ın +colorWithRed:green:blue:alpha
yöntemine önemsiz bir şekilde sağlanabilir ve sadece küçük bir çalışmayla JavaScript'te bir CSS rgba()
dizesine kolayca dönüştürülebilir.
Bu referans sayfasında, RGB değerini yorumlamak için kullanılması gereken mutlak renk alanı hakkında bilgi yoktur (ör. sRGB, Adobe RGB, DCI-P3 ve BT.2020). Uygulamalarda varsayılan olarak sRGB renk alanı kullanılmalıdır.
Renk eşitliğinin belirlenmesi gerektiğinde, aksi belirtilmediği sürece tüm kırmızı, yeşil, mavi ve alfa değerleri arasında en fazla 1e-5
fark olması durumunda, uygulamalarda iki renk eşit olarak ele alınır.
Örnek (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();
}
// ...
Örnek (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;
}
// ...
Örnek (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('');
};
// ...
Alanlar | |
---|---|
red |
[0, 1] aralığındaki bir değer olarak renkteki kırmızı miktarı. |
green |
[0, 1] aralığındaki bir değer olarak renkteki yeşil miktarı. |
blue |
[0, 1] aralığındaki bir değer olarak renkteki mavi miktarı. |
alpha |
Bu rengin piksele uygulanması gereken oranı. Yani, nihai piksel rengi şu denklemle tanımlanır:
Bu, 1,0 değerinin düz bir renge, 0,0 değerinin ise tamamen şeffaf bir renge karşılık geldiği anlamına gelir. Bu yöntemde basit bir kayan skaler yerine sarmalayıcı mesajı kullanılır, böylece varsayılan değer ile ayarlanmamış olan değer birbirinden ayırt edilebilir. Atlanırsa, bu renk nesnesi düz renk olarak oluşturulur (alfa değerine açık bir şekilde 1,0 değeri verilmiş gibi). |
Tarih
Takvim tarihinin tamamını veya bir kısmını (ör. doğum günü) temsil eder. Günün saati ve saat dilimi, başka bir yerde belirtilmiş veya önemsiz. Tarih, Miladi Takvim ile görecelidir. Aşağıdakilerden birini gösterebilir:
- Sıfır olmayan yıl, ay ve gün değerleriyle tam tarih.
- Sıfır yıllı bir ay ve gün (örneğin, yıl dönümü).
- Tek başına bir yıl (sıfır ay ve sıfır gün).
- Sıfır gün içeren bir yıl ve ay (örneğin, kredi kartı son kullanma tarihi).
İlgili türler:
google.type.TimeOfDay
google.type.DateTime
google.protobuf.Timestamp
Alanlar | |
---|---|
year |
Tarihin yılı. 1 ile 9999 arasında veya yıl içermeyen bir tarih belirtmek için 0 olmalıdır. |
month |
Yılın ayı. 1 ile 12 arasında veya ay ve gün olmadan bir yıl belirtmek için 0 olmalıdır. |
day |
Ayın günü. 1 ile 31 arasında olup yıl ve ay için geçerli olmalıdır veya tek başına yıl ya da günün önemli olmadığı yıl ve ay belirtmek için 0 olmalıdır. |
LatLng
Enlem/boylam çiftini temsil eden bir nesne. Bu, enlem ve boylam derecelerini temsil eden bir çift çiftle ifade edilir. Aksi belirtilmedikçe bu nesne WGS84 standardına uygun olmalıdır. Değerler normalleştirilmiş aralıklar içinde olmalıdır.
Alanlar | |
---|---|
latitude |
Derece cinsinden enlem. [-90.0, +90.0] aralığında olmalıdır. |
longitude |
Derece cinsinden boylam. [-180.0, +180.0] aralığında olmalıdır. |