الفهرس
اللون
يمثل لونًا في مساحة ألوان RGBA. تم تصميم هذا التمثيل لتبسيط عملية التحويل من وإلى تمثيلات الألوان بلغات مختلفة على مدى الاكتفاء. على سبيل المثال، يمكن تقديم حقول هذا التمثيل بشكل بسيط إلى الدالة الإنشائية java.awt.Color
في Java؛ يمكن أيضًا تقديمه بطريقة تافهة لطريقة +colorWithRed:green:blue:alpha
في UIColor على نظام iOS؛ ومن خلال القليل من العمل، يمكن تنسيقه بسهولة إلى سلسلة CSS rgba()
في JavaScript.
لا تحتوي هذه الصفحة المرجعية على معلومات عن مساحة اللون المطلقة التي يجب استخدامها لتفسير قيمة النموذج اللوني أحمر أخضر أزرق، على سبيل المثال، sRGB وAdobe RGB وDCI-P3 وBT.2020. وبشكل تلقائي، يجب أن تفترض التطبيقات مساحة اللون sRGB.
عندما يلزم تحديد مساواة الألوان، تنطبق عمليات التنفيذ، ما لم يوثق خلاف ذلك، على اعتبار لونين متساويين إذا كانت جميع قيم الأحمر والأخضر والأزرق وألفا تختلف على الأكثر 1e-5
.
مثال (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();
}
// ...
مثال (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;
}
// ...
مثال (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('');
};
// ...
الحقول | |
---|---|
red |
مقدار اللون الأحمر في اللون كقيمة في الفاصل [0, 1]. |
green |
مقدار اللون الأخضر في اللون كقيمة في الفاصل [0, 1]. |
blue |
مقدار اللون الأزرق في اللون كقيمة في الفاصل [0, 1]. |
alpha |
الجزء من هذا اللون الذي يجب تطبيقه على البكسل. أي أن لون البكسل النهائي يتم تحديده من خلال المعادلة:
وهذا يعني أن القيمة 1.0 تتجاوب مع لون خالص، في حين تتجاوب القيمة 0.0 مع لون شفاف تمامًا. يستخدم ذلك رسالة تضمين بدلاً من عدد قياسي عائم بسيط بحيث يمكن التمييز بين القيمة التلقائية والقيمة التي يتم إلغاء تعيينها. وعند إسقاطه، يتم عرض كائن اللون هذا كلون ثابت (كما لو تم إعطاء قيمة ألفا بوضوح قيمة 1.0). |
التاريخ
يمثل تاريخ تقويم كاملاً أو جزئيًا، مثل عيد الميلاد. تم تحديد الوقت من اليوم والمنطقة الزمنية في مكان آخر أو غير مهمين. يرتبط التاريخ بالتقويم الميلادي. يمكن أن يمثل ذلك أيًا مما يلي:
- تاريخ كامل، بقيم غير صفرية للسنة والشهر واليوم.
- شهر ويوم، بسنة صفرية (على سبيل المثال، ذكرى سنوية).
- سنة بمفردها، بشهر صفري ويوم صفري.
- سنة وشهر بيوم صفري (على سبيل المثال، تاريخ انتهاء صلاحية بطاقة الائتمان).
الأنواع ذات الصلة:
google.type.TimeOfDay
google.type.DateTime
google.protobuf.Timestamp
الحقول | |
---|---|
year |
السنة من التاريخ. يجب أن تتراوح القيمة من 1 إلى 9999، أو 0 لتحديد تاريخ بدون سنة. |
month |
شهر من السنة. يجب أن تتراوح القيمة من 1 إلى 12، أو 0 لتحديد سنة بدون شهر ويوم. |
day |
يوم من الشهر. يجب أن تتراوح القيمة من 1 إلى 31 وأن تكون صالحة للسنة والشهر، أو 0 لتحديد عام في حد ذاته أو تحديد سنة وشهر حيث لا يكون اليوم مهمًا. |
LatLng
كائن يمثّل زوجًا من خط العرض/الطول ويتم التعبير عن ذلك في صورة زوج من الزوجين لتمثيل درجات الطول والعرض والدرجات. يجب أن يتوافق هذا العنصر مع معيار WGS84 ما لم يُذكر خلاف ذلك. يجب أن تكون القيم ضمن النطاقات التي تمت تسويتها.
الحقول | |
---|---|
latitude |
خط العرض بالدرجات. يجب أن يكون في النطاق [ -90.0، +90.0]. |
longitude |
خط الطول بالدرجات. يجب أن يكون في النطاق [ -180.0، +180.0]. |