OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 17:17

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 80 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
СообщениеДобавлено: Пятница, 10 Февраль, 2023 07:15 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
arisu писал(а):
проапдейтил рисовалку, исправил довольно значительные косяки, сделал чуть правильней (лучше соответствует тому, что рисует виндоверсия). брать тут.

Спасибо, обновлю.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 10 Февраль, 2023 20:22 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
вы, наверное, уже видели, но: там в фолдах код для обычной версии остался, без улучшений из LC.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 11 Февраль, 2023 21:52 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
arisu писал(а):
вы, наверное, уже видели, но: там в фолдах код для обычной версии остался, без улучшений из LC.

доделал наконец задачку по работе, и взялся переносить, спасибо за эти предусмотренные складки.

сразу и хук сделал для использования WinPictures, который описывал выше

Сразу отмечу, это исключительно для поддержки совместимость со старыми докуменами. Так как рисование этого EMF добра отключает буферизацию рисования в Windows версии, то всё начинает мелькать. Так что все растры должны быть заменены на PNG в перспективе. А все векторные рисунки на формат новой подсистемы на основе Brahe.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 11 Февраль, 2023 22:42 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
а если вы заберёте из LC `DrawComplexPath()`, то как минимум мак-картинки можно будет перевести на нормальную рисовалку, без отключения двойной буферизации. и WMF потом тоже: я мельком посмотрел, и рисовалку WMF можно сделать почти так же, там используется очень мало операций, нет нужды делать все. надо будет только добавить в bottleneck API для растровых картинок (сейчас там растры существуют как вещь в себе, которую невозможно создать из буфера интов; я думаю над более вкусным API).

то есть, перерисовать, конечно, надо, но пока не перерисовано…


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 12 Февраль, 2023 11:37 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Думаю, что не надо это добавлять, так как эти шашечки - это какая-то эмуляция черно-белой печати. Сейчас такие элементы вполне можно передавать цветом, точнее оттенками серого. А серый свет и так на печати превращается в шашечки сам.

Цитата:
мак-картинки можно будет перевести на нормальную рисовалку, без отключения двойной буферизации

Да, мак картинки русуются вашим алгоритмом при этом. Только isWin через хук.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 12 Февраль, 2023 15:39 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
ну, в принципе вы правы, скорее всего: шахматка там изначально и была для передачи серого цвета. просто лично мне хочется аутентично, поэтому я и заморачивался. есть такой недостаток: люблю точно эмулировать ненужные детали (и творчески переделывать нужные ;-).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 12 Февраль, 2023 18:44 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
arisu писал(а):
ну, в принципе вы правы, скорее всего: шахматка там изначально и была для передачи серого цвета. просто лично мне хочется аутентично, поэтому я и заморачивался. есть такой недостаток: люблю точно эмулировать ненужные детали (и творчески переделывать нужные ;-).

Да, очень полезный эксперимент, и, если кому-то понадобиться, то уже есть опыт и наработки. Сейчас 2.0 с минимальным количеством отличий по интерфейсу опубликуем и опишем, а дальше процесс, я уверен не остановится. После публикации стабильного выпуска, будет больше интереса к проекту, подтянутся ещё люди, и ещё больше будет предложений и наработок.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 12 Февраль, 2023 19:21 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
я `DrawComplexPath()` веду к последующей интеграции с AGGLite (как и остальное), потому переношу, например, преобразование из универсальных координат в реальные в bottleneck (потому что AGGLite внутри использует fixed point 24.8, и проще делать преобразование в самом низу, чтобы не терять дробные части). в теории оно потом даст мощную и весьма навороченую платформо-независимую 2д-рисовалку, с возможностями не хуже, чем у других современных библиотек. естественно, с сохранением высокоуровневого интерфейса. ну, по крайней мере, такой план пока. и, в принципе, у реального bottleneck тогда останется только задача уметь блитать растровые картинки, а остальное будет делать платформо-независимый слой рисования.

не знаю, получится ли из этого что-то стоящее в итоге, но пока идея мне нравится. если получится — то можно будет без особых проблем интегрировать в mainline, оно как раз к тому времени утрясётся.

p.s.: так-то мой форк AGGLite на D умеет вот такие гитики, например. всё это на базе обычного AA-растеризатора, а остальные фичи сделаны поверх, почти как в оригинальной AGG, только заточены под конкретный формат растра (32 бита). архитектура немного похожа на AGG, но как по мне — чуть проще в использовании. а для порта на Component Pascal я её ещё почищу немного.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Февраль, 2023 22:13 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
кстати. есть мнение, что рисовалку можно научить вместо рисования конвертировать в тот же Brahe, например, и магически получить заготовки картинок без необходимости их вручную перерисовывать.

и я бы, кстати, добавил в Brahe rounded rect как-нибудь (надо только придумать, как его задавать красиво). если что, у меня там ошибка: `w` и `h` (радиусы скругления) оказались на самом деле диаметрами, так что чтобы правильно работал уже существующий там построитель (его несложно адаптировать к mainline) — надо поделить оные штуки на два.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Февраль, 2023 22:19 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
arisu писал(а):
кстати. есть мнение, что рисовалку можно научить вместо рисования конвертировать в тот же Brahe, например, и магически получить заготовки картинок без необходимости их вручную перерисовывать.

Да, заготовки - это было бы круто. Останется их немного подправить. Но я уверен, что это не такая простая задача.

Я выложил сейчас версию, где перерисовал первый рисунок из документации, который как раз был в виндовом формате, поэтому вашим спасительным конвертером не рисовался.


Вложения:
photo_2023-02-16_01-34-36.jpg
photo_2023-02-16_01-34-36.jpg [ 186.99 КБ | Просмотров: 5231 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Февраль, 2023 22:21 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
arisu писал(а):
и я бы, кстати, добавил в Brahe rounded rect как-нибудь (надо только придумать, как его задавать красиво). если что, у меня там ошибка: `w` и `h` (радиусы скругления) оказались на самом деле диаметрами, так что чтобы правильно работал уже существующий там построитель (его несложно адаптировать к mainline) — надо поделить оные штуки на два.

Да, вот туда его было бы хорошо. Ну и его рисовать через DrawPath там.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Февраль, 2023 22:40 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
Иван Денисов писал(а):
Да, вот туда его было бы хорошо. Ну и его рисовать через DrawPath там.
там проблема в том, что нужны и заливки, и контур. даже некоторые с виду пустые прямоугольники на самом деле залиты цветом фона. а сделать сложный контур существующими инструментами не получится, увы. точнее, настолько сложно, что оно того не стоит. (по частям можно, конечно, но и могут быть, и обязательно будут случайно возникающие артефакты, которые упаришся чинить. так что насчёт «несложно» я немного… эм… погорячился.)

а на WMF я попозже посмотрю: формат-то несложный, да и я уверен, что используется только минимальное подмножество. но — нужен штатный API для создания растров и манипуляции ними. (в принципе, с таким апи можно просто кастомную рисовалку в битмап сделать, игнорируя штатную.)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Февраль, 2023 22:54 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
Иван Денисов писал(а):
Да, заготовки - это было бы круто. Останется их немного подправить. Но я уверен, что это не такая простая задача.
ну, все задачи на практике оказываются сложнее, чем кажется, конечно. ;-) когда буду снова проходить мимо — попробую глянуть на этот счёт.

кто-то, кстати, начал было делать титанический труд по конвертации в растр, и сделал в Tut-02. что я у себя отменил обратно (за исключением одной, кажется, WMF; почему она у омиков WMF — загадка, там ничего такого нет). таким образом и заметил баг в roundrect.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Февраль, 2023 22:55 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
arisu писал(а):
Иван Денисов писал(а):
Да, вот туда его было бы хорошо. Ну и его рисовать через DrawPath там.
там проблема в том, что нужны и заливки, и контур. даже некоторые с виду пустые прямоугольники на самом деле залиты цветом фона. а сделать сложный контур существующими инструментами не получится, увы. точнее, настолько сложно, что оно того не стоит. (по частям можно, конечно, но и могут быть, и обязательно будут случайно возникающие артефакты, которые упаришся чинить. так что насчёт «несложно» я немного… эм… погорячился.)

а на WMF я попозже посмотрю: формат-то несложный, да и я уверен, что используется только минимальное подмножество. но — нужен штатный API для создания растров и манипуляции ними. (в принципе, с таким апи можно просто кастомную рисовалку в битмап сделать, игнорируя штатную.)

смысла большого на это тратить время особо не вижу, разве что у вас есть какой-то проект, где люди копируют что-то из винды в файлы, и вы хотите потом это показывать в Linux


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Февраль, 2023 22:58 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
arisu писал(а):
даже некоторые с виду пустые прямоугольники на самом деле залиты цветом фона. а сделать сложный контур существующими инструментами не получится, увы. точнее, настолько сложно, что оно того не стоит.

Особо нет смысла тратить время на это, сложная графика может быть в виде растров, а для рисунков - теперь целая подсистема. И так как она новая, то её как раз возможно дорабатывать и улучшать. Но желательно, чтобы рисунки не ломались при этом, которые уже нарисованы, и не увеличивалось количество модулей.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Февраль, 2023 23:00 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
arisu писал(а):
кто-то, кстати, начал было делать титанический труд по конвертации в растр, и сделал в Tut-02. что я у себя отменил обратно (за исключением одной, кажется, WMF; почему она у омиков WMF — загадка, там ничего такого нет). таким образом и заметил баг в roundrect.

Эту картинку скорее всего я перерисовывал, мне не нравились какие-то корявости в нескольких рисунках документации. И вставлял я уже в формате WMF.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Февраль, 2023 23:02 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
так штука в том, что roundrect — это как раз сложный контур получается.

Иван Денисов писал(а):
Эту картинку скорее всего я перерисовывал, мне не нравились какие-то корявости в нескольких рисунках документации. И вставлял я уже в формате WMF.
в сборке центра тоже (я оттуда брал)? или именно в ней и? спасибо, надо посмотреть в официальной 1.6 тогда (или даже раньше).

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


Последний раз редактировалось arisu Среда, 15 Февраль, 2023 23:04, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Февраль, 2023 23:04 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
arisu писал(а):
так штука в том, что roundrect — это как раз сложный контур получается.

Иван Денисов писал(а):
Эту картинку скорее всего я перерисовывал, мне не нравились какие-то корявости в нескольких рисунках документации. И вставлял я уже в формате WMF.
в сборке центра тоже (я оттуда брал)? или именно в ней и? спасибо, надо посмотреть в официальной 1.6 тогда.


Да, в сборке центра заменял как раз. А то был вот такой трэш, текст вылазил за кружочки.

Вложение:
trash.png
trash.png [ 12.32 КБ | Просмотров: 5223 ]


Для рисования EMF программа, которая хорошо вставляет из буфера обмена в ББ называется DiagramDesigner.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Февраль, 2023 23:06 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
Иван Денисов писал(а):
Да, в сборке центра заменял как раз. А то был вот такой трэш, текст вылазил за кружочки.
да, это частенько так, потому что картинки заточены под мак-шрифты. а рисовалка (что моя, что оригинальная) вообще typeface игнорирует. там надо бы вместо Arial привинтить Tahoma — тогда надписи станут уже, но перестанут вылазить. или делать сопоставление мак-шрифтов. но сами понимаете: задача не из самых приоритетных, мягко говоря.

p.s.: вообще, там часто для текста ставится clip rect (который мы, опять же, просто игнорируем), можно попробовать текст по размеру в него рихтовать. правда, тогда кегль будет немножко скакать, тоже некрасиво.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Февраль, 2023 23:34 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
кстати. опытным путём (только что) выяснил, что если NewFont сделать так, то шрифты чуть лучше попадают:
Код:
      PROCEDURE NewFont;
      VAR
         weight, sz: INTEGER;
         stl: SET;
      BEGIN
         IF ODD(style) THEN weight := Fonts.bold ELSE weight := Fonts.normal END;
         stl := {};
         IF 1 IN BITS(style) THEN INCL(stl, Fonts.italic) END;
         IF 2 IN BITS(style) THEN INCL(stl, Fonts.underline) END;
         sz := size;
         IF sz >= 8 THEN DEC(sz, 2) END;
         font := Fonts.dir.This("Arial", Round(sz), stl, weight)
      END NewFont;

разница в строке, где `DEC(sz, 2)`. сам size трогать не надо, это global state, там хитро. правда, это заточено на метрику именно monotype arial.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 80 ]  На страницу Пред.  1, 2, 3, 4

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB