color

package
v1.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 11, 2020 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidLengthColor        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowColor          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupColor = fmt.Errorf("proto: unexpected end of group")
)

Functions

This section is empty.

Types

type Color

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                *types.FloatValue `protobuf:"bytes,4,opt,name=alpha,proto3" json:"alpha,omitempty"`
	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
	XXX_unrecognized     []byte            `json:"-"`
	XXX_sizecache        int32             `json:"-"`
}

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):

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

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 = 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('');
   };

   // ...

func NewPopulatedColor

func NewPopulatedColor(r randyColor, easy bool) *Color

func (*Color) Compare

func (this *Color) Compare(that interface{}) int

func (*Color) Descriptor

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

func (*Color) Equal

func (this *Color) Equal(that interface{}) bool

func (*Color) GetAlpha

func (m *Color) GetAlpha() *types.FloatValue

func (*Color) GetBlue

func (m *Color) GetBlue() float32

func (*Color) GetGreen

func (m *Color) GetGreen() float32

func (*Color) GetRed

func (m *Color) GetRed() float32

func (*Color) GoString

func (this *Color) GoString() string

func (*Color) Marshal

func (m *Color) Marshal() (dAtA []byte, err error)

func (*Color) MarshalTo

func (m *Color) MarshalTo(dAtA []byte) (int, error)

func (*Color) MarshalToSizedBuffer

func (m *Color) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Color) ProtoMessage

func (*Color) ProtoMessage()

func (*Color) Reset

func (m *Color) Reset()

func (*Color) Size

func (m *Color) Size() (n int)

func (*Color) String

func (this *Color) String() string

func (*Color) Unmarshal

func (m *Color) Unmarshal(dAtA []byte) error

func (*Color) XXX_DiscardUnknown

func (m *Color) XXX_DiscardUnknown()

func (*Color) XXX_Marshal

func (m *Color) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Color) XXX_Merge

func (m *Color) XXX_Merge(src proto.Message)

func (*Color) XXX_MessageName

func (*Color) XXX_MessageName() string

func (*Color) XXX_Size

func (m *Color) XXX_Size() int

func (*Color) XXX_Unmarshal

func (m *Color) XXX_Unmarshal(b []byte) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL