В PalmOS наконец-то добавили поддерку Virtual Graffiti, которая теперь называется Dynamic Input Area API. После анонсов TT3 разадались восторженные вопли: “теперь программы будут автоматически поддерживать прямоугольные экраны”. Нифига подобного.
Как показал опыт разработчика еще с хандерских времен, поддержка VG (DIA по-новому) - дело не очень приятное. Его поддержка требует внесения модификаций в код. Есть три фрагмента, которые нужно изменять:
- поддержка _пере_рисовки экрана. масса программ под пальм рисует форму один раз, при ее открытии. Чаще всего этого хватает. У большинства диалогов есть признак SAVEBEHIND, так что даже после их вызова перерисовка не нужна. Для поддержки DIA нужно уметь перерисовываться.
- “Умное“ изменение размеров контролов. Программа должна знать, какие элементы интерфейса нуждаются в перерисовке. Чаще всего это таблица-список-гаджет. Если программист написал аккуратно, не завязываясь на размеры контрола, то это сделать просто. А если же интерфейс втискивался попиксельно, то могут быть проблемы. Каждый, кто пробовал hrfmmap для NR, тот видел, какие регулярно вылезали “загогулины“.
- Самое неприятное - контроль силкскрина при вызове других форм. В каждой программе, которая поддерживает DIA была версия с классическим глюком: минимизируем силк, открываем окно поиска, максимизируем силк, возвращаемся и видим часть формы, закрытую силком. Вот эту проблему, кстати, DIA API решает очень изящно.
Так вот. Я слабо верю в то, что DIA умеет само увеличивать экран для программ. Фразу “I had over 80 games installed on my Palm Tungsten T and another 50 other bits of software. Only 3 apps had slight problems with the virtual graffiti.“ нужно понимать по-другому: наличие DIA не создало проблем при работе программ, но и пользы не было.
А sheet2go как пример ландскейпа - банально. Точно так же хандера рекламировалась квикшитом много лет тому назад.
Я уже говорил: DIA и rotate требуют переделки мозгов программеров, привыкших к фиксированным формам. А переделка - это сложно.