OberonCore
https://forum.oberoncore.ru/

StdPictures для показа старых векторных картинок
https://forum.oberoncore.ru/viewtopic.php?f=134&t=6891
Страница 1 из 4

Автор:  arisu [ Четверг, 02 Февраль, 2023 09:06 ]
Заголовок сообщения:  StdPictures для показа старых векторных картинок

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

Вложения:
Комментарий к файлу: 4
2023_02_02_08_00_31_225x247.png
2023_02_02_08_00_31_225x247.png [ 3.38 КБ | Просмотров: 5171 ]
Комментарий к файлу: 3
2023_02_02_07_59_33_288x135.png
2023_02_02_07_59_33_288x135.png [ 2.52 КБ | Просмотров: 5171 ]
Комментарий к файлу: 2
2023_02_02_08_01_35_569x392.png
2023_02_02_08_01_35_569x392.png [ 9 КБ | Просмотров: 5170 ]
Комментарий к файлу: 1
2023_02_02_08_03_58_203x113.png
2023_02_02_08_03_58_203x113.png [ 1.79 КБ | Просмотров: 5171 ]

Автор:  Иван Денисов [ Четверг, 02 Февраль, 2023 18:31 ]
Заголовок сообщения:  Re: BlackBox 2.0

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

Волшебно. Вопрос только в том, что подсистемы Host больше нет. Поэтому как его назвать. Может раз он теперь кросс-платформенный, то назвать его StdPictures. Но вот назадача, надо сделать некоторый механизм в Stores.Store, чтобы поддерживались зарегистрированные алиасы/синонимы. В целом там в Stores предполагается маппинг, к примеру, есть поддержка обратной совместимости для Desk
Код:
   PROCEDURE GetThisTypeName (t: Kernel.Type; VAR type: TypeName);
      VAR i, j: INTEGER; ch: CHAR; modName, name: Kernel.Name;
   BEGIN
      Kernel.GetModName(t.mod, modName);
      Kernel.GetTypeName(t, name);
      type := modName$;
      i := 0; ch := type[0]; WHILE ch # 0X DO INC(i); ch := type[i] END;
      type[i] := "."; INC(i);
      j := 0; REPEAT ch := name[j]; type[i] := ch; INC(i); INC(j) UNTIL ch = 0X;
      (*
      type := modName + "." + name;
      *)
      IF compatible THEN
         IF type[i-2] = "^" THEN   (* for backward compatibility *)
            type[i-2] := "D"; type[i-1] := "e"; type[i] := "s"; type[i+1] := "c"; type[i+2] := 0X
         END
      END
   END GetThisTypeName;

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

Автор:  arisu [ Четверг, 02 Февраль, 2023 19:29 ]
Заголовок сообщения:  Re: BlackBox 2.0

Иван Денисов писал(а):
Я думаю, что надо сделать какое-то обобщение для отображений типов, чтобы виды HostPictures, могли при совместимости футпринтов открываться модулями с другими названиями.
да. я назвал как назвал чтобы документы Просто Открывались пока. иметь какую-то универсальную систему отображений имён для загрузки/выгрузки было бы хорошо. я думаю, можно временно кинуть как Host, это лучше чем ничего. а потом адаптируем, как придумаем красивый механизм отображений.

Автор:  Иван Денисов [ Четверг, 02 Февраль, 2023 22:43 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

Посмотрите, я добавил StdPictures и механизм в Stores для подмены HostPictures на StdPictures

Код:
(* support for type mapping *)

   PROCEDURE ReadPath (VAR rd: Reader; VAR path: TypePath);
      VAR h: TypeDict; id, extId: INTEGER; i: INTEGER; kind: SHORTCHAR;

      PROCEDURE ReadUtf8(OUT x: ARRAY OF CHAR);
         VAR utf8: Kernel.Utf8Name; res: INTEGER;
      BEGIN
         rd.ReadSString(utf8); Utf.Utf8ToString(utf8, x, res); ASSERT(res = 0);
         IF mapTypes THEN
            Dialog.MapString("#System:"+x, x)     (*  <<<<<<<<<   *)
         END
      END ReadUtf8;


Есть небольшие артефакты, но в целом хочется отметить, что это отлично для совместимости со старыми файлами! Спасибо!

Автор:  arisu [ Пятница, 03 Февраль, 2023 07:49 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

да, там есть проблемки в закрасках некоторых (я не очень понял, как и что), и ещё всякие мелочи (включая отсутствие закраски паттернами, потому что её нет в bottleneck). я постепенно это доделаю. пока я хотел, чтобы в документации хотя бы основные картинки видно было.

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

на механизм замены посмотрю, спасибо.

Автор:  arisu [ Пятница, 03 Февраль, 2023 09:57 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

кстати, при записи тоже подменять бы надо, чтобы прошлые версии BBCB могли такие документы читать. я, например, довольно активно правлю документацию, когда что-то добавляю, и в принципе — нет причин, по которым её нельзя писать в совместимом формате; кое-какие наши улучшения потом можно будет предложить в версию Центра тоже, почему бы и да.

Автор:  Иван Денисов [ Пятница, 03 Февраль, 2023 11:24 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

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

В чате ещё мнения людей поспрашивал. И другие разработчики не хотели бы на постоянку оставлять такой механизм подмены. То есть это только как механизм миграции. Пусть он будет включён достаточно долгое время, чтобы у людей не было проблем, но через N лет отключим. Поэтому при сохранении пусть пишет новый вариант модуля в названии. Про версию Центра не беспокойтесь, там уже маловероятно будет движение какое-то, Йозеф выполнил некий общественный долг, который на себя возложил, Роберт ушел на пенсию, а я ушел в проект BlackBox Cross-Platform, который мы сейчас с вами обсуждаем. Луови нас и тут иногда читает, и помогает своей экспертностью. Так что нормально, если наши новые файлы будут несовместимы по этому аспекту со старыми сборками. Также в старых сборках нет поддержки png "из коробки", так что уже мы пошли по этому пути.

Автор:  arisu [ Пятница, 03 Февраль, 2023 12:34 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

ну, раз так, то возражений не имею: мне лично совместимость с 1.x версиями (на запись, в смысле) вообще не нужна.

sidenote: получается, что cross-platform сейчас bleeding edge? неплохо бы тогда иметь отдельный сайт для него, хотя бы просто со страницей, где написаны project goals, ссылки на скачивание, да и интернациональный раздел форума не помешает, мне кажется. конечно, там будет от силы полтора инвалида, но Центр выглядит очень мёртвым, и создаёт впечатление, что проект (BlackBox) опять приказал долго жить. что, очевидно, не так. ;-)

p.s.: забавно, что у нас есть — пусть и полурабочая — читалка pictures, но нет никакого инструмента, чтобы их создавать. ;-)

p.p.s.: но раз нам нужно только читать, но не писать документы от старых версий — то внезапно слова Антона Александровича про то, что StdStdCFrames надо выкинуть к чёрту, и сделать вместо этого контролы нормально становятся очень актуальными. я морочусь с CFrames только из-за обратной совместимости на запись.

Автор:  Борис Рюмшин [ Пятница, 03 Февраль, 2023 13:15 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

arisu писал(а):
sidenote: получается, что cross-platform сейчас bleeding edge? неплохо бы тогда иметь отдельный сайт для него, хотя бы просто со страницей, где написаны project goals, ссылки на скачивание, да и интернациональный раздел форума не помешает, мне кажется. конечно, там будет от силы полтора инвалида, но Центр выглядит очень мёртвым, и создаёт впечатление, что проект (BlackBox) опять приказал долго жить. что, очевидно, не так. ;-)

У него и так есть сайт https://blackbox.oberon.org/
Интрнациональный раздел форума не нужен. Тут кому надо прекрасно читают через переводчик или пишут сразу на английском.

Автор:  Иван Денисов [ Пятница, 03 Февраль, 2023 13:18 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

arisu писал(а):
p.s.: забавно, что у нас есть — пусть и полурабочая — читалка pictures, но нет никакого инструмента, чтобы их создавать. ;-)

Да их надо выкинуть эти старые картинки, и перерисовать в нормальном редакторе. У меня уже есть прототип для SVG, вот лучше его бы допилить.
https://blackbox.oberon.org/extension/Svg

Автор:  Иван Денисов [ Пятница, 03 Февраль, 2023 13:21 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

arisu писал(а):
p.p.s.: но раз нам нужно только читать, но не писать документы от старых версий — то внезапно слова Антона Александровича про то, что StdStdCFrames надо выкинуть к чёрту, и сделать вместо этого контролы нормально становятся очень актуальными. я морочусь с CFrames только из-за обратной совместимости на запись.

Я не разделяю это мнение, в этом решении читается применение Блэкбокса как вещи самой в себе. В то же время создание приложений Windows, в которых есть нативные элементы управления также до сих пор представляет ценность. И неизвестно куда ещё приведёт нас эволюция, какие ещё элементы управления придётся делать, может даже пробрасывать их по сети. Этот bottleneck я бы поберёг.

Автор:  Иван Денисов [ Пятница, 03 Февраль, 2023 13:39 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

Иван Денисов писал(а):
arisu писал(а):
p.s.: забавно, что у нас есть — пусть и полурабочая — читалка pictures, но нет никакого инструмента, чтобы их создавать. ;-)

Да их надо выкинуть эти старые картинки, и перерисовать в нормальном редакторе. У меня уже есть прототип для SVG, вот лучше его бы допилить.
https://blackbox.oberon.org/extension/Svg

Вот тут ещё стоит добавить. Что эти картинки потянут тогде XmlCore, а это уже куча модулей. И поэтому это большой минус для базового дистрибутива. В целом для простейших диаграмм в документации, можно бы сделать в качестве примера такой миниредактор по типу ObxLines. И в нём нарисовать именно то, что будет идти в минималичтичном комплекте для всех векторных картинок в документациях.

Автор:  arisu [ Пятница, 03 Февраль, 2023 16:41 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

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

Иван Денисов писал(а):
И неизвестно куда ещё приведёт нас эволюция, какие ещё элементы управления придётся делать, может даже пробрасывать их по сети. Этот bottleneck я бы поберёг.
так это не bottleneck, это хак для нативных контролов. довольно кривой хак, и очень ограниченый. в итоге вместо пользоваться всеми удобствами среды — мне приходится делать довольно низкоуровневый рендер. и пробросу это не поможет: его всё равно если делать — то на уровне бэкэнда. хотя контролам с редактором, например, вполне естественно иметь TextModel; а скроллбары лучше не делать полностью руками, дублируя код. как я уже говорил — это доставляет мне некоторое извращённое удовольствие, но это кривизна.

но вы правы в том, что я рассматриваю BBCB как вещь в себе, операционную систему. попытки омиков сделать из неё кадавра, замаскировав под «обычное приложение», особым коммерческим успехом не увенчались. зато теперь из BBCB торчат костыли, и впиваются в неудобные места. ещё один из прекрасных примеров таких костылей — использование в коде модальных диалогов. например, написать цикл, который закрывает все окна с запросом на сохранение в текущем варианте без модальных диалогов невозможно. а сделать модальные диалоги своими средствами среда не позволяет.

Автор:  Борис Рюмшин [ Пятница, 03 Февраль, 2023 16:44 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

Во-первых, был какой-то векторный редактор ещё для 1.3.2. Может его реанимировать стоит.
Во-вторых, есть eps например. SVG тяжеловесен, я бы его тоже не стал использовать в основном ББ.

Автор:  arisu [ Пятница, 03 Февраль, 2023 16:46 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

Борис Рюмшин писал(а):
У него и так есть сайт https://blackbox.oberon.org/
это не совсем то, что я имел в виду, я говорил скорее про сайт-презентацию проекта. но я такой сделать не могу, потому что у меня лапки, увы.

Автор:  Иван Денисов [ Пятница, 03 Февраль, 2023 18:53 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

Борис Рюмшин писал(а):
Во-первых, был какой-то векторный редактор ещё для 1.3.2. Может его реанимировать стоит.

А есть исходники?

Борис Рюмшин писал(а):
Во-вторых, есть eps например. SVG тяжеловесен, я бы его тоже не стал использовать в основном ББ.

Да, согласен, что в основном дистрибутиве для документации - это лишнее.

Автор:  Иван Денисов [ Пятница, 03 Февраль, 2023 18:57 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

arisu писал(а):
но вы правы в том, что я рассматриваю BBCB как вещь в себе, операционную систему. попытки омиков сделать из неё кадавра, замаскировав под «обычное приложение», особым коммерческим успехом не увенчались. зато теперь из BBCB торчат костыли, и впиваются в неудобные места. ещё один из прекрасных примеров таких костылей — использование в коде модальных диалогов. например, написать цикл, который закрывает все окна с запросом на сохранение в текущем варианте без модальных диалогов невозможно. а сделать модальные диалоги своими средствами среда не позволяет.

Это возможно, если вы почитаете DirtyHook. Антон предусмотрел такие немодальные диалоги закрытия в программе. Но так как это необычно, и слишком много изменений для обычного пользователя, то сейчас пока такой модальный вариант. А так гибкость свойственная Блэкбоксу запроектирована. Ну и я думаю, что оно хорошо работает, так как Антон это под себя делал как раз. Я у себя в проектах не тестировал это пока.

Автор:  arisu [ Пятница, 03 Февраль, 2023 20:02 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

Иван Денисов писал(а):
Борис Рюмшин писал(а):
Во-первых, был какой-то векторный редактор ещё для 1.3.2. Может его реанимировать стоит.
А есть исходники?
прямо в маковской 1.3.2 и есть, если я верно помню.

Иван Денисов писал(а):
Это возможно, если вы почитаете DirtyHook.
это невозможно не потому что нельзя сделать другой механизм, а потому что существующий код к другим механизмам просто-напросто не готов. и «подготовить» его никак нельзя без полной потери совместимости. любой цикл закрытия окон просто ожидает, что можно пройтись в этом цикле по окнам — и всё. он не готов ставить колбэки (или ожидать сообщений) и отдавать управление, его тогда надо полностью переписывать — причём везде, где такое есть. вот в этом проблема, и поэтому я называю это костылём. то же самое с модальными диалогами выбора шрифтов, цветов, etc. даже с выбором файлов: ну, open мы можем сделать отложено — а остальное всё ещё вынуждено вызывать диалоги из GTK, потому что ожидает модальности. всё это можно переписать постепенно (с потерей совместимости), но оно изначально костыльно, увы.

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

Автор:  Иван Денисов [ Пятница, 03 Февраль, 2023 20:15 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

arisu писал(а):
Иван Денисов писал(а):
Это возможно, если вы почитаете DirtyHook.
это невозможно не потому что нельзя сделать другой механизм, а потому что существующий код к другим механизмам просто-напросто не готов. и «подготовить» его никак нельзя без полной потери совместимости. любой цикл закрытия окон просто ожидает, что можно пройтись в этом цикле по окнам — и всё. он не готов ставить колбэки (или ожидать сообщений) и отдавать управление, его тогда надо полностью переписывать — причём везде, где такое есть. вот в этом проблема, и поэтому я называю это костылём.

Я думаю, что вы всё же не вникли. Так как я видел, как это работает с закрытием окон и немодальными диалогами закрытия.

Автор:  arisu [ Пятница, 03 Февраль, 2023 20:18 ]
Заголовок сообщения:  Re: StdPictures для показа старых векторных картинок

Иван Денисов писал(а):
Я думаю, что вы всё же не вникли. Так как я видел, как это работает с закрытием окон и немодальными диалогами закрытия.
да, я глубоко не читал, вы правы. но я физически не могу представить механизм реализации этого без модальности. вот у нас есть WHILE-цикл, который не отдаёт управление среде, пока не прокрутит и не закроет все окна. и… а как тут без модальности? или сопрограммы и неявный yield в хуке, или модальность, или переписывать WHILE-цикл. это может работать для одного окна, но не для случая, когда нам надо закрыть все окна сразу в цикле (как делает, например, «restore workspace»).

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

Страница 1 из 4 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/