Chỉ mục
Màu
Đại diện cho một màu trong hệ màu RGBA. Cách trình bày này được thiết kế để đơn giản hoá việc chuyển đổi sang và từ các bản trình bày màu sắc bằng nhiều ngôn ngữ khác nhau sao cho gọn nhẹ. Ví dụ: các trường của biểu diễn này có thể được cung cấp một cách đơn giản cho hàm khởi tạo của java.awt.Color
trong Java; nó cũng có thể được cung cấp một cách đơn giản cho phương thức +colorWithRed:green:blue:alpha
của UIColor trong iOS; và chỉ cần thực hiện một chút thao tác, bạn có thể dễ dàng định dạng đoạn mã này thành chuỗi CSS rgba()
trong JavaScript.
Trang tham khảo này không có thông tin về hệ màu tuyệt đối cần dùng để diễn giải giá trị RGB – ví dụ: sRGB, Adobe RGB, DCI-P3 và BT.2020. Theo mặc định, các ứng dụng sẽ giả định hệ màu sRGB.
Khi cần quyết định sự cân bằng về màu sắc, quá trình triển khai sẽ coi 2 màu là bằng nhau nếu tất cả các giá trị màu đỏ, xanh lục, xanh dương và alpha chênh lệch nhau tối đa là 1e-5
.
Ví dụ (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();
}
// ...
Ví dụ (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;
}
// ...
Ví dụ (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('');
};
// ...
Trường | |
---|---|
red |
Lượng màu đỏ trong màu dưới dạng một giá trị trong khoảng [0, 1]. |
green |
Lượng màu xanh lục trong màu dưới dạng một giá trị trong khoảng [0, 1]. |
blue |
Lượng màu xanh dương trong màu dưới dạng một giá trị trong khoảng [0, 1]. |
alpha |
Tỷ lệ của màu này sẽ được áp dụng cho điểm ảnh. Tức là màu pixel cuối cùng được xác định theo phương trình:
Điều này có nghĩa là giá trị 1.0 tương ứng với một màu đồng nhất, trong khi giá trị 0.0 tương ứng với một màu hoàn toàn trong suốt. Tính năng này sử dụng một thông báo trình bao bọc thay vì một đại lượng vô hướng số thực đơn giản để có thể phân biệt giữa giá trị mặc định và giá trị chưa được đặt. Nếu bạn bỏ qua, đối tượng màu này sẽ hiển thị dưới dạng một màu đồng nhất (như thể giá trị alpha đã được cung cấp rõ ràng giá trị là 1.0). |
Ngày
Đại diện cho toàn bộ hoặc một phần ngày theo lịch, chẳng hạn như ngày sinh nhật. Thời gian trong ngày và múi giờ được chỉ định ở nơi khác hoặc không đáng kể. Ngày này có liên quan đến Lịch Gregory. Thông tin này có thể là một trong những trường hợp sau:
- Ngày đầy đủ, với các giá trị năm, tháng và ngày khác 0.
- Tháng và ngày, thể hiện giá trị năm 0 (ví dụ: ngày kỷ niệm).
- Một năm riêng biệt, tháng không tháng và ngày không tháng.
- Năm và tháng, không có ngày (ví dụ: ngày hết hạn thẻ tín dụng).
Các loại có liên quan:
google.type.TimeOfDay
google.type.DateTime
google.protobuf.Timestamp
Trường | |
---|---|
year |
Năm của ngày. Giá trị phải từ 1 đến 9999 hoặc bằng 0 để chỉ định ngày không có năm. |
month |
Tháng trong năm. Giá trị phải từ 1 đến 12 hoặc bằng 0 để chỉ định một năm không có tháng và ngày. |
day |
Ngày trong tháng. Phải có giá trị từ 1 đến 31 và có giá trị hợp lệ trong năm và tháng, hoặc bằng 0 để chỉ định một năm độc lập hoặc là một năm và tháng mà ngày không quan trọng. |
LatLng
Đối tượng đại diện cho cặp vĩ độ/kinh độ. Giá trị này được biểu thị bằng cặp số đại diện cho vĩ độ và độ kinh độ. Trừ phi có quy định khác, đối tượng này phải tuân thủ tiêu chuẩn WGS84. Giá trị phải nằm trong phạm vi chuẩn hoá.
Trường | |
---|---|
latitude |
Vĩ độ tính bằng độ. Giá trị này phải nằm trong khoảng [-90.0, +90.0]. |
longitude |
Kinh độ tính bằng độ. Giá trị này phải nằm trong khoảng [-180.0, +180.0]. |