Android Open Source - lifx-sdk-android L F X H S B K Color






From Project

Back to project page lifx-sdk-android.

License

The source code is released under:

MIT License

If you think the Android project lifx-sdk-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

//
//  LFXHSBKColor.java
//  LIFX//from ww w .  j a  v a  2s .c  o m
//
//  Created by Jarrod Boyes on 24/03/14.
//  Copyright (c) 2014 LIFX Labs. All rights reserved.
//

package lifx.java.android.entities;

public class LFXHSBKColor implements Cloneable
{
  private static final float MINIMUM_SATURATION = 0.0001f;
  
  private float hue;          // 0.0 - 360.0
  private float saturation;      // 0.0 - 1.0
  private float brightness;      // 0.0 - 1.0
  private int kelvin;          // 0 - 10,000
  
  private LFXHSBKColor()
  {
    this.hue = 0.0f;
    this.saturation = 0.0f;
    this.brightness = 1.0f;
    this.kelvin = 3500;
  }
  
  public float getHue()
  {
    return hue;
  }
  
  public float getSaturation()
  {
    return saturation;
  }
  
  public float getBrightness()
  {
    return brightness;
  }
  
  public int getKelvin()
  {
    return kelvin;
  }
  
  public static LFXHSBKColor getColor( float hue, float saturation, float brightness, int kelvin)
  {
    LFXHSBKColor color = new LFXHSBKColor();
    color.hue = hue;
    color.saturation = saturation;
    color.brightness = brightness;
    color.kelvin = kelvin;
    return color;
  }
  
  public boolean isWhite()    // Returns YES if saturation = 0.0;
  {
    if( saturation <= MINIMUM_SATURATION)
    {
      return true;
    }
    
    return false;
  }
  
  public String toString()    // "HSBK: (0.1, 0.4, 0.2, 5000)"
  {
    return "HSBK: (" + hue + ", " + saturation + ", " + brightness + ", " + kelvin + ")";
  }
  
  public static LFXHSBKColor averageOfColors( LFXHSBKColor[] colors)
  {
    if( colors.length == 0)
    {
      return null;
    }
    
    float hueXTotal = 0;
    float hueYTotal = 0;
    float saturationTotal = 0;
    float brightnessTotal = 0;
    long kelvinTotal = 0;
    
    for( LFXHSBKColor aColor : colors)
    {
      hueXTotal += Math.sin( aColor.hue * Math.PI / 180.0);
      hueYTotal += Math.cos( aColor.hue * Math.PI / 180.0);
      saturationTotal += aColor.saturation;
      brightnessTotal += aColor.brightness;
      
      if( aColor.kelvin == 0)
      {
        kelvinTotal += 3500;
      }
      else
      {
        kelvinTotal += aColor.kelvin;
      }
    }
    
    float M_1_PI = (float) (1.0f / Math.PI);
    
    float hue = (float) (Math.atan2( hueXTotal, hueYTotal) * 0.5 * M_1_PI);
    if (hue < 0.0) hue += 1.0;
    float saturation = saturationTotal / (float) colors.length;
    float brightness = brightnessTotal / (float) colors.length;
    int kelvin = (int) (kelvinTotal / colors.length);
    
    return LFXHSBKColor.getColor( hue, saturation, brightness, kelvin);
  }
  
  @Override
  protected Object clone() throws CloneNotSupportedException
  {
    LFXHSBKColor newColor = new LFXHSBKColor();
    newColor.hue = this.hue;
    newColor.saturation = this.saturation;
    newColor.brightness = this.brightness;
    newColor.kelvin = this.kelvin;
    return newColor;
  }

  public boolean equals( LFXHSBKColor aColor)
  {
    if( aColor == null)
    {
      return false;
    }
    
    if( aColor.hue != this.hue ||
      aColor.saturation != this.saturation ||
      aColor.brightness != this.brightness ||
      aColor.kelvin != this.kelvin) 
    {
      return false;
    }
    
    return true;
  }
}




Java Source Code List

com.example.lifx_sdk_samples.LFXSDKLightEditLabelActivity.java
com.example.lifx_sdk_samples.LFXSDKLightListAdapter.java
com.example.lifx_sdk_samples.LFXSDKLightPowerActivity.java
com.example.lifx_sdk_samples.LFXSDKLightRandomColorActivity.java
com.example.lifx_sdk_samples.LFXSDKSamplesActivity.java
com.example.lifx_sdk_samples.LFXSDKTaggedLightCollectionListAdapter.java
lifx.java.android.client.LFXClient.java
lifx.java.android.constant.LFXSDKConstants.java
lifx.java.android.entities.LFXHSBKColor.java
lifx.java.android.entities.LFXLightTarget.java
lifx.java.android.entities.LFXTypes.java
lifx.java.android.entities.internal.LFXBinaryPath.java
lifx.java.android.entities.internal.LFXBinaryTargetID.java
lifx.java.android.entities.internal.LFXBinaryTypes.java
lifx.java.android.entities.internal.LFXDeviceMapping.java
lifx.java.android.entities.internal.LFXGatewayDescriptor.java
lifx.java.android.entities.internal.LFXMessageObservationDescriptor.java
lifx.java.android.entities.internal.LFXMessage.java
lifx.java.android.entities.internal.LFXSiteID.java
lifx.java.android.entities.internal.LFXTagMapping.java
lifx.java.android.entities.internal.LFXTarget.java
lifx.java.android.entities.internal.structle.LxProtocolDevice.java
lifx.java.android.entities.internal.structle.LxProtocolLight.java
lifx.java.android.entities.internal.structle.LxProtocolSensor.java
lifx.java.android.entities.internal.structle.LxProtocolWan.java
lifx.java.android.entities.internal.structle.LxProtocolWifi.java
lifx.java.android.entities.internal.structle.LxProtocol.java
lifx.java.android.entities.internal.structle.Lx.java
lifx.java.android.entities.internal.structle.StructleTypes.java
lifx.java.android.internal.LFXWiFiObserver.java
lifx.java.android.light.LFXLightCollection.java
lifx.java.android.light.LFXLight.java
lifx.java.android.light.LFXTaggedLightCollection.java
lifx.java.android.light.internal.LFXAllLightsCollection.java
lifx.java.android.network_context.LFXNetworkContext.java
lifx.java.android.network_context.internal.routing_table.LFXRoutingTable.java
lifx.java.android.network_context.internal.transport_manager.LFXTransportManager.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXGatewayConnection.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXSocketGeneric.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXSocketTCP.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXSocketUDP.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXTCPGatewayConnection.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXUDPGatewayConnection.java
lifx.java.android.network_context.internal.transport_manager.lan.LFXLANTransportManager.java
lifx.java.android.network_context.internal.transport_manager.lan.gateway_discovery.LFXGatewayDiscoveryController.java
lifx.java.android.network_context.internal.transport_manager.lan.gateway_discovery.LFXGatewayDiscoveryTableEntry.java
lifx.java.android.util.LFXByteUtils.java
lifx.java.android.util.LFXLog.java
lifx.java.android.util.LFXNetworkUtils.java
lifx.java.android.util.LFXTimerUtils.java