66define ( function ( require ) {
77
88 var p5 = require ( 'core' ) ;
9+ var color_utils = require ( 'utils.color_utils' ) ;
910 var constants = require ( 'constants' ) ;
1011
1112 /**
@@ -19,10 +20,10 @@ define(function(require) {
1920
2021 if ( pInst . _colorMode === constants . HSB ) {
2122 this . hsba = this . color_array ;
22- this . rgba = p5 . ColorUtils . _hsbToRGB ( this . color_array ) ;
23+ this . rgba = color_utils . hsbaToRGBA ( this . hsba ) ;
2324 } else {
2425 this . rgba = this . color_array ;
25- this . hsba = p5 . ColorUtils . _rgbaToHSBA ( this . color_array ) ;
26+ this . hsba = color_utils . rgbaToHSBA ( this . rgba ) ;
2627 }
2728
2829 return this ;
@@ -123,116 +124,5 @@ define(function(require) {
123124 ] ;
124125 } ;
125126
126-
127- p5 . ColorUtils = { } ;
128-
129- p5 . ColorUtils . _hsbToRGB = function ( hsba ) {
130- var h = hsba [ 0 ] ;
131- var s = hsba [ 1 ] ;
132- var v = hsba [ 2 ] ;
133- h /= 255 ;
134- s /= 255 ;
135- v /= 255 ;
136- // Adapted from http://www.easyrgb.com/math.html
137- // hsv values = 0 - 1, rgb values = 0 - 255
138- var RGBA = [ ] ;
139- if ( s === 0 ) {
140- RGBA = [ Math . round ( v * 255 ) , Math . round ( v * 255 ) , Math . round ( v * 255 ) , hsba [ 3 ] ] ;
141- } else {
142- // h must be < 1
143- var var_h = h * 6 ;
144- if ( var_h === 6 ) {
145- var_h = 0 ;
146- }
147- //Or ... var_i = floor( var_h )
148- var var_i = Math . floor ( var_h ) ;
149- var var_1 = v * ( 1 - s ) ;
150- var var_2 = v * ( 1 - s * ( var_h - var_i ) ) ;
151- var var_3 = v * ( 1 - s * ( 1 - ( var_h - var_i ) ) ) ;
152- var var_r ;
153- var var_g ;
154- var var_b ;
155- if ( var_i === 0 ) {
156- var_r = v ;
157- var_g = var_3 ;
158- var_b = var_1 ;
159- } else if ( var_i === 1 ) {
160- var_r = var_2 ;
161- var_g = v ;
162- var_b = var_1 ;
163- } else if ( var_i === 2 ) {
164- var_r = var_1 ;
165- var_g = v ;
166- var_b = var_3 ;
167- } else if ( var_i === 3 ) {
168- var_r = var_1 ;
169- var_g = var_2 ;
170- var_b = v ;
171- } else if ( var_i === 4 ) {
172- var_r = var_3 ;
173- var_g = var_1 ;
174- var_b = v ;
175- } else {
176- var_r = v ;
177- var_g = var_1 ;
178- var_b = var_2 ;
179- }
180- RGBA = [
181- Math . round ( var_r * 255 ) ,
182- Math . round ( var_g * 255 ) ,
183- Math . round ( var_b * 255 ) ,
184- hsba [ 3 ]
185- ] ;
186- }
187- return RGBA ;
188- } ;
189-
190- p5 . ColorUtils . _rgbaToHSBA = function ( rgba ) {
191- var var_R = rgba [ 0 ] / 255 ;
192- var var_G = rgba [ 1 ] / 255 ;
193- var var_B = rgba [ 2 ] / 255 ;
194-
195- var var_Min = Math . min ( var_R , var_G , var_B ) ; //Min. value of RGB
196- var var_Max = Math . max ( var_R , var_G , var_B ) ; //Max. value of RGB
197- var del_Max = var_Max - var_Min ; //Delta RGB value
198-
199- var H ;
200- var S ;
201- var V = var_Max ;
202-
203- if ( del_Max === 0 ) { //This is a gray, no chroma...
204- H = 0 ; //HSV results from 0 to 1
205- S = 0 ;
206- }
207- else { //Chromatic data...
208- S = del_Max / var_Max ;
209-
210- var del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max ;
211- var del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max ;
212- var del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max ;
213-
214- if ( var_R === var_Max ) {
215- H = del_B - del_G ;
216- } else if ( var_G === var_Max ) {
217- H = 1 / 3 + del_R - del_B ;
218- } else if ( var_B === var_Max ) {
219- H = 2 / 3 + del_G - del_R ;
220- }
221-
222- if ( H < 0 ) {
223- H += 1 ;
224- }
225- if ( H > 1 ) {
226- H -= 1 ;
227- }
228- }
229- return [
230- Math . round ( H * 255 ) ,
231- Math . round ( S * 255 ) ,
232- Math . round ( V * 255 ) ,
233- rgba [ 3 ]
234- ] ;
235- } ;
236-
237127 return p5 . Color ;
238128} ) ;
0 commit comments