20 Мая 2024, 08:58:46
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > База исходников (cgr/igr) > [NME_TextWrap канал] (перенос слов)
[NME_TextWrap канал] (перенос слов)
(Прочитано 7403 раз)
  [1]
Печать
Sqwer | ***** | Ветеран | Сообщений: 540 | « 26 Марта 2011, 08:52:22 »
[NME_TextWrap канал] (перенос слов) |
0
Представляю вашему вниманию канал NME_TextWrap,
задачей которого является  автоматический перенос слов на следующую строку, если они не влезают в определённый диапозон.


Часто подобная проблема возникает при отображении произвольного текста на элементах ГУИ. Без переноса они выходят за рамки элемента, что ,безусловно, не красиво и не приемлемо.

Кратко о сути канала:
на вход канала подаётся текст
на выходе получается текст с автоматическим форматированием переноса слов, кроме того  можно установить максимальное кол-во строк в выходном тексте и задать смещение от первой строки.

Описание:

NME_TextWrap ([in]Text SourceString, [out]Text WrapString, [in]Float maxStringSize, [in]Float oneSimbolWide, [in]Float firstLineOffset, [out]Float WrapStringCount)

SourceString -  исходный текст  ()
WrapString   -  полученный текст с установленными переносами на след строку
maxStringSize - максимальная длина  строки в Юнитах
oneSimbolWide - ширина одного символа в Юнитах
maxVisibleLines - максимальное кол-во строк выходного текста
firstLineOffset - смещение строк выходого текста  (0-  смещения нет, 1 - смещение на одну строчку)
WrapStringCount - количество строк в преобразованном тексте

Не заменим при создании элемента ГУИ  для просмотра текста с возможностью скролирования.

Исправление багов:
- отсутствие  чилд каналов не провоцирует вылет
- отсутствие строки в канале SourceString не провозирует вылет
- оптимизация скорости работы
- канал отслеживает  всевозможные изменения в входных параметрах, и если таковые произошли  - канал перестраивает текст. Если изменений нет ,  то не вызывается обратотка текста, тем самым экономя время обработки.
- добавлен выходной параметр  - WrapStringCount - количество строк в преобразованном тексте

Ниже  представлены:
схема подключения
пример  (стрелками вверх/вниз - скролирование текста)
канал (Релиз  для Q.4.3.2)

* NME_TextWrap_L.jpg (58.31 Кб, 350x146 - просмотрено 1655 раз.)
* NME_WordWrap.dll (47.5 Кб - загружено 792 раз.)
* NME_TextWrap.cgr (21.85 Кб - загружено 782 раз.)
« Последнее редактирование: 26 Апреля 2011, 03:05:33 от Sqwer »
Corpic | * | Новичок | Сообщений: 23 | «Ответ #1 26 Марта 2011, 11:32:00 »
Re: [NME_TextWrap канал] (перенос слов) |
1
Канал действительно полезный, но я бы еще добавил в качестве выходного аргумента количество строк, получаемых при форматировании текста (порой требуется при вертикальном выравнивании относительно центра).

А еще можно добавить функцию выравнивания текста по ширине, по центру и т.д.
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #2 26 Марта 2011, 12:46:32 »
Re: [NME_TextWrap канал] (перенос слов) |
2
А еще можно добавить функцию выравнивания текста по ширине, по центру и т.д.

это уже вопросы отображения, а не редактирования текста.

В Квесте предусмотрено отображение 4 мя каналами:
1)текстурный текст
2)3Д текст
3) 2Д экранный текст
4) 2Д экранный текст (дэбаг textout)

последний поддерживает  центрирование и выравнивание.
Corpic | * | Новичок | Сообщений: 23 | «Ответ #3 26 Марта 2011, 21:06:06 »
Re: [NME_TextWrap канал] (перенос слов) |
3
По вопросу отображения полностью согласен - снимаю вопрос с повестки дня -:). Просто  я привык пользоваться примитивами: сам преобразую - сам отображаю.
А что косается количества преобразованных строк - это порой важно. К примеру: выходной текст составляет две строки или три? Как его позиционировать по dY? (если нужно выровнять по центру)

Corpic | * | Новичок | Сообщений: 23 | «Ответ #4 26 Марта 2011, 21:48:45 »
Re: [NME_TextWrap канал] (перенос слов) |
4
P.S.: Может быть я плохо искал но до сих пор не нашел способа стандартными  каналами квеста отобразить текст с выравниванием по ширине.
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #5 27 Марта 2011, 00:21:02 »
Re: [NME_TextWrap канал] (перенос слов) |
5
Цитировать
P.S.: Может быть я плохо искал но до сих пор не нашел способа стандартными  каналами квеста отобразить текст с выравниванием по ширине.
я тоже  В замешательстве
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #6 25 Апреля 2011, 21:54:58 »
Re: [NME_TextWrap канал] (перенос слов) |
6
В канал внесены изменения.
 
  [1]
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > База исходников (cgr/igr) > [NME_TextWrap канал] (перенос слов)
Перейти в: