[mimgui] Что такое CalcWordWrapPositionA и с чем его едят?

Tema05

Известный
Автор темы
1,433
391
Версия MoonLoader
.026-beta
Помогите пожалуйста разобраться как работает CalcWordWrapPositionA. Я прекрасно использовал эту функцию в moonimgui, но в mimgui вообще непонятно как она работает. Взял в бх и немного сократил вот такой участок кода.
Lua:
local text = 'Тут типо текст'
text = ffi.new('char[?]', #text + 1, text)
local text_end = text + ffi.sizeof(text) - 1
imgui.TextUnformatted(text, imgui.GetFont():CalcWordWrapPositionA(1, text, text_end, 125))
Ну ок 1 и 2 строка вроде понятная - переводим текст в массив чаров зачем-то добавляет 1 к размеру, но вроде как так и должно быть.
На 3 строчку мозг тупо взрывается каким образом мы к строке в виде массива прибавляем число? Так ещё и на выходе получается та же строка в виде массива чаров но уже нечитаемая через ffi.string. И тут опять же не понятно зачем мы в этот раз наоборот отнимаем единичку от размера.
На 4 строчке в принципе всё понятно кроме того зачем нужен этот text_end. Также функция почему-то возвращает не обрезанный по размеру текст, а наоборот ту часть которая не влезает в размер 125 пикселей. В итоге приходится ещё из изначального текста убирать вот ту лишнюю часть которую вернула функция. А если я хочу использовать текст в другом месте, например drawlist, как мне быть?

Пытался смотреть принцип работы в исходнике на официальном аккаунте imgui и в 1 сообщении на бх, но как минимум вопрос что такое text_end и что он там содержит остаётся.