Dynamic Input Area

В Palm OS наконец-то добавили поддерку Virtual Graffiti, которая теперь называется Dynamic Input Area API. После анонсов TT3 разадались восторженные вопли: "теперь программы будут автоматически поддерживать прямоугольные экраны". Нифига подобного.

Как показал опыт разработчика еще с хандерских времен, поддержка VG (DIA по-новому) - дело не очень приятное. Его поддержка требует внесения модификаций в код. Есть три фрагмента, которые нужно изменять:
  1. поддержка _пере_рисовки экрана. масса программ под пальм рисует форму один раз, при ее открытии. Чаще всего этого хватает. У большинства диалогов есть признак SAVEBEHIND, так что даже после их вызова перерисовка не нужна. Для поддержки DIA нужно уметь перерисовываться.
  2. “Умное“ изменение размеров контролов. Программа должна знать, какие элементы интерфейса нуждаются в перерисовке. Чаще всего это таблица-список-гаджет. Если программист написал аккуратно, не завязываясь на размеры контрола, то это сделать просто. А если же интерфейс втискивался попиксельно, то могут быть проблемы. Каждый, кто пробовал hrfmmap для NR, тот видел, какие регулярно вылезали “загогулины“.
  3. Самое неприятное - контроль силкскрина при вызове других форм. В каждой программе, которая поддерживает 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 требуют переделки мозгов программеров, привыкших к фиксированным формам. А переделка - это сложно.