#define ImFloorStd(X) floorf(X) // We already uses our own ImFloor() { return (float)(int)v } internally so the standard one wrapper is named differently (it's used by e.g. stb_truetype)
#define ImCeil(X) ceilf(X)
staticinlinefloatImPow(floatx,floaty){returnpowf(x,y);}// DragBehaviorT/SliderBehaviorT uses ImPow with either float/double and need the precision
staticinlinefloatImFloorStd(floatx){returnfloorf(x);}// we already uses our own ImFloor() { return (float)(int)v } internally so the standard one wrapper is named differently (it's used by stb_truetype)
staticinlinefloatImCeil(floatx){returnceilf(x);}
#endif
#endif
// - ImMin/ImMax/ImClamp/ImLerp/ImSwap are used by widgets which support for variety of types: signed/unsigned int/long long float/double
// - ImMin/ImMax/ImClamp/ImLerp/ImSwap are used by widgets which support variety of types: signed/unsigned int/long long float/double
// (Exceptionally using templates here but we could also redefine them for variety of types)
// (Exceptionally using templates here but we could also redefine them for those types)