Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Даже с одним шрифтом у символов разная ширина, разное межстрочное расстояние, разный масштаб.
И? Всё что тебе тут надо — GetTextExtentPoint32W и GetTextExtentExPointW
Системный рендерер всё расчёты сделает за тебя.
НС> Кроме этого нужно учитывать попиксельный клиппинг
Поскольку всё равно рисуешь в Bitmap по размеру viewport то достаточно посимвольного через GetTextExtentExPointW, всё остальное за тебя обрежет GDI renderer при вызове TextOutW.
Ну или можно взять функцию чутка помедленнее, тот же DrawTextW, который сам умеет обрезать по заданному RECT
НС> подавление фликеринга при скроллинге
Это ж вообще азбука!
BitBlt буфера, куда отрисован viewport уже очень давно не фликерит.
НС> отсутствие аппаратного курсора
А в чём проблема нарисовать свой через банальный BitBlt?
НС> поддержку мыши с пиксельными координатами и т.д.
Да не проблема жеж вообще!
Банальный поиск в какой сегмент текста попадаешь путём поиска в каком RECT находятся мышиные координаты.
RECT для каждого сегмента ты уже получил когда их рисовал во viewport.
Потом выясняешь внутри строки символьное положение через GetTextExtentExPointW и всё.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока