genproto: Index | Files

package color

import ""


Package Files



var File_google_type_color_proto protoreflect.FileDescriptor

type Color Uses

type Color struct {

    // The amount of red in the color as a value in the interval [0, 1].
    Red float32 `protobuf:"fixed32,1,opt,name=red,proto3" json:"red,omitempty"`
    // The amount of green in the color as a value in the interval [0, 1].
    Green float32 `protobuf:"fixed32,2,opt,name=green,proto3" json:"green,omitempty"`
    // The amount of blue in the color as a value in the interval [0, 1].
    Blue float32 `protobuf:"fixed32,3,opt,name=blue,proto3" json:"blue,omitempty"`
    // The fraction of this color that should be applied to the pixel. That is,
    // the final pixel color is defined by the equation:
    //   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
    // This means that a value of 1.0 corresponds to a solid color, whereas
    // a value of 0.0 corresponds to a completely transparent color. This
    // uses a wrapper message rather than a simple float scalar so that it is
    // possible to distinguish between a default value and the value being unset.
    // If omitted, this color object is to be rendered as a solid color
    // (as if the alpha value had been explicitly given with a value of 1.0).
    Alpha *wrappers.FloatValue `protobuf:"bytes,4,opt,name=alpha,proto3" json:"alpha,omitempty"`
    // contains filtered or unexported fields

Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to/from color representations in various languages over compactness; for example, the fields of this representation can be trivially provided to the constructor of "java.awt.Color" in Java; it can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" method in iOS; and, with just a little work, it can be easily formatted into a CSS "rgba()" string in JavaScript, as well.

Note: this proto does not carry information about the absolute color space that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB, DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color space.

Example (Java):


// ...
public static java.awt.Color fromProto(Color protocolor) {
  float alpha = protocolor.hasAlpha()
      ? protocolor.getAlpha().getValue()
      : 1.0;

  return new java.awt.Color(

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 =
          .setRed(red / denominator)
          .setGreen(green / denominator)
          .setBlue(blue / denominator);
  int alpha = color.getAlpha();
  if (alpha != 255) {
            .setValue(((float) alpha) / denominator)
// ...

Example (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;
   // ...

Example (JavaScript):

   // ...

   var protoToCssColor = function(rgb_color) {
      var redFrac = || 0.0;
      var greenFrac = || 0.0;
      var blueFrac = || 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++) {
     return resultBuilder.join('');

   // ...

func (*Color) Descriptor Uses

func (*Color) Descriptor() ([]byte, []int)

Deprecated: Use Color.ProtoReflect.Descriptor instead.

func (*Color) GetAlpha Uses

func (x *Color) GetAlpha() *wrappers.FloatValue

func (*Color) GetBlue Uses

func (x *Color) GetBlue() float32

func (*Color) GetGreen Uses

func (x *Color) GetGreen() float32

func (*Color) GetRed Uses

func (x *Color) GetRed() float32

func (*Color) ProtoMessage Uses

func (*Color) ProtoMessage()

func (*Color) ProtoReflect Uses

func (x *Color) ProtoReflect() protoreflect.Message

func (*Color) Reset Uses

func (x *Color) Reset()

func (*Color) String Uses

func (x *Color) String() string

Package color imports 6 packages (graph) and is imported by 9 packages. Updated 2020-06-12. Refresh now. Tools for package owners.