diff options
author | Nivesh Rajbhandari | 2012-04-16 16:06:24 -0700 |
---|---|---|
committer | Nivesh Rajbhandari | 2012-04-16 16:06:24 -0700 |
commit | c253192a08b499ea7be46fa5438d273e51f7ec5a (patch) | |
tree | 18a1f0e3679c0eb993a9dedb537035d3861f49ac /js/models/color-model.js | |
parent | e19376c54eedd1f1c457ba405b2f110be376a559 (diff) | |
parent | 4b900ea5cd6bb77eb30cec8c03b9ec9fa662c1e9 (diff) | |
download | ninja-c253192a08b499ea7be46fa5438d273e51f7ec5a.tar.gz |
Merge branch 'refs/heads/ninja-internal' into WebGLFixes
Diffstat (limited to 'js/models/color-model.js')
-rwxr-xr-x | js/models/color-model.js | 56 |
1 files changed, 46 insertions, 10 deletions
diff --git a/js/models/color-model.js b/js/models/color-model.js index 4189fbef..764feeb5 100755 --- a/js/models/color-model.js +++ b/js/models/color-model.js | |||
@@ -589,18 +589,54 @@ exports.ColorModel = Montage.create(Component, { | |||
589 | } | 589 | } |
590 | }, | 590 | }, |
591 | //////////////////////////////////////////////////////////////////// | 591 | //////////////////////////////////////////////////////////////////// |
592 | //Returns CSS string given a WebGL color array in [r, g, b, a] format where the values are [0,1] | 592 | //Returns a color object given a WebGL color array/object with gradient stops |
593 | webGlToCss: { | 593 | webGlToColor: { |
594 | enumerable: true, | 594 | enumerable: true, |
595 | value: function (color) { | 595 | value: function (c) { |
596 | if(color && (color.length === 4)) | 596 | if(c) { |
597 | { | 597 | if(c.gradientMode) { |
598 | return 'rgba(' + color[0]*255 + ', ' + color[1]*255 + ', ' + color[2]*255 + ', ' + color[3] +')'; | 598 | // Gradient |
599 | } | 599 | var i = 0, |
600 | else | 600 | len, |
601 | { | 601 | css, |
602 | return null; | 602 | stops = c.color, |
603 | gradient; | ||
604 | |||
605 | // Create the CSS string | ||
606 | if (c.gradientMode === 'radial') { | ||
607 | css = '-webkit-radial-gradient(center, ellipse cover'; | ||
608 | } else { | ||
609 | css = '-webkit-gradient(linear, left top, right top'; | ||
610 | } | ||
611 | |||
612 | //Sorting array (must be sorted for radial gradients, at least in Chrome | ||
613 | stops.sort(function(a,b){return a.position - b.position}); | ||
614 | //Looping through stops in gradient to create CSS | ||
615 | |||
616 | len = stops.length; | ||
617 | for (i=0; i < len; i++) { | ||
618 | //Adding to CSS String | ||
619 | if (c.gradientMode === 'radial' && stops[i].value) { | ||
620 | css += ', '+stops[i].value.css+' '+stops[i].position+'% '; | ||
621 | } else if (stops[i].value){ | ||
622 | css += ', color-stop('+stops[i].position+'%,'+stops[i].value.css+')'; | ||
623 | } | ||
624 | } | ||
625 | //Closing the CSS strings | ||
626 | css += ')'; | ||
627 | |||
628 | gradient = {stops: c.color, mode: c.gradientMode, gradientMode: c.gradientMode, css: css}; | ||
629 | return {mode: 'gradient', value: gradient, color: gradient}; | ||
630 | } else if(c.length === 4) { | ||
631 | // CSS | ||
632 | return this.application.ninja.colorController.getColorObjFromCss('rgba(' + c[0]*255 + ', ' | ||
633 | + c[1]*255 + ', ' | ||
634 | + c[2]*255 + ', ' | ||
635 | + c[3] +')'); | ||
636 | } | ||
603 | } | 637 | } |
638 | |||
639 | return null; | ||
604 | } | 640 | } |
605 | } | 641 | } |
606 | //////////////////////////////////////////////////////////////////// | 642 | //////////////////////////////////////////////////////////////////// |