@ -6369,16 +6369,16 @@ static bool DataTypeApplyOpFromText(const char* buf, const char* initial_value_b
scalar_format = " %d " ;
int * v = ( int * ) data_ptr ;
const int old_v = * v ;
int arg0 = * v ;
if ( op & & sscanf ( initial_value_buf , scalar_format , & arg0 ) < 1 )
int arg0 i = * v ;
if ( op & & sscanf ( initial_value_buf , scalar_format , & arg0 i ) < 1 )
return false ;
// Store operand in a float so we can use fractional value for multipliers (*1.1), but constant always parsed as integer so we can fit big integers (e.g. 2000000003) past float precision
float arg1 = 0.0f ;
if ( op = = ' + ' ) { if ( sscanf ( buf , " %f " , & arg1 ) = = 1 ) * v = ( int ) ( arg0 + arg1 ) ; } // Add (use "+-" to subtract)
else if ( op = = ' * ' ) { if ( sscanf ( buf , " %f " , & arg1 ) = = 1 ) * v = ( int ) ( arg0 * arg1 ) ; } // Multiply
else if ( op = = ' / ' ) { if ( sscanf ( buf , " %f " , & arg1 ) = = 1 & & arg1 ! = 0.0f ) * v = ( int ) ( arg0 / arg1 ) ; } // Divide
else { if ( sscanf ( buf , scalar_format , & arg0 ) = = 1 ) * v = arg0 ; } // Assign constant
float arg1 f = 0.0f ;
if ( op = = ' + ' ) { if ( sscanf ( buf , " %f " , & arg1 f ) = = 1 ) * v = ( int ) ( arg0 i + arg1 f ) ; } // Add (use "+-" to subtract)
else if ( op = = ' * ' ) { if ( sscanf ( buf , " %f " , & arg1 f ) = = 1 ) * v = ( int ) ( arg0 i * arg1 f ) ; } // Multiply
else if ( op = = ' / ' ) { if ( sscanf ( buf , " %f " , & arg1 f ) = = 1 & & arg1 f ! = 0.0f ) * v = ( int ) ( arg0 i / arg1 f ) ; } // Divide
else { if ( sscanf ( buf , scalar_format , & arg0 i ) = = 1 ) * v = arg0 i ; } // Assign constant (read as integer so big values are not lossy)
return ( old_v ! = * v ) ;
}
else if ( data_type = = ImGuiDataType_Float )
@ -6387,17 +6387,17 @@ static bool DataTypeApplyOpFromText(const char* buf, const char* initial_value_b
scalar_format = " %f " ;
float * v = ( float * ) data_ptr ;
const float old_v = * v ;
float arg0 = * v ;
if ( op & & sscanf ( initial_value_buf , scalar_format , & arg0 ) < 1 )
float arg0 f = * v ;
if ( op & & sscanf ( initial_value_buf , scalar_format , & arg0 f ) < 1 )
return false ;
float arg1 = 0.0f ;
if ( sscanf ( buf , scalar_format , & arg1 ) < 1 )
float arg1 f = 0.0f ;
if ( sscanf ( buf , scalar_format , & arg1 f ) < 1 )
return false ;
if ( op = = ' + ' ) { * v = arg0 + arg1 ; } // Add (use "+-" to subtract)
else if ( op = = ' * ' ) { * v = arg0 * arg1 ; } // Multiply
else if ( op = = ' / ' ) { if ( arg1 ! = 0.0f ) * v = arg0 / arg1 ; } // Divide
else { * v = arg1 ; } // Assign constant
if ( op = = ' + ' ) { * v = arg0 f + arg1 f ; } // Add (use "+-" to subtract)
else if ( op = = ' * ' ) { * v = arg0 f * arg1 f ; } // Multiply
else if ( op = = ' / ' ) { if ( arg1 f ! = 0.0f ) * v = arg0 f / arg1 f ; } // Divide
else { * v = arg1 f ; } // Assign constant
return ( old_v ! = * v ) ;
}