LINUXTALKS.CO

MakarovDiagram

 

L


0

1

Много лет назад (больше десяти) у меня был один pet-проект, суть которого была в том, чтобы написать на C# удобную рисовалку диаграмм. И я довольно далеко продвинулся, но в какой-то момент упёрся в производительность GDI+: при большом количестве элементов и просто на больших экранах программа неприемлемо жрала процессорное время и порой даже лагала. На радикальное переписывание её с GDI+ у меня небыло уже сил и я её забросил. Видео рабочей версии можно посмотреть тут:

https://www.youtube.com/watch?v=KUIQJuy_Q4k

Впоследствии я неоднократно порывался возродить проект, но то мне не мог определиться с рендером, то времени небыло, то ещё с какими-то организационными моментами не мог прийти к консенсусу. Сейчас у меня были свободные выходные и я поэкспериментировал с биндингами Direct2D к C# и получил отличную производительность плюс его апи не такой блевотный в плане отрисовки 2D-графики как у других хардварно-ускоренных библиотек. И, конечно, никаких лагов тут не наблюдается: я потестировал фуллскрин на моём ультра-вайд мониторе с 10.000 объектов на экране - и оно шикарно работает.

Я набросал на коленке PoC-билд и вот пример его работы:

https://youtu.be/vrB31C1_Lss

Если хотите следить за проектом, подписывайтесь на тему и на канал на ютубе.

Это НЕ опенсорс проект, исходников не будет. Мои опенсорс поделки вы всегда можете найти на гитхабе: https://github.com/nightmarez

★★★★★★
Ответ на: комментарий от metalbeaver

Добавил соединительные линии для блоков на основе кривых Безье. Уже что-то вырисовывается отдалённо похожее на редактор.

https://www.youtube.com/watch?v=Zafq8VSgR0A

metalbeaver    
★★★★★★
Windows / Chrome
Ответ на: комментарий от metalbeaver

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

metalbeaver    
★★★★★★
Windows / Chrome
Ответ на: комментарий от metalbeaver

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

torvn77    
★★★
Android / Chrome
Ответ на: комментарий от torvn77

Спасибо, капитан. Разработка ПО в большей части и состоит из вот таких мелочей, на которые в итоге уходит 80% времени. Накидать каркас такого приложения – не большого ума дела, а вот запилить соединительные линии на кривых, так чтобы они в всех ситуациях выглядели более-менее корректно, – тут уж поебаться надо. И, главное, не покажешь результат этой работы типа глядите что запилил – потому что на первый взгляд: ну были линии, ну остались линии, с чем там ебался пару дней – не понятно.

metalbeaver    
★★★★★★
iPhone / Safari
Ответ на: комментарий от JamesHolden

У меня было много неприятных кейсов, когда мой код тупо брали и выдавали за свой. Даже была ситуация, когда я ещё в вузе учился, что какой-то чёрт взял мой код, выдал за свой, получил профит (зачёт там или что, уже не помню), а потом пришёл мне рассказывать какой я лох 🤷‍♂️

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

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

metalbeaver    
★★★★★★
iPhone / Safari
Ответ на: комментарий от metalbeaver

В этой теме мне предлагают в открытый доступ выкладывать свои наработки, в соседней – донатить деньги ВСУ вместо покупки VR-шлема. Вы ебанутые тут наглухо что ли? Или ёбаные лицемеры?

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

Всем было абсолютно поебать, когда я жил больным в Крыму, потерял работу и возможность нормально работать, был выпиздован на улицу бывшей женой, голодал, и хуй пойми как выжил и съебал. Всем было поебать, как я пытался встать на ноги и лечил голову после этого. Всем было поебать, когда я спиздовывал от войны. А теперь такие: а задонать ВСУ, а выложи исходники. Да идите вы нахуй, долбоклюи ебаные.

metalbeaver    
★★★★★★
iPhone / Safari
Ответ на: комментарий от metalbeaver

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

Просто сделай Guidline с прилипанием как он сделан в Inkscape, а об остальном пусть думают пользователи программы.

torvn77    
★★★
Linux / Chrome
Ответ на: комментарий от metalbeaver

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

Если ты уверен, что по этой лицензии твой софт будет кому-то нужен кроме тебя. Вот на что я намекал.

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

Только опять же, тут как бэ немного форум про линукс и опенсурс, поэтому ожидать интереса здесь к вин-онли закрытому проекту странно.

JamesHolden    
★★★★★★★
Android / Chrome
Ответ на: комментарий от metalbeaver

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

JamesHolden    
★★★★★★★
Android / Chrome
Ответ на: комментарий от metalbeaver

Я думаю, стоит попробовать начать развивать программу в направлении рисования вот таких майн мапов:

https://vk.com/video-216360964_456239541

Второе направление, я думаю, стоит отдать алгоритмам.

И третье, возможно, стоит посмотреть в сторону рисования UML и подобного.

metalbeaver    
★★★★★★
Windows / Chrome

У меня сильная депрессия. Сегодня вечером сел в кои-то веки поковырять проект. Починил одну утечку памяти, попробовал как выводить текст через DirectDraw, и всё… сижу и тупо пялюсь в код. Зачем это всё, какой смысл.

metalbeaver    
★★★★★★
Windows / Chrome
Ответ на: комментарий от metalbeaver

У меня сильная депрессия.

И с чего ты решил, что ковыряние в этой программе тебе поможет? Или раньше помогало?

Зачем это всё, какой смысл.

А сколько юзеров у программы?

ThePlayerZero    
★★
Последнее исправление: ThePlayerZero (всего исправлений: 1)

Android / Chrome
Ответ на: комментарий от ThePlayerZero

Программирование – чуть ли не единственное занятие, от которого не воротит через 15 минут.

Ноль пользователей, это просто наброски pet-проекта.

metalbeaver    
★★★★★★
iPhone / Safari