Package google.type

Indeks

Color

Mewakili warna dalam ruang warna RGBA. Representasi ini dirancang untuk kemudahan konversi ke dan dari representasi warna dalam berbagai bahasa dengan mengutamakan keringkasan. Misalnya, kolom representasi ini dapat dengan mudah diberikan ke konstruktor java.awt.Color di Java; kolom ini juga dapat diberikan dengan mudah ke metode +colorWithRed:green:blue:alpha UIColor di iOS; dan, hanya dengan sedikit usaha, kolom dapat dengan mudah diformat menjadi string rgba() CSS di JavaScript.

Halaman referensi ini tidak memiliki informasi tentang ruang warna mutlak yang harus digunakan untuk menafsirkan nilai RGB—misalnya, sRGB, Adobe RGB, DCI-P3, dan BT.2020. Secara default, aplikasi harus mengasumsikan ruang warna sRGB.

Saat kesetaraan warna perlu ditentukan, implementasinya, kecuali jika didokumentasikan lain, perlakukan dua warna sebagai sama jika semua nilai merah, hijau, biru, dan alfa masing-masing berbeda maksimal 1e-5.

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

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

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

// ...
Kolom
red

float

Jumlah merah dalam warna sebagai nilai dalam interval [0, 1].

green

float

Jumlah hijau dalam warna sebagai nilai dalam interval [0, 1].

blue

float

Jumlah biru dalam warna sebagai nilai dalam interval [0, 1].

alpha

FloatValue

Fraksi warna ini yang harus diterapkan ke piksel. Yaitu, warna piksel akhir ditentukan oleh persamaan:

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

Ini berarti bahwa nilai 1,0 berarti warna solid, sedangkan nilai 0,0 berarti warna yang sepenuhnya transparan. Kode ini menggunakan pesan wrapper, bukan skalar float sederhana sehingga memungkinkan untuk membedakan antara nilai default dan nilai yang tidak disetel. Jika dihilangkan, objek warna ini dirender sebagai warna solid (seolah-olah nilai alfa telah secara eksplisit diberi nilai 1,0).

Tanggal

Mewakili seluruh atau sebagian tanggal kalender, seperti ulang tahun. Waktu dan zona waktu ditentukan di tempat lain atau tidak signifikan. Tanggal tersebut relatif terhadap Kalender Gregorian. Ini dapat mewakili salah satu hal berikut:

  • Tanggal lengkap, dengan nilai tahun, bulan, dan hari bukan nol.
  • Bulan dan hari, dengan nol tahun (misalnya, hari jadi).
  • Satu tahun saja, dengan bulan nol dan hari nol.
  • Tahun dan bulan, dengan nol hari (misalnya, tanggal habis masa berlaku kartu kredit).

Jenis terkait:

Kolom
year

int32

Tahun dari tanggal. Harus dari 1 hingga 9999, atau 0 untuk menentukan tanggal tanpa tahun.

month

int32

Bulan dalam setahun. Harus dari 1 hingga 12, atau 0 untuk menentukan tahun tanpa bulan dan hari.

day

int32

Hari dalam sebulan. Harus dari 1 sampai 31 dan berlaku untuk tahun dan bulan, atau 0 untuk menentukan tahun saja atau tahun dan bulan jika hari dianggap tidak signifikan.

LatLng

Objek yang merepresentasikan pasangan garis lintang/bujur. Objek ini dinyatakan sebagai pasangan double untuk mewakili derajat lintang dan derajat bujur. Kecuali ditentukan lain, objek ini harus sesuai dengan standar WGS84. Nilai harus berada dalam rentang yang dinormalisasi.

Kolom
latitude

double

Lintang dalam derajat. Harus dalam rentang [-90.0, +90.0].

longitude

double

Bujur dalam derajat. Harus dalam rentang [-180.0, +180.0].