Bug 2999

Summary: Не отрисовывается текст условного обозначения
Product: [Поддержка проектов] КОМПАС 3D Reporter: Виталий Булгаков <bulgakov>
Component: ТестированиеAssignee: Anton Rudnev <mibori>
Status: CLOSED FIXED QA Contact: Денис Баранов <baraka>
Severity: critical    
Priority: P2 CC: baraka, kondratyuk, lav, mais, mibori, mx, pav, shpigor, vitperov
Version: v10   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 753, 961, 1732, 3106    
Attachments: архив с примером
WINE: Скриншот при выбранной модели (текста А нет)
WINE: Скриншот при выбранном пункте обозначения базы (текст А есть)
Пример детали с проблемой
Вид детали под Windows
Скрин WINEvsWindows с выделенным обозначением
ещё скрин

Description Виталий Булгаков 2008-11-24 13:37:35 MSK
Created attachment 915 [details]
архив с примером

Открыть файл из вложения. В прямоугольнике условного обозначения базы д.б. отрисован текст А. 
Как это должно быть можно увидеть открыв тот же файл в КОМПАС под Windows
Comment 1 Александр Пликус 2008-12-04 13:03:39 MSK
надо воспроизвести...
Comment 2 Vitaly Lipatov 2008-12-04 13:38:31 MSK
Created attachment 945 [details]
WINE: Скриншот при выбранной модели (текста А нет)
Comment 3 Vitaly Lipatov 2008-12-04 13:39:49 MSK
Created attachment 946 [details]
WINE: Скриншот при выбранном пункте обозначения базы (текст А есть)
Comment 4 Vitaly Lipatov 2008-12-04 15:30:21 MSK
Created attachment 947 [details]
Пример детали с проблемой
Comment 5 Vitaly Lipatov 2008-12-04 15:40:10 MSK
Created attachment 948 [details]
Вид детали под Windows
Comment 6 Денис Баранов 2008-12-05 19:11:26 MSK
Проблема подтверждается, все как в скриншотах.
При чем, при выборе пункта обозначение базы текст показывается, но он смещен немного в сторону по сравнению с виндовс.
Comment 7 Anton Rudnev 2008-12-19 17:49:41 MSK
должна воспроизводится для 10-ого компаса
есть бутылка на cellar kompas/kompas10lt
локально на cellar'e запускать нельзя.
Comment 8 Vitaly Lipatov 2008-12-19 17:50:41 MSK
На cellar видеодрайвер стоит vesa, поэтому только софтовый GL, с которым не работает wine.
Comment 9 Константин Кондратюк 2008-12-22 12:06:57 MSK
Created attachment 978 [details]
Скрин WINEvsWindows с выделенным обозначением

Видно, что выделенная буква прорисовывается 2 раза. 
В Windows (слева) буквы совпадают.
В wine чёрная буква отображается двоеточием, а зелёная - с неправильным наклоном.
Comment 10 Anton Rudnev 2008-12-22 15:51:55 MSK
на multi компас запускается перекореживая иксы
где, кроме euclid еще можно воспроизводить багу?
Comment 11 Виталий Булгаков 2008-12-22 18:25:07 MSK
ошибка связана с 3101 и сначала необходимо добиться ее исправления. Добавил тест в 3101. 
Comment 12 Vitaly Lipatov 2008-12-25 12:36:15 MSK
Ошибка прорисовки не связана с 3101, для неё требуется отдельный тест.
3101 исправили.
Comment 13 Константин Кондратюк 2008-12-25 14:14:17 MSK
Created attachment 988 [details]
ещё скрин

После выполнения действий
"Сервис - Параметры - Система - Редактор моделей - Размеры и обозначения - снять чекбокс Оптимизировать изображение"
видим искомую букву.
Comment 14 Константин Кондратюк 2008-12-25 15:25:59 MSK
Разница в прорисовке "зелёной" и "чёрной" букв в случае с неисправленной багой 3101 (неправильный поворот) вызывают предположение, что сами буквы рисуются принципиально по-разному.
Зелёная - прямым шрифтом (lfEscapement == 0) с использованием поворота функцией SetWorldTransfotm. Это случай баги 3101, исправление матрицы поворота решает проблему.
Чёрная - в прямой системе координат (без World transform), но со шрифтом с ненулевым lfEscapement. В этом случае где-то неправильно считается ширина символа, возможно на этапе рендеринга.

Хочется увидеть подтверждение или опровержение этих догадок. Очень поможет тест, который выведет букву способом, применяемым в программе для отрисовки "чёрной" буквы, и даст возможность её масштабировать, наглядно показав проблему с нарушением ширины символа.
Comment 15 Anton Rudnev 2008-12-25 20:06:58 MSK
см. лог одной перерисовки в каналах xrender и font
ftp:pvt/Windows/Testing/Bugs/2999/2999-AA.txt
интересное начинается с 10324-ой строки.

(смотреть в моноширинном шрифте с отключенным переносом строк).

Также уточну, что для одной перерисовки вызывается только один ExtTextOutW(..."A"...), несмотря на то, что рисуется две буквы.
Comment 16 Vitaly Lipatov 2008-12-25 22:30:16 MSK
Итак, к баге 2999 относится то, что рисовалось чёрным шрифтом в обозначении.
В отличие от зелёного текста, этот текст выводится через GL:
сначала получаются изображения глифов в glList через wglUseFontOutlines,
потом выводим. Ширина символа исправлена

патчем

commit 0d9b6acf6f328a3b4ce8515a586c44f34ba18423
Author: Vitaly Lipatov <lav@etersoft.ru>
Date:   Thu Dec 25 21:27:46 2008 +0300

    wglUseFontOutlines: set lfWidth according to RC size (see eterbug #2999)

и лежит в обновлённой сборке eter39
ftp://updates.etersoft.ru/pub/Etersoft/WINE@Etersoft/1.0.9-eter39/WINE/ALTLinux/4.1/
Comment 17 Денис Баранов 2009-07-29 20:48:28 MSD
Не воспроизводится
WINE@Etersoft CAD eter2.1/eter2