akron1Спасибо за развернутое объяснение.
Quote:
Leency, во-первых в твоих программах вывод текста в буфер сделан неправильно. Ты создаешь огромный буфер и рисуешь туда текст, затем, выводишь в окно программы ту часть буфера, которая требуется. Это совершенно неприличный расход памяти (и её может не хватить). Надо, чтобы буфер соответствовал размеру окна программы. При обновлении окна программы, содержимое буфера стирается и текст рисуется заново, естественно, только те строки, которые попадают в окно.
В WebView такое сделать сейчас нельзя, т.к. процесс парсинга и рисования однопроходный. Для того, чтобы реализовать буфер окна нужен DOM.
В Calypte такое можно попробовать следать уже сейчас.
Для TxtView чтобы такое сделать нужно две вещи:
1. перевести каждый символ KF шрифта в растр (как делаешь ты в BF view)
2. написать функцию, которая будет накладывать партинку на картинку
Quote:
Подсветку синтаксиса я делал так:
Каждая строка перед выводом в буфер парсится и, по мере нахождения в строке той или иной лексемы, лексема выводится в графический буфер заданным цветом. Никакие списки лексем не создаются, потому что строки изменяемы и списки лексем тоже придется менять. Парсить надо только те строки, которые попадают в окно программы. На экране помещается всего несколько десятков строк, и поэтому такой способ, если сделать правильно, будет эффективен.
Здесь еще надо обратить внимание на многострочные комментарии. Начало комментария может быть выше видимой части текста. Поэтому, перед началом работы с текстом, надо найти все комментарии и пометить строки, в которых комментарий начинается, заканчивается или продолжается. И после изменения любой строки, проверить её на наличие в ней начала или конца комментария, чтобы поддерживать информацию о расположении комментариев актуальной.
Интересно. Вообще дело в том, что не только комментарии могут быть многострочными, но и строки "". Если реализовыватть только подсветку Си - вроде просто.
Но если универстально, чтобы использовались файлы подсветки разных систаксисов не думаю что твой вариант
"надо найти все комментарии и пометить строки, в которых комментарий начинается, заканчивается или продолжается". Например в HTML таких мест будет очень много.
Quote:
Разработка текстового редактора -- дело сложное. У меня есть некоторый опыт, хотя на идеал я не притендую.
У меня нет и я даже не имею ИТ образования. Многие студенты как курсовую делают редакторы. Смотрю исходники других проектов, анализирую. Возможно, стоит нанять человека на разработку или портирование редактора...