# frozen_string_literal: true
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/type/color.proto

require 'google/protobuf'

require 'google/protobuf/wrappers_pb'


descriptor_data = "\n\x17google/type/color.proto\x12\x0bgoogle.type\x1a\x1egoogle/protobuf/wrappers.proto\"]\n\x05\x43olor\x12\x0b\n\x03red\x18\x01 \x01(\x02\x12\r\n\x05green\x18\x02 \x01(\x02\x12\x0c\n\x04\x62lue\x18\x03 \x01(\x02\x12*\n\x05\x61lpha\x18\x04 \x01(\x0b\x32\x1b.google.protobuf.FloatValueB`\n\x0f\x63om.google.typeB\nColorProtoP\x01Z6google.golang.org/genproto/googleapis/type/color;color\xf8\x01\x01\xa2\x02\x03GTPb\x06proto3"

pool = Google::Protobuf::DescriptorPool.generated_pool

begin
  pool.add_serialized_file(descriptor_data)
rescue TypeError
  # Compatibility code: will be removed in the next major version.
  require 'google/protobuf/descriptor_pb'
  parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
  parsed.clear_dependency
  serialized = parsed.class.encode(parsed)
  file = pool.add_serialized_file(serialized)
  warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
  imports = [
    ["google.protobuf.FloatValue", "google/protobuf/wrappers.proto"],
  ]
  imports.each do |type_name, expected_filename|
    import_file = pool.lookup(type_name).file_descriptor
    if import_file.name != expected_filename
      warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
    end
  end
  warn "Each proto file must use a consistent fully-qualified name."
  warn "This will become an error in the next major version."
end

module Google
  module Type
    Color = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.type.Color").msgclass
  end
end

#### Source proto file: google/type/color.proto ####
#
# // Copyright 2024 Google LLC
# //
# // Licensed under the Apache License, Version 2.0 (the "License");
# // you may not use this file except in compliance with the License.
# // You may obtain a copy of the License at
# //
# //     http://www.apache.org/licenses/LICENSE-2.0
# //
# // Unless required by applicable law or agreed to in writing, software
# // distributed under the License is distributed on an "AS IS" BASIS,
# // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# // See the License for the specific language governing permissions and
# // limitations under the License.
#
# syntax = "proto3";
#
# package google.type;
#
# import "google/protobuf/wrappers.proto";
#
# option cc_enable_arenas = true;
# option go_package = "google.golang.org/genproto/googleapis/type/color;color";
# option java_multiple_files = true;
# option java_outer_classname = "ColorProto";
# option java_package = "com.google.type";
# option objc_class_prefix = "GTP";
#
# // 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.
# //
# // This reference page doesn't 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.
# //
# // When color equality needs to be decided, implementations, unless
# // documented otherwise, treat two colors as equal if all their red,
# // green, blue, and alpha values each differ by at most 1e-5.
# //
# // 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('');
# //     };
# //
# //     // ...
# message Color {
#   // The amount of red in the color as a value in the interval [0, 1].
#   float red = 1;
#
#   // The amount of green in the color as a value in the interval [0, 1].
#   float green = 2;
#
#   // The amount of blue in the color as a value in the interval [0, 1].
#   float blue = 3;
#
#   // 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 rendered as a solid color
#   // (as if the alpha value had been explicitly given a value of 1.0).
#   google.protobuf.FloatValue alpha = 4;
# }
