Package google.type

색인

Color

RGBA 색상 공간의 색상을 나타냅니다. 이 표현은 간결성보다는 다양한 언어에서 색상 표현으로의 변환을 단순화하기 위해 설계되었습니다. 예를 들어 이 표현의 필드는 Java에서 java.awt.Color의 생성자에 쉽게 제공할 수 있습니다. 또한 iOS에서 UIColor의 +colorWithRed:green:blue:alpha 메서드에도 쉽게 제공할 수 있습니다. 또한 간단한 작업만으로 JavaScript에서 CSS rgba() 문자열로 형식을 쉽게 지정할 수 있습니다.

이 참조 페이지에는 RGB 값을 해석하는 데 사용해야 하는 절대 색공간(예: sRGB, Adobe RGB, DCI-P3, BT.2020)에 관한 정보가 없습니다. 기본적으로 애플리케이션은 sRGB 색공간을 가정해야 합니다.

색상 동등성을 결정해야 하는 경우 달리 문서화되지 않은 한 구현에서는 빨간색, 녹색, 파란색, 알파 값이 모두 각각 최대 1e-5까지 다른 경우 두 색상을 동일하게 취급합니다.

예시(자바):

 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;
}
// ...

예시(자바스크립트):

// ...

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

float

[0, 1] 간격의 값으로 표시되는 색상의 빨간색 양입니다.

green

float

[0, 1] 간격의 값으로 표시되는 색상의 녹색 양입니다.

blue

float

[0, 1] 간격의 값으로 표시되는 색상의 파란색 양입니다.

alpha

FloatValue

픽셀에 적용해야 하는 이 색상의 비율입니다. 즉, 최종 픽셀 색상은 등식으로 정의됩니다.

pixel color = alpha * (this color) + (1.0 - alpha) * (background color)

즉, 1.0 값은 단색에 해당하는 반면 0.0 값은 완전히 투명한 색상에 해당합니다. 이 옵션은 단순한 부동 소수점 스칼라 대신 래퍼 메시지를 사용하므로 기본값과 설정되지 않은 값을 구분할 수 있습니다. 생략하면 이 색상 객체는 단색으로 렌더링됩니다 (알파 값에 명시적으로 1.0 값이 지정된 것처럼).

간격

타임스탬프 시작 (포함) 및 타임스탬프 종료 (제외)로 인코딩된 시간 간격을 나타냅니다.

시작은 끝보다 작거나 같아야 합니다. 시작이 끝과 같은 경우 간격은 비어 있습니다 (시간 없음). 시작과 끝이 모두 지정되지 않으면 간격은 임의의 시간과 일치합니다.

필드
start_time

Timestamp

선택사항입니다. 포함된 간격 시작입니다.

지정된 경우 이 간격과 일치하는 타임스탬프는 시작 시간과 같거나 시작 이후여야 합니다.

end_time

Timestamp

선택사항입니다. 간격의 배타적 끝값입니다.

지정된 경우 이 간격과 일치하는 타임스탬프가 끝부분보다 이전이어야 합니다.

LatLng

위도/경도 쌍을 나타내는 객체로 위도(도)와 경도(도)를 나타내는 double의 쌍으로 표현됩니다. 달리 명시되지 않는 한 이 객체는 WGS84 표준을 준수해야 합니다. 값은 정규화된 범위 내에 있어야 합니다.

필드
latitude

double

위도입니다. 범위는 [-90.0, +90.0]입니다.

longitude

double

경도입니다. 범위는 [-180.0, +180.0]여야 합니다.