the suffering...xy to rgb? please

This commit is contained in:
lone-cloud 2015-09-25 16:48:48 -07:00
parent 1c19364b53
commit f61bd9124b
6 changed files with 62 additions and 27 deletions

View file

@ -65,7 +65,7 @@ export default Em.Component.extend({
// automatically close the group menu when the user clicks somewhere else
Em.$(document).click(function() {
if(self.get('groupControlDisplayed') && !event.target.classList.contains('group') && !Em.$(event.target).closest('#groupControls').length) {
if(self.get('groupControlDisplayed') && !event.target.classList.contains('group') && !Em.$(event.target).closest('#groupControls, #modal-overlays, .ember-modal-overlay').length) {
self.toggleProperty('groupControlDisplayed');
}

View file

@ -1,7 +1,6 @@
import Em from 'ember';
export default Em.Component.extend({
classNameBindings: ['groupControlDisplayed:on'],
classNames: ['innerControlFrame'],
elementId: 'groupControls',

View file

@ -30,7 +30,7 @@ export default Em.Component.extend({
didInsertElement: function() {
var self = this;
this.xyToRgb(0.5,0.5)
Em.$(document).click(function() {
if(self.get('colorPickerDisplayed') && !event.target.classList.contains('color') && !Em.$(event.target).closest('.colorpicker, .colorRow').length) {
self.toggleProperty('colorPickerDisplayed');
@ -235,24 +235,62 @@ export default Em.Component.extend({
},
xyToRgb: function(x, y){
var r, g, b, X, Y, Z, activeLights = this.get('activeLights'), lightsData = this.get('lightsData');
var r, g, b, X, Y = 1.0, Z;
Y = lightsData[activeLights[1]].state.bri;
X = ((Y / y) * x)/100;
Z = ((Y / y) * (1 - x - y))/100;
Y = Y/100;
X = (Y / y) * x;
Z = (Y / y) * (1 - x - y);
r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;
g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;
b = X * 0.0557 + Y * -0.2040 + Z * 1.0570;
r = X * 1.656492 - Y * 0.354851 - Z * 0.255038;
g = X * -0.707196 + Y * 1.655397 + Z * 0.036152;
b = X * 0.051713 - Y * 0.121364 + Z * 1.011530;
if (r > b && r > g && r > 1.0) {
// red is too big
g = g / r;
b = b / r;
r = 1.0;
} else if (g > b && g > r && g > 1.0) {
// green is too big
r = r / g;
b = b / g;
g = 1.0;
} else if (b > r && b > g && b > 1.0) {
// blue is too big
r = r / b;
g = g / b;
b = 1.0;
}
r = (r <= 0.0031308) ? 12.92 * r : 1.055 * Math.pow(r, (1.0 / 2.4)) - 0.055;
g = (g <= 0.0031308) ? 12.92 * g : 1.055 * Math.pow(g, (1.0 / 2.4)) - 0.055;
b = (b <= 0.0031308) ? 12.92 * b : 1.055 * Math.pow(b, (1.0 / 2.4)) - 0.055;
r = Math.floor(r * 255);
g = Math.floor(g * 255);
b = Math.floor(b * 255);
if (r > b && r > g) {
// red is biggest
if (r > 1.0) {
g = g / r;
b = b / r;
r = 1.0;
}
} else if (g > b && g > r) {
// green is biggest
if (g > 1.0) {
r = r / g;
b = b / g;
g = 1.0;
}
} else if (b > r && b > g) {
// blue is biggest
if (b > 1.0) {
r = r / b;
g = g / b;
b = 1.0;
}
}
r = r * 255;
g = g * 255;
b = b * 255;
return [r, g, b];
}

View file

@ -49,7 +49,7 @@ export default Em.Mixin.create({
threshold: 0.3,
decay: 0.02,
frequency: [0,5],
frequency: [0,10],
playQueuePointer: -1,
playQueue: Em.A(),

View file

@ -220,17 +220,12 @@ md-slider.md-default-theme .md-thumb:after {
}
#groupControls {
display: none;
box-shadow: 5px 10px 15px 5px rgba(0,0,0,.3);
border-radius: 0 0 5px 5px;
}
#groupControls.on {
width: 300px;
top: 20px;
right: 83px;
right: 0;
position: absolute;
display: block;
z-index: 2;
background-color: white;
max-height: 400px;

View file

@ -7,13 +7,16 @@
</div>
<div class="col-xs-3">
<span id="groupMenu" class="settingsItem groupMenu {{if groupControlDisplayed 'on'}}" {{action "toggleGroupControl" bubbles=false}}>
<span class="bootstrapTooltip" data-toggle="tooltip" data-placement="bottom auto" data-title="Light Groups">{{paper-icon icon="group"}}</span>
</span>
{{controls/group-control lightsData=lightsData groupsData=groupsData activeLights=activeLights apiURL=apiURL updateGroupsData=updateGroupsData groupControlDisplayed=groupControlDisplayed}}
<span id="groupMenu" class="settingsItem groupMenu {{if groupControlDisplayed 'on'}}">
<span class="bootstrapTooltip" data-toggle="tooltip" data-placement="bottom auto" data-title="Light Groups" {{action "toggleGroupControl"}}>{{paper-icon icon="group"}}</span>
<span id="appSettingsMenu" class="settingsItem {{if appSettingsDisplayed 'on'}}" {{action "toggleAppSettings"}}>
<span class="bootstrapTooltip" data-toggle="tooltip" data-placement="bottom auto" data-title="Application Settings">{{paper-icon icon="settings"}}</span>
{{#if groupControlDisplayed}}
{{controls/group-control lightsData=lightsData groupsData=groupsData activeLights=activeLights apiURL=apiURL updateGroupsData=updateGroupsData}}
{{/if}}
</span>
<span id="appSettingsMenu" class="settingsItem {{if appSettingsDisplayed 'on'}}">
<span class="bootstrapTooltip" data-toggle="tooltip" data-placement="bottom auto" data-title="Application Settings" {{action "toggleAppSettings"}}>{{paper-icon icon="settings"}}</span>
{{#if appSettingsDisplayed}}
<div id="appSettings">