103 for (linep =
st->text->lines.first; linep; linep = linep->
next) {
104 txt_format_line(
st, linep, 0);
112 switch (formatchar) {
187 max =
st->runtime.cwidth_px ? (winx -
x) /
st->runtime.cwidth_px : 0;
196 int i, j, start, end,
max, chop;
213 while (i > 0 && linep) {
217 if (linep == linein) {
229 (*offl) += lines - 1;
248 chars =
st->tabnumber - i %
st->tabnumber;
249 if (linep == linein && i < cursin) {
259 if (i + columns - start >
max) {
262 if (chop && linep == linein && i >= cursin) {
265 *offc -= end - start;
272 *offc -= end - start;
278 else if (
ELEM(ch,
' ',
'-')) {
281 if (linep == linein && i >= cursin) {
288 if (linep == linein) {
298 int i, j, start, end, chars,
max, chop;
322 ch = linein->
line[j];
324 chars =
st->tabnumber - i %
st->tabnumber;
335 if (i + columns - start >
max) {
338 if (chop && i >= cursin) {
341 *offc -= end - start;
348 *offc -= end - start;
354 else if (
ELEM(ch,
' ',
'-')) {
371 if (line[i] ==
'\t') {
372 a +=
st->tabnumber -
a %
st->tabnumber;
381 static const char *txt_utf8_forward_columns(
const char *
str,
int columns,
int *
padding)
387 if (columns -
col < 0) {
417 int mi, ma, mstart, mend;
418 char fmt_prev = 0xff;
420 const int clip_min_y = -(int)(
st->runtime.lheight_px - 1);
424 max =
w /
st->runtime.cwidth_px;
438 if (i + columns > end) {
454 for (
a = fstart, ma = mstart; ma < mend;
a++) {
473 if (
y <= clip_min_y) {
477 else if (
ELEM(
str[mi],
' ',
'-')) {
484 for (
a = fstart, ma = mstart;
str[ma] &&
y > clip_min_y;
a++) {
513 const char *in =
NULL;
529 if (maxwidth &&
w + columns > cshift + maxwidth) {
546 int a, str_shift = 0;
547 char fmt_prev = 0xff;
549 for (
a = 0;
a < amount;
a++) {
571 typedef struct DrawCache {
573 int total_lines, nlines;
576 int winx, wordwrap, showlinenrs, tabnumber;
583 int valid_head, valid_tail;
588 DrawCache *drawcache =
MEM_callocN(
sizeof(DrawCache),
"text draw cache");
590 drawcache->winx = -1;
592 drawcache->text_id[0] =
'\0';
594 st->runtime.drawcache = drawcache;
599 DrawCache *drawcache;
600 int full_update = 0, nlines = 0;
603 if (
st->runtime.drawcache ==
NULL) {
604 text_drawcache_init(
st);
609 drawcache =
st->runtime.drawcache;
610 nlines = drawcache->nlines;
615 full_update |= drawcache->winx != region->
winx;
617 full_update |= drawcache->wordwrap !=
st->wordwrap;
619 full_update |= drawcache->showlinenrs !=
st->showlinenrs;
621 full_update |= drawcache->tabnumber !=
st->tabnumber;
623 full_update |= drawcache->lheight !=
st->runtime.lheight_px;
625 full_update |= drawcache->cwidth_px !=
st->runtime.cwidth_px;
631 if (full_update || !drawcache->line_height) {
632 drawcache->valid_head = 0;
633 drawcache->valid_tail = 0;
634 drawcache->update_flag = 1;
637 if (drawcache->update_flag) {
639 int lineno = 0,
size, lines_count;
640 int *fp = drawcache->line_height, *new_tail, *old_tail;
643 size =
sizeof(int) * nlines;
652 drawcache->valid_tail = drawcache->valid_head = 0;
653 old_tail = fp + drawcache->nlines - drawcache->valid_tail;
654 new_tail = fp + nlines - drawcache->valid_tail;
655 memmove(new_tail, old_tail, drawcache->valid_tail);
657 drawcache->total_lines = 0;
659 if (
st->showlinenrs) {
664 if (drawcache->valid_head) {
665 lines_count = fp[lineno];
666 drawcache->valid_head--;
668 else if (lineno > new_tail - fp) {
669 lines_count = fp[lineno];
675 fp[lineno] = lines_count;
679 drawcache->total_lines += lines_count;
682 drawcache->line_height = fp;
688 if (full_update || drawcache->update_flag) {
691 if (
st->showlinenrs) {
696 drawcache->total_lines = nlines;
699 drawcache->nlines = nlines;
702 drawcache->winx = region->
winx;
703 drawcache->wordwrap =
st->wordwrap;
704 drawcache->lheight =
st->runtime.lheight_px;
705 drawcache->cwidth_px =
st->runtime.cwidth_px;
706 drawcache->showlinenrs =
st->showlinenrs;
707 drawcache->tabnumber =
st->tabnumber;
712 drawcache->update_flag = 0;
713 drawcache->valid_head = 0;
714 drawcache->valid_tail = 0;
724 if (
st->runtime.drawcache !=
NULL) {
725 DrawCache *drawcache =
st->runtime.drawcache;
728 if (drawcache->update_flag) {
738 if (curlno < sellno) {
739 drawcache->valid_head = curlno;
740 drawcache->valid_tail = drawcache->nlines - sellno - 1;
743 drawcache->valid_head = sellno;
744 drawcache->valid_tail = drawcache->nlines - curlno - 1;
750 if (drawcache->valid_head > 0) {
751 drawcache->valid_head--;
753 if (drawcache->valid_tail > 0) {
754 drawcache->valid_tail--;
758 drawcache->valid_head = 0;
759 drawcache->valid_tail = 0;
762 drawcache->update_flag = 1;
768 DrawCache *drawcache =
st->runtime.drawcache;
771 if (drawcache->line_height) {
786 static int text_get_visible_lines_no(
const SpaceText *
st,
int lineno)
788 const DrawCache *drawcache =
st->runtime.drawcache;
790 return drawcache->line_height[lineno];
795 int i, j, start, end,
max, lines, chars;
808 chars =
st->tabnumber - i %
st->tabnumber;
816 if (i + columns - start >
max) {
818 start =
MIN2(end, i);
821 else if (
ELEM(ch,
' ',
'-')) {
854 DrawCache *drawcache;
856 text_update_drawcache(
st, region);
857 drawcache =
st->runtime.drawcache;
859 return drawcache->total_lines;
870 int lhlstart, lhlend, ltexth, sell_off, curl_off;
871 short barheight, barstart, hlstart, hlend, blank_lines;
872 short pix_available, pix_top_margin, pix_bottom_margin, pix_bardiff;
874 pix_top_margin = (0.4 *
U.widget_unit);
875 pix_bottom_margin = (0.4 *
U.widget_unit);
876 pix_available = region->
winy - pix_top_margin - pix_bottom_margin;
878 blank_lines =
st->runtime.viewlines / 2;
881 back->
xmin = region->
winx - (0.6 *
U.widget_unit);
886 scroll->
xmax = region->
winx - (0.2 *
U.widget_unit);
887 scroll->
xmin = scroll->
xmax - (0.4 *
U.widget_unit);
888 scroll->
ymin = pix_top_margin;
889 scroll->
ymax = pix_available;
893 if (ltexth + blank_lines < st->
top +
st->runtime.viewlines) {
894 blank_lines =
st->top +
st->runtime.viewlines - ltexth;
897 ltexth += blank_lines;
899 barheight = (ltexth > 0) ? (
st->runtime.viewlines * pix_available) / ltexth : 0;
901 if (barheight < 20) {
902 pix_bardiff = 20 - barheight;
905 barstart = (ltexth > 0) ? ((pix_available - pix_bardiff) *
st->top) / ltexth : 0;
907 st->runtime.scroll_region_handle = *scroll;
908 st->runtime.scroll_region_handle.ymax -= barstart;
909 st->runtime.scroll_region_handle.ymin =
st->runtime.scroll_region_handle.ymax - barheight;
911 CLAMP(
st->runtime.scroll_region_handle.ymin, pix_bottom_margin, region->
winy - pix_top_margin);
912 CLAMP(
st->runtime.scroll_region_handle.ymax, pix_bottom_margin, region->
winy - pix_top_margin);
914 st->runtime.scroll_px_per_line = (pix_available > 0) ? (
float)ltexth / pix_available : 0;
915 if (
st->runtime.scroll_px_per_line < 0.1f) {
916 st->runtime.scroll_px_per_line = 0.1f;
921 lhlstart =
MIN2(curl_off, sell_off);
922 lhlend =
MAX2(curl_off, sell_off);
925 hlstart = (lhlstart * pix_available) / ltexth;
926 hlend = (lhlend * pix_available) / ltexth;
929 if (pix_bardiff > 0) {
931 if (
st->runtime.viewlines && lhlstart >=
st->top &&
932 lhlstart <= st->
top +
st->runtime.viewlines) {
934 hlstart = (((pix_available - pix_bardiff) * lhlstart) / ltexth) +
935 (pix_bardiff * (lhlstart -
st->top) /
st->runtime.viewlines);
937 else if (lhlstart >
st->top +
st->runtime.viewlines && hlstart < barstart + barheight &&
938 hlstart > barstart) {
940 hlstart = barstart + barheight;
942 else if (lhlend >
st->top && lhlstart < st->
top && hlstart > barstart) {
947 if (hlend <= hlstart) {
952 if (
st->runtime.viewlines && lhlend >=
st->top &&
953 lhlend <= st->
top +
st->runtime.viewlines) {
955 hlend = (((pix_available - pix_bardiff) * lhlend) / ltexth) +
956 (pix_bardiff * (lhlend -
st->top) /
st->runtime.viewlines);
958 else if (lhlend < st->
top && hlend >= barstart - 2 && hlend < barstart + barheight) {
962 else if (lhlend >
st->top +
st->runtime.viewlines &&
963 lhlstart < st->
top +
st->runtime.viewlines && hlend < barstart + barheight) {
965 hlend = barstart + barheight;
968 if (hlend <= hlstart) {
978 if (hlend - hlstart < 2) {
982 st->runtime.scroll_region_select = *scroll;
983 st->runtime.scroll_region_select.ymax = region->
winy - pix_top_margin - hlstart;
984 st->runtime.scroll_region_select.ymin = region->
winy - pix_top_margin - hlend;
986 CLAMP(
st->runtime.scroll_region_select.ymin, pix_bottom_margin, region->
winy - pix_top_margin);
987 CLAMP(
st->runtime.scroll_region_select.ymax, pix_bottom_margin, region->
winy - pix_top_margin);
1007 &
st->runtime.scroll_region_handle,
1017 .xmin =
st->runtime.scroll_region_select.xmin + 1,
1018 .xmax =
st->runtime.scroll_region_select.xmax - 1,
1019 .ymin =
st->runtime.scroll_region_select.ymin,
1020 .ymax =
st->runtime.scroll_region_select.ymax,
1041 int boxw, boxh,
l,
x,
y ;
1043 if (!
st || !
st->text) {
1059 for (tmp =
st->text->curl,
l = -
st->top; tmp; tmp = tmp->
prev,
l++) {
1072 y = region->
winy -
st->runtime.lheight_px *
l - 2;
1108 for (p = docs; *p; p++) {
1109 if (*p ==
'\r' && *(++p) !=
'\n') {
1112 if (
ELEM(*p,
' ',
'\t')) {
1115 else if (*p ==
'\n') {
1118 y -=
st->runtime.lheight_px;
1119 text_draw(
st, &tdc, buf, 0, 0,
x + 4,
y - 3,
NULL);
1129 y -=
st->runtime.lheight_px;
1130 text_draw(
st, &tdc, buf, 0, 0,
x + 4,
y - 3,
NULL);
1153 SuggItem *item, *first, *last, *sel;
1155 int offl, offc, vcurl, vcurc;
1156 int w, boxw = 0, boxh, i,
x,
y, *
top;
1158 const int margin_x = 2;
1170 if (!first || !last) {
1183 y = region->
winy - (vcurl + 1) * lheight - 2;
1187 x -=
st->runtime.cwidth_px *
1193 if (
x + boxw > region->
winx) {
1219 for (i = 0, item = first; i < *
top && item->
next; i++, item = item->
next) {
1223 for (i = 0; i <
SUGG_LIST_SIZE && item; i++, item = item->next) {
1238 immRecti(posi,
x + margin_x,
y - 3,
x + margin_x +
w,
y + lheight - 3);
1244 text_draw(
st, tdc,
str, 0, 0,
x + margin_x,
y - 1,
NULL);
1261 int vcurl, vcurc, vsell, vselc, hidden = 0;
1276 if (text->
curl == text->
sell && text->
curc == text->
selc && !
st->line_hlight && hidden) {
1301 y +=
st->runtime.scroll_ofs_px[1];
1304 if (vcurl == vsell) {
1305 y -= vcurl * lheight;
1307 if (vcurc < vselc) {
1309 x + vcurc *
st->runtime.cwidth_px,
1311 x + vselc *
st->runtime.cwidth_px,
1316 x + vselc *
st->runtime.cwidth_px,
1318 x + vcurc *
st->runtime.cwidth_px,
1323 int froml, fromc, tol, toc;
1325 if (vcurl < vsell) {
1338 y -= froml * lheight;
1343 for (i = froml + 1; i < tol; i++) {
1348 if (
x + toc *
st->runtime.cwidth_px >
x) {
1355 if (
st->line_hlight) {
1363 y1 = region->
winy - (vsell - offl) * lheight;
1365 y1 +=
st->runtime.scroll_ofs_px[1];
1367 y2 =
y1 - (lheight * visible_lines);
1370 y1 = region->
winy - vsell * lheight;
1372 y1 +=
st->runtime.scroll_ofs_px[1];
1374 y2 =
y1 - (lheight);
1377 if (!(y1 < 0 || y2 > region->
winy)) {
1378 float highlight_color[4];
1380 highlight_color[3] = 0.1f;
1391 y = region->
winy - vsell * lheight;
1393 y +=
st->runtime.scroll_ofs_px[1];
1398 if (
st->overwrite) {
1402 w =
st->runtime.cwidth_px;
1404 w *=
st->tabnumber - (vselc +
st->left) %
st->tabnumber;
1408 pos,
x,
y - lheight -
U.pixelsize,
x +
w +
U.pixelsize,
y - lheight - (3 *
U.pixelsize));
1428 int b, fc, find, stack, viewc, viewl, offl, offc,
x,
y;
1429 int startc, endc,
c;
1438 startl = text->
curl;
1439 startc = text->
curc;
1441 if (
b == 0 && startc > 0) {
1467 while (c < linep->
len) {
1479 else if (
b == -find) {
1489 linep = linep->
next;
1513 else if (
b == -find) {
1525 linep = linep->
prev;
1528 fc = strlen(linep->
format) - 1;
1543 if (!endl || endc == -1) {
1549 y = region->
winy -
st->runtime.lheight_px;
1551 y +=
st->runtime.scroll_ofs_px[1];
1555 ch = startl->
line[startc];
1569 ch = endl->
line[endc];
1597 int i,
x,
y, winx, linecount = 0, lineno = 0;
1598 int wraplinecount = 0, wrap_skip = 0;
1599 int margin_column_x;
1607 st->runtime.lheight_px = (
U.widget_unit *
st->lheight) / 20;
1610 const int clip_min_y = -(int)(
st->runtime.lheight_px - 1);
1612 st->runtime.viewlines = (
st->runtime.lheight_px) ?
1618 text_update_drawcache(
st, region);
1626 calc_text_rcts(
st, region, &scroll, &back);
1632 for (i = 0; i <
st->top && tmp; i++) {
1638 int lines = text_get_visible_lines_no(
st, lineno);
1640 if (wraplinecount + lines >
st->top) {
1641 wrap_skip =
st->top - wraplinecount;
1645 wraplinecount += lines;
1663 if (
st->showlinenrs) {
1672 st->runtime.line_number_display_digits = 0;
1676 y = region->
winy -
st->runtime.lheight_px;
1677 int viewlines =
st->runtime.viewlines;
1679 y +=
st->runtime.scroll_ofs_px[1];
1686 draw_text_decoration(
st, region);
1691 for (i = 0;
y > clip_min_y && i < viewlines && tmp; i++, tmp = tmp->
next) {
1696 if (
st->showlinenrs && !wrap_skip) {
1702 st->runtime.line_number_display_digits,
1711 int lines = text_draw_wrapped(
st, &tdc, tmp->line,
x,
y, winx -
x, tmp->format, wrap_skip);
1717 st, &tdc, tmp->line,
st->left, region->
winx /
st->runtime.cwidth_px,
x,
y, tmp->format);
1725 margin_column_x =
x +
st->runtime.cwidth_px * (
st->margin_column -
st->left);
1726 if (margin_column_x >=
x) {
1730 float margin_color[4];
1732 margin_color[3] = 0.2f;
1735 immRecti(
pos, margin_column_x, 0, margin_column_x +
U.pixelsize, region->
winy);
1742 draw_brackets(
st, &tdc, region);
1743 draw_textscroll(
st, &scroll, &back);
1745 draw_suggestion_list(
st, &tdc, region);
1764 st->runtime.cwidth_px =
MAX2(
st->runtime.cwidth_px, (
char)1);
1788 int i,
x, winx = region->
winx;
1806 if (
st->top +
st->runtime.viewlines <= i ||
st->top > i) {
1807 st->top = i -
st->runtime.viewlines / 2;
1811 if (
st->top +
st->runtime.viewlines <= i) {
1812 st->top = i - (
st->runtime.viewlines - 1);
1814 else if (
st->top > i) {
1827 if (x <= 0 || x > winx) {
1828 st->left += (
x - winx / 2) /
st->runtime.cwidth_px;
1833 st->left += ((
x + 1) /
st->runtime.cwidth_px) - 1;
1835 else if (
x > winx) {
1836 st->left += ((
x - (winx + 1)) /
st->runtime.cwidth_px) + 1;
1848 st->runtime.scroll_ofs_px[0] = 0;
1849 st->runtime.scroll_ofs_px[1] = 0;
1877 const int cursor_co[2],
1887 if (!line || (cursor_co[1] < 0) || (cursor_co[1] > line->
len)) {
1897 r_pixel_co[0] = (char_pos + offc -
st->left) *
st->runtime.cwidth_px + linenr_offset;
1899 r_pixel_co[1] = (region->
winy - (r_pixel_co[1] + (
TXT_BODY_LPAD *
st->runtime.cwidth_px))) -
1900 st->runtime.lheight_px;
1905 r_pixel_co[0] = r_pixel_co[1] = -1;
struct ScrArea * CTX_wm_area(const bContext *C)
struct bScreen * CTX_wm_screen(const bContext *C)
struct SpaceText * CTX_wm_space_text(const bContext *C)
struct ARegion * BKE_area_find_region_type(const struct ScrArea *area, int type)
struct ARegion struct ARegion struct ScrArea struct ScrArea * BKE_screen_find_big_area(struct bScreen *screen, int spacetype, short min)
void txt_clean_text(struct Text *text)
int text_check_bracket(char ch)
int txt_get_span(struct TextLine *from, struct TextLine *to)
int text_find_identifier_start(const char *str, int i)
short texttool_text_is_active(struct Text *text)
SuggItem * texttool_suggest_last(void)
char * texttool_docs_get(void)
SuggItem * texttool_suggest_selected(void)
SuggItem * texttool_suggest_first(void)
int * texttool_suggest_top(void)
int BLF_draw_mono(int fontid, const char *str, size_t str_len, int cwidth) ATTR_NONNULL(2)
float BLF_fixed_width(int fontid) ATTR_WARN_UNUSED_RESULT
#define BLF_DRAW_STR_DUMMY_MAX
void BLF_size(int fontid, float size, int dpi)
void BLF_position(int fontid, float x, float y, float z)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
MINLINE int integer_digits_i(int i)
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
int BLI_str_utf8_char_width(const char *p) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
size_t size_t BLI_strnlen_utf8(const char *strc, size_t maxlen) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
int BLI_str_utf8_char_width_safe(const char *p) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_str_utf8_offset_to_column(const char *str, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
const char * BLI_str_find_prev_char_utf8(const char *p, const char *str_start) ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL ATTR_NONNULL(1
int BLI_str_utf8_size_safe(const char *p) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
size_t size_t size_t int BLI_str_utf8_offset_to_index(const char *str, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define STREQLEN(a, b, n)
bool ED_text_activate_in_screen(struct bContext *C, struct Text *text)
bool ED_text_is_syntax_highlight_supported(struct Text *text)
bool ED_text_region_location_from_cursor(struct SpaceText *st, struct ARegion *region, const int cursor_co[2], int r_pixel_co[2])
void ED_text_scroll_to_cursor(struct SpaceText *st, struct ARegion *region, bool center)
NSNotificationCenter * center
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble y1
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble top
@ GPU_SHADER_2D_UNIFORM_COLOR
void GPU_blend(eGPUBlend blend)
Read Guarded memory(de)allocation.
#define MEM_reallocN(vmemh, len)
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position CLAMP
void UI_draw_roundbox_corner_set(int type)
void UI_draw_roundbox_aa(const struct rctf *rect, bool filled, float rad, const float color[4])
void UI_draw_box_shadow(const struct rctf *rect, unsigned char alpha)
void UI_draw_widget_scroll(struct uiWidgetColors *wcol, const struct rcti *rect, const struct rcti *slider, int state)
void UI_GetThemeColor3fv(int colorid, float col[3])
struct bTheme * UI_GetTheme(void)
void UI_GetThemeColor4fv(int colorid, float col[4])
void UI_FontThemeColor(int fontid, int colorid)
ATTR_WARN_UNUSED_RESULT const BMLoop * l
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
static void error(const char *str)
static struct PartialUpdateUser * wrap(PartialUpdateUserImpl *user)
static void area(int d1, int d2, int e1, int e2, float weights[2])
static const pxr::TfToken st("st", pxr::TfToken::Immortal)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
void(* format_line)(SpaceText *st, TextLine *line, bool do_next)
uiWidgetColors wcol_scroll
void text_pop_suggest_list(void)
static int text_font_draw(const TextDrawContext *tdc, int x, int y, const char *str)
static void text_font_end(const TextDrawContext *UNUSED(tdc))
static int text_font_draw_character(const TextDrawContext *tdc, int x, int y, char c)
struct TextDrawContext TextDrawContext
static int text_font_draw_character_utf8(const TextDrawContext *tdc, int x, int y, const char *c, const int c_len)
static void text_font_begin(const TextDrawContext *tdc)
static void text_draw_context_init(const SpaceText *st, TextDrawContext *tdc)
static void format_draw_color(const TextDrawContext *tdc, char formatchar)
int flatten_string(const SpaceText *st, FlattenString *fs, const char *in)
void flatten_string_free(FlattenString *fs)
TextFormatType * ED_text_format_get(Text *text)
int text_get_span_wrap(const struct SpaceText *st, struct ARegion *region, struct TextLine *from, struct TextLine *to)
#define TXT_LINE_SPACING(st)
void text_free_caches(struct SpaceText *st)
#define TXT_LINE_HEIGHT(st)
void text_scroll_to_cursor__area(struct SpaceText *st, struct ScrArea *area, bool center)
int text_get_total_lines(struct SpaceText *st, struct ARegion *region)
#define TXT_NUMCOL_WIDTH(st)
void text_update_cursor_moved(struct bContext *C)
void wrap_offset_in_line(const struct SpaceText *st, struct ARegion *region, struct TextLine *linein, int cursin, int *offl, int *offc)
void wrap_offset(const struct SpaceText *st, struct ARegion *region, struct TextLine *linein, int cursin, int *offl, int *offc)
int wrap_width(const struct SpaceText *st, struct ARegion *region)
#define TXT_BODY_LEFT(st)
void draw_text_main(struct SpaceText *st, struct ARegion *region)
int text_get_visible_lines(const struct SpaceText *st, struct ARegion *region, const char *str)
void text_drawcache_tag_update(struct SpaceText *st, int full)
int text_get_char_pos(const struct SpaceText *st, const char *line, int cur)
void text_update_character_width(struct SpaceText *st)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)