@@ -34,21 +34,24 @@ static char *date_mN_table[] = TABLE_MONTH_FULL;
3434#define BIN_LEN 32 // Number of max bits (digits) kwBIN creates
3535
3636/*
37+ * Clamp floating point number and convert to integer
38+ * x: number, l: lower bound, h: upper bound
3739 */
3840var_int_t r2int (var_num_t x , var_int_t l , var_int_t h ) {
3941 var_int_t nx ;
40-
42+
4143 if (x < 0.0 ) {
42- nx = (var_int_t ) - floor ( - x + .5 );
44+ nx = (var_int_t ) ( x - .5 );
4345 } else {
44- nx = (var_int_t ) floor (x + .5 );
46+ nx = (var_int_t ) (x + .5 );
4547 }
4648
4749 if (nx < l ) {
4850 nx = l ;
4951 } else if (nx > h ) {
5052 nx = h ;
5153 }
54+
5255 return nx ;
5356}
5457
@@ -1935,37 +1938,22 @@ void cmd_intN(long funcCode, var_t *r) {
19351938 // i <- RGB(r,g,b)
19361939 // i <- RGBF(r,g,b)
19371940 case kwRGB :
1938- case kwRGBF : {
1941+ case kwRGBF :
19391942 var_num_t rc , gc , bc ;
1940- int code ;
19411943
19421944 par_massget ("FFF" , & rc , & gc , & bc );
19431945 IF_ERR_RETURN ;
1944- code = 0 ;
1945- if (funcCode == kwRGBF ) {
1946- if ((rc >= 0 && rc <= 1 ) && (gc >= 0 && gc <= 1 ) && (bc >= 0 && bc <= 1 )) {
1947- code = 1 ;
1948- }
1949- } else {
1950- if ((rc >= 0 && rc <= 255 ) && (gc >= 0 && gc <= 255 ) && (bc >= 0 && bc <= 255 )) {
1951- code = 2 ;
1952- }
1953- }
19541946
1955- switch (code ) {
1956- case 1 :
1957- r -> v .i = (r2int (rc * 255.0 , 0 , 255 ) << 16 ) | (r2int (gc * 255.0 , 0 , 255 ) << 8 )
1958- | r2int (bc * 255.0 , 0 , 255 );
1947+ switch (funcCode ) {
1948+ case kwRGB :
1949+ r -> v .i = (r2int (rc , 0 , 255 ) << 16 ) | (r2int (gc , 0 , 255 ) << 8 ) | r2int (bc , 0 , 255 );
19591950 break ;
1960- case 2 :
1961- r -> v .i = (( uint32_t ) rc << 16 ) | (( uint32_t ) gc << 8 ) | ( uint32_t ) bc ;
1951+ case kwRGBF :
1952+ r -> v .i = (r2int ( rc * 255.0 , 0 , 255 ) << 16 ) | (r2int ( gc * 255.0 , 0 , 255 ) << 8 ) | r2int ( bc * 255.0 , 0 , 255 ) ;
19621953 break ;
1963- default :
1964- err_argerr ();
19651954 }
1966-
1955+
19671956 r -> v .i = - r -> v .i ;
1968- }
19691957 break ;
19701958
19711959 default :
0 commit comments