/*! \param value Value to convert \param text String up to length char \param maxLen Maximal length of the string */ void AudioEffect::int2string (VstInt32 value, char* text, VstInt32 maxLen) { if (value >= 100000000) { vst_strncpy (text, "Huge!", maxLen); return; } if (value < 0) { vst_strncpy (text, "-", maxLen); value = -value; } else vst_strncpy (text, "", maxLen); bool state = false; for (VstInt32 div = 100000000; div >= 1; div /= 10) { VstInt32 digit = value / div; value -= digit * div; if (state || digit > 0) { char temp[2] = {'0' + (char)digit, '\0'}; vst_strncat (text, temp, maxLen); state = true; } } }
//----------------------------------------------------------------------------------------- bool VstXSynth::getOutputProperties (VstInt32 index, VstPinProperties* properties) { if (index < kNumOutputs) { vst_strncpy (properties->label, "Vstx ", 63); char temp[11] = {0}; int2string (index + 1, temp, 10); vst_strncat (properties->label, temp, 63); properties->flags = kVstPinIsActive; if (index < 2) properties->flags |= kVstPinIsStereo; // make channel 1+2 stereo return true; } return false; }
/*! \param value Value to convert \param text String up to length char \param maxLen Maximal length of the string */ void AudioEffect::float2string (float value, char* text, VstInt32 maxLen) { VstInt32 c = 0, neg = 0; char string[32]; char* s; double v, integ, i10, mantissa, m10, ten = 10.; v = (double)value; if (v < 0) { neg = 1; value = -value; v = -v; c++; if (v > 9999999.) { vst_strncpy (string, "Huge!", 31); return; } } else if (v > 99999999.) { vst_strncpy (string, "Huge!", 31); return; } s = string + 31; *s-- = 0; *s-- = '.'; c++; integ = floor (v); i10 = fmod (integ, ten); *s-- = (char)((VstInt32)i10 + '0'); integ /= ten; c++; while (integ >= 1. && c < 8) { i10 = fmod (integ, ten); *s-- = (char)((VstInt32)i10 + '0'); integ /= ten; c++; } if (neg) *s-- = '-'; vst_strncpy (text, s + 1, maxLen); if (c >= 8) return; s = string + 31; *s-- = 0; mantissa = fmod (v, 1.); mantissa *= pow (ten, (double)(8 - c)); while (c < 8) { if (mantissa <= 0) *s-- = '0'; else { m10 = fmod (mantissa, ten); *s-- = (char)((VstInt32)m10 + '0'); mantissa /= 10.; } c++; } vst_strncat (text, s + 1, maxLen); }