3 entity makeXonoticTextBox()
6 me = NEW(XonoticTextBox);
7 me.configureXonoticTextBox(me);
10 void XonoticTextBox_configureXonoticTextBox(entity me)
12 me.configureListBox(me, me.scrollbarWidth, 1); // item height gets set up later
14 void XonoticTextBox_setSelected(entity me, float i)
18 void XonoticTextBox_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
20 me.itemHeight = me.rowsPerItem * me.fontSize / absSize_y;
21 SUPER(XonoticTextBox).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
23 me.realFontSize_y = me.fontSize / (absSize_y * me.itemHeight);
24 me.realFontSize_x = me.fontSize / (absSize_x * (1 - me.controlWidth));
25 me.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
27 void XonoticTextBox_setText(entity me, string theText)
33 me.textbuf = buf_create();
34 string s = strzone(theText);
36 k = tokenizebyseparator(s, "\\n");
37 for(i = 0; i < k; ++i)
39 getWrappedLine_remaining = argv(i);
40 if(!getWrappedLine_remaining)
42 bufstr_add(me.textbuf, "", 1);
45 else while(getWrappedLine_remaining)
47 ts = getWrappedLine(1 - me.controlWidth, me.realFontSize, draw_TextWidth_WithColors);
50 bufstr_add(me.textbuf, ts, 1);
56 me.textbufSize = buf_getsize(me.textbuf);
58 void XonoticTextBox_destroy(entity me)
63 void XonoticTextBox_drawListBoxItem(entity me, int i, vector absSize, bool isSelected, bool isFocused)
65 if(me.textbufSize > 0)
66 draw_CenterText(me.realUpperMargin * eY + 0.5 * eX, bufstr_get(me.textbuf, i), me.realFontSize, '1 1 1', 1, me.allowColors);