Теория разработки графического редактора (иконок)

Projects yet to be implemented in working code
  • Блин, похвален твой запал в разработке)
    1. Вообще я бы выделил буфер в памяти под картинку, прогнал бы по массиву с формулой, вычисляющей цвет точки. Если в стиле того, как у тебя на картинке, то смотри https://ru.wikipedia.org/wiki/HSV_(цветовая_модель)
    Особенно преобразование из HSV в RGB. Может и готовые есть алгоритмы. Аргументами будут X,Y в матрице и значение бегунка на цветастой ленте.
    Ну потом, при клике по матрице просто координату клика и значение бегунка через формулу - и цвет rgb готов.
    Хм... я оставлял заглушку в icon, на случай добавления возможности выбора сторонней иконки, не из стандартного набора. Там в ini просто путь до иконки писать. Только поддержка ico надо тогда... или в принципе png уже есть, просто доработать немного... Короче повозиться надо будет.
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • А может лучше допилить существующую программу? Ведь никто кроме тебя не будет поддерживать исходники на C--. :mrgreen:

    А что, собственно, мешает посмотреть в исходники того же ColorDialog?
    Ну или IconEdit?

    http://websvn.kolibrios.org/listing.php ... b87958bf22
    1.PNG
    1.PNG (24.13 KiB)
    Viewed 8090 times
    В крайнем случае берёшь просто готовую картинку и выводишь. То есть, не нужно её заново рисовать программно.
  • GerdtR
    Я пока лишь собираю информацию и разбираюсь в темах. Рано судить)
    За линку на HSV спасибо)

    0CodErr
    > А может лучше допилить существующую программу? Ведь никто кроме тебя не будет поддерживать исходники на C--. :mrgreen:
    На ассемблере тоже никто поддерживать не будет, так что это не аргумент. :D

    Вообще это полная ерунда. В С-- можно писать как на ассемблере, так и на Си. Компилировать программу также просто как программу на Ассемблере - запустил батник и бинарник готов, не нужно разбираться с зависимостями, линковкой и прочей важной ерундой, как в других Си. Количество оберток, упрощающих написание программ - немерено. Начиная от коллекций кончая элементом "список". Писать на нем сможет любой, было бы желание.

    > В крайнем случае берёшь просто готовую картинку и выводишь.
    Я тоже так и подумал.
    Из хаоса в космос
  • Leency wrote:На ассемблере тоже никто поддерживать не будет, так что это не аргумент. :D
    А это и не был аргумент. Это скорее ответ на твой ответ, почему я переписал RUN с fasm на MASM-совместимый ассемблер с человеческими высокоуровневыми конструкциями, которые точно так же можно использовать, а можно и не использовать. Если смотрел исходник, то это очень упрощает понимание кода.
    Leency wrote:Вообще это полная ерунда. В С-- можно писать как на ассемблере, так и на Си. Компилировать программу также просто как программу на Ассемблере - запустил батник и бинарник готов, не нужно разбираться с зависимостями, линковкой и прочей важной ерундой, как в других Си. Количество оберток, упрощающих написание программ - немерено. Начиная от коллекций кончая элементом "список". Писать на нем сможет любой, было бы желание.
    Согласен, и это касается не только С--. От fasm, считаю, по возможности надо уходить, на нём кроме микроутилит что-то серьёзное писать проблематично, что и подтверждает этот проект: примитивные структуры данных, примитивные алгоритмы, потому что сложно.

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

    Что касается поддерживания исходников, в автосборке куча программ(в основном демо) на fasm, исходники которых давно уже никто не поддерживает и вряд ли кто-то будет поддерживать. Так что, я с тобой согласен, использовать лучше тот инструмент, который удобнее(ведь под каждую задачу свой инструмент). Прикладные программы хотя бы средней сложности нет смысла писать полностью на ассемблере.
  • Примитивные алгоритмы? А какое это имеет отношение к языку? Как раз fasm - самый мощный из ассемблеров.
  • 0CodErr wrote: От fasm, считаю, по возможности надо уходить, на нём кроме микроутилит что-то серьёзное писать проблематично, что и подтверждает этот проект: примитивные структуры данных, примитивные алгоритмы, потому что сложно.
    Если уровня примитивных структур хватает, то зачем делать сложнее?
    И да, как умение владения Fasm соотносится со сложностью алгоритмов (вспоминая о таком эпическом пакете на Fasm, как реализация рантайм поддержки Hiasm) :)
    Вот какого то уровня мета-информации, ихмо, и инструментария работы с ней может и не достаточно в проекте?

    P.S. В одном прошлом личном моменте мне попался исходник хитрого саморазвёртывающегося макроса на Masm, но даже не используя Masm (немного подумав)
    получилось изобразить максимально близкое решение к идеям данного макроса, но уже в рамках Форт языка. :)
  • Я пожалуй возьму пример с товарища Siemargl и посоветую напрячься и подумать :mrgreen:
    А то, что вы микроскопом гвозди забиваете, так это ваша проблема.
    Уметь так — не плохо, а плохо — делать это.
  • Плиз не холиварте. Тема о другом.
    Из хаоса в космос
  • Leency wrote:Плиз не холиварте. Тема о другом.
    Хорошо, но слово теория упомянутое в названии топикик предполагает достаточно широкое своё толкование. :)

    P.S. 0CodErr небольшое уточнение по вопросу одного из свойств ассемблера - высокоуровневости озвучивал примерно 14лет назад в такой форме - пункт 6.
  • Kopa wrote:P.S. 0CodErr небольшое уточнение по вопросу одного из свойств ассемблера - высокоуровневости озвучивал примерно 14лет назад в такой форме - пункт 6.
    Ну всё правильно
    https://web.archive.org/web/20040813172608/http://forth.org.ru:80/~kp/ wrote:Использование ассемблера данной СР позволяет добиться высокой читаемости и
    модифицируемости ассемблерного кода программы.
    Это достигается, в частности, возможностью ассемблера использовать такие
    структурные операторы как IF, ELSE, THEN, BEGIN, WHILE, UNTIL, REPEAT, CASE,
    и мн.др. (т.е. программа структурируется и может не иметь явных меток )
    о том и речь была
    0CodErr wrote:Это скорее ответ на твой ответ, почему я переписал RUN с fasm на MASM-совместимый ассемблер с человеческими высокоуровневыми конструкциями, которые точно так же можно использовать, а можно и не использовать. Если смотрел исходник, то это очень упрощает понимание кода.
  • А что, fasm не поддерживает человеческие высокоуровневые конструкции? Под него такие скрипты можно написать, что он сишный код скомпилирует. Я как раз начинал с MASM, а потом дорос до fasm и понял, что он лучше во всех отношениях.
  • Ребят, я ж попросил.
    Spoiler:Image
    Админы перенесите плиз часть темы в оффтопик.
    Из хаоса в космос
  • Я долго и адово тупил ходя вокруг да около, прокрастинируя как только мог.
    Но таки переборол себя и теперь приветствуйте: IconEditor для Колибри, который я мечтал написать сколько знаком с системой.
    Attachments
    Screenshot_1.png
    Screenshot_1.png (35.6 KiB)
    Viewed 7677 times
    Из хаоса в космос
  • Хорошо. Надо еще придумать что нибудь с хранением ресурсов для приложений.
  • Who is online

    Users browsing this forum: No registered users and 0 guests