From 8b6252353d5cea13f28da5ffd99958d5852899e4 Mon Sep 17 00:00:00 2001 From: lecoanet Date: Thu, 2 Oct 2003 09:19:01 +0000 Subject: Now patterns are automatically updated if their images changed. Changed the ZnConfigureAttributes api. The texture font allocation is postponed until need for drawing. At that time the GL engine is guaranteed in the right state. --- generic/Text.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) (limited to 'generic/Text.c') diff --git a/generic/Text.c b/generic/Text.c index e2b83f2..f662467 100644 --- a/generic/Text.c +++ b/generic/Text.c @@ -196,9 +196,6 @@ Init(ZnItem item, text->font = Tk_GetFont(wi->interp, wi->win, Tk_NameOfFont(wi->font)); #ifdef GL text->tfi = NULL; - if (wi->render) { - text->tfi = ZnGetTexFont(wi, text->font); - } #endif text->width = 0; text->spacing = 0; @@ -230,14 +227,12 @@ Clone(ZnItem item) text->text = str; } if (text->fill_pattern != ZnUnspecifiedImage) { - text->fill_pattern = ZnGetImageByValue(text->fill_pattern); + text->fill_pattern = ZnGetImageByValue(text->fill_pattern, NULL, NULL); } text->color = ZnGetGradientByValue(text->color); text->font = Tk_GetFont(wi->interp, wi->win, Tk_NameOfFont(text->font)); #ifdef GL - if (wi->render) { - text->tfi = ZnGetTexFont(wi, text->font); - } + text->tfi = NULL; #endif /* @@ -267,7 +262,7 @@ Destroy(ZnItem item) ZnFree(text->text); } if (text->fill_pattern != ZnUnspecifiedImage) { - ZnFreeImage(text->fill_pattern); + ZnFreeImage(text->fill_pattern, NULL, NULL); text->fill_pattern = ZnUnspecifiedImage; } ZnFreeGradient(text->color); @@ -304,7 +299,7 @@ Configure(ZnItem item, Tk_Font old_font = text->font; #endif - if (ZnConfigureAttributes(item->wi, item, text_attrs, + if (ZnConfigureAttributes(item->wi, item, item, text_attrs, argc, argv, flags) == TCL_ERROR) { return TCL_ERROR; } @@ -313,12 +308,7 @@ Configure(ZnItem item, if (old_font != text->font) { if (text->tfi) { ZnFreeTexFont(text->tfi); - } - if (item->wi->render) { - text->tfi = ZnGetTexFont(item->wi, text->font); - if (!text->tfi) { - return TCL_ERROR; - } + text->tfi = NULL; } } #endif @@ -876,10 +866,16 @@ Render(ZnItem item) int sel_first_line=-1, sel_last_line=-1, cursor_line=-1; int sel_start_offset=0, sel_stop_offset=0, cursor_offset=0; - if (!text->text_info || !text->tfi) { + if (!text->text_info) { return; } + if (!text->tfi) { + if (! (text->tfi = ZnGetTexFont(wi, text->font))) { + return; + } + } + #ifdef GL_LIST if (!item->gl_list) { item->gl_list = glGenLists(1); -- cgit v1.1