Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];

Вниз

Нужна вычитка статьи   Найти похожие ветки 

 
Rouse_ ©   (2014-10-24 00:05) [0]

На этот раз речь пойдет о мультитаче.
Линк: http://rouse-debug.blogspot.ru/2014/10/multitouch-gestures-xe4.html

Статья завершена, сейчас ее просто причесываю (после девятой главы еще не все картинки и видео ролики готовы, форматирование текста так-же не успел сделать, завтра завершу).

Как обычно отзывы о очепятках и стилистике кода, как и о самой подаче патериала.

(Исходники к статье готовы, но не выложены).


 
Inovet ©   (2014-10-24 00:37) [1]

По своим имхам

клавиатура отдельно) причем
клавиатура отдельно), причем

у пользователей от ASUS
у пользователей - от ASUS

мы проводим огромное количество семинаров в месяц и вот именно на них, нашим лекторам начали демонстрировать несовместимость нашего ПО с этим пресловутым тачем.
мы проводим огромное количество семинаров в месяц, и вот именно на них нашим лекторам начали демонстрировать несовместимость нашего ПО с этим пресловутым тачем.

два раза даоеточие
плана: "я два раза тапнула
плана - "я два раза тапнула

абзац соеденить с предыдущим
А начальство все это скурпулезно отслеживало на своем порватом ноутбуке и готовило ТЗ :)

И вот настал тот день:
Мне на рабочий стол был воздвигнут третий монитор (с подержкой Touch ввода аж 10 пальцами) и поставлена задача
И вот настал тот день. Мне на рабочий стол был воздвигнут третий монитор (с подержкой Touch ввода аж 10 пальцами) и поставлена задача

я узнал что мультитач, с некоторыми ограничениями, стал
я узнал, что мультитач, с некоторыми ограничениями, стал

Скорее лишнее выделение
Я не могу расширить класс TRealTimeStylus, введением поддержки интерфейса IRealTimeStylus3 до кучи к IStylusAsyncPlugin, просто потому, что
Я не могу расширить класс TRealTimeStylus введением поддержки интерфейса IRealTimeStylus3 до кучи к IStylusAsyncPlugin просто потому, что

я хочу пять картинок по канвасу двигать в том порядке
я хочу двигать пять картинок по канвасу в том порядке

том порядке, которые
том порядке, который

Конечно, во втором случае, я могу сам перекрыть
Конечно, во втором случае я могу сам перекрыть


 
Inovet ©   (2014-10-24 01:08) [2]

1. Постановка задачи

навороченный Excel, правда с заточкой
навороченный Excel, правда, с заточкой

контингент пользователей, в данном случае сметчики.
контингент пользователей, в данном случае сметчиков.
или даже убрать смысловое повторение
контингент пользователей - сметчиков.

Ну впрочем немного перефразирую
Но, впрочем, немного перефразирую
Впрочем, немного перефразирую

дистанция между нашим софтом и Excel, примерно аналогична разнице
дистанция между нашим софтом и Excel примерно аналогична разнице

некий документ, так-же как и рисунок
некий документ, так же как и рисунок

рисунок в MsPaint, весь цимус в результате.
рисунок в MsPaint. Весь цимус в результате.

Разработан проект был по идеалогии WYSIWYG и представляет из себя
Разработан проект был по идеалогии WYSIWYG, и представляет из себя

представляет из себя в 90 процентов случаев некий кастомный класс (от TCustomControl) в котором пользователь работает
представляет из себя в 90 процентов случаев некий кастомный класс (от TCustomControl), в котором пользователь работает

пользователь работает так, как с обычным бумажным
пользователь работает, так же как с обычным бумажным

такие стандартные понятия как скролл
такое стандартное понятие, как скролл

скролл - он конечно есть,
скролл. Он, конечно, есть,

но им эмулируется манипуляция с колонками, в случае подвижки по горизонтали
но им эмулируется манипуляция с колонками в случае подвижки по горизонтали

стандартные сообщения о скролировании
стандартные сообщения о скроллировании

Не?
В базовом варианте (то что выдает ОС)
В базовом варианте (который выдает ОС)

выдает ОС), он умеет
выдает ОС) он умеет

события о клике мышки (эмулируемое системой через тап на тачскрине) и WM_MOUSEMOVE, так-же эмулируемое системой через тач.
события о клике мышки, эмулируемое системой через тап на тачскрине, и WM_MOUSEMOVE, так же эмулируемое системой через тач.

тап двумя пальцами, для вызова PopupMenu
тап двумя пальцами для вызова PopupMenu

После "А что нужно:" идёт перечисление, значит пункты надо разделять через запятую. Ещё не понятно - "А что нужно:", и вдруг первым пунктом идёт "что умеет".


 
Inovet ©   (2014-10-24 01:16) [3]

2. Используемые термины

Так не правильнее?
вполне вероятно, что не правильными
вполне вероятно, что неправильными

Сессия - начинается когда палец коснулся тачскрина, продолжается когда пользователь водит по нему, не отпуская пальца и завершается, когда палец убран.
Сессия - начинается, когда палец коснулся тачскрина, продолжается, когда пользователь водит по нему, не отпуская пальца, и завершается, когда палец убран.

Именно в процессе?
В процессе сессии строится ее маршрут.
может быть, что-то вроде
Во время сессии строится ее маршрут.


 
Inovet ©   (2014-10-24 01:34) [4]

3. Разбираемся с обработкой WM_TOUCH

необходимо определиться, а поддерживает
необходимо определиться - а поддерживает

Скорее прилагательное
если у вас нет устройств с поддержкой мультитача, работающих на OS Windows
если у вас нет устройств с поддержкой мультитача работающих на OS Windows

просто теорией, без возможности проверки
просто теорией без возможности проверки

попробовать его пощупать, для этого выберем
попробовать его пощупать. Для этого выберем

Без вызова данной функции, наше выбранное окно не будет
Без вызова данной функции наше выбранное окно не будет

отлучить?
Отлучить окно от получения
не
Отключить окно от получения
?

как оказалось – это уже работает и без фильмов
как оказалось, это уже работает и без фильмов

убери повтор
а оказывается воть какой 46 дюймовый девайс уже на рынке есть
а воть какой 46 дюймовый девайс уже на рынке есть
или
а, оказывается, воть какой 46 дюймовый девайс уже на рынке есть

информацию о сообщении, посредством вызова функции
информацию о сообщении посредством вызова функции

очистка данных в куче всеравно произойдет
очистка данных в куче все равно произойдет

тоже перечисление, элементы надо разделить. Вот точка с запятой и подойдёт
Что от нас требует функция GetTouchInputInfo:

Опять молодцы, при
Опять молодцы: при

Это все, а теперь попробуем
Это все. А теперь попробуем


 
Inovet ©   (2014-10-24 01:53) [5]

Сессия, это... ну давайте вот так:
Сессия, это... Ну, давайте вот так:

причем каждая из сессий еще не завершена
причем, каждая из сессий еще не завершена

По сути для нормальной работы
По сути, для нормальной работы

нам требуется от данной структуры
от данной структуры нам требуется

показу самого PopupMenu, в момент обработчика события
показу самого PopupMenu в момент обработки события
показу самого PopupMenu в обработчике события

я даже допускаю под Windows 8 и выше что-то поменялось
я даже допускаю - под Windows 8 и выше что-то поменялось

представление о том: "как это работает", попробуем написать
представление о том "как это работает", попробуем написать


 
Inovet ©   (2014-10-24 02:05) [6]

можно даже написать приложение эмулируюшее рояль
можно даже написать приложение, эмулируюшее рояль

правда в рояле есть еще педали
правда в рояле есть еще педали и чуствительность к силе нажатия

Этого вполне достаточно чтобы "пощупать" мультитач
Этого вполне достаточно, чтобы "пощупать" мультитач

Ну и выполним инициализацию:
Ну, и выполним инициализацию:

А так-же их отрисовку
А так же их отрисовку

Запустите, получится как-то так:
Запустите. Получится как-то так:

Обвес готов, теперь попробуем изменить картинку, через обработку WM_TOUCH.
Обвес готов. Теперь попробуем изменить картинку через обработку WM_TOUCH.

а сейчас это будет ошибкой, ну хотя-бы потому что позиции квадратов
а сейчас это будет ошибкой хотя бы потому, что позиции квадратов

ориентируясь на структуру, заданную при начале
ориентируясь на структуру заданную при начале
ориентируясь на структуру заданную в начале

Ну и концовка, в виде обработки флага
Ну, и концовка в виде обработки флага

В которой мы отключаем квадрат, от тач сессии и перерисовываем сам канвас.
В которой мы отключаем квадрат от тач сессии и перерисовываем сам канвас.


 
Inovet ©   (2014-10-24 02:05) [7]

можно даже написать приложение эмулируюшее рояль
можно даже написать приложение, эмулируюшее рояль

правда в рояле есть еще педали
правда в рояле есть еще педали и чуствительность к силе нажатия

Этого вполне достаточно чтобы "пощупать" мультитач
Этого вполне достаточно, чтобы "пощупать" мультитач

Ну и выполним инициализацию:
Ну, и выполним инициализацию:

А так-же их отрисовку
А так же их отрисовку

Запустите, получится как-то так:
Запустите. Получится как-то так:

Обвес готов, теперь попробуем изменить картинку, через обработку WM_TOUCH.
Обвес готов. Теперь попробуем изменить картинку через обработку WM_TOUCH.

а сейчас это будет ошибкой, ну хотя-бы потому что позиции квадратов
а сейчас это будет ошибкой хотя бы потому, что позиции квадратов

ориентируясь на структуру, заданную при начале
ориентируясь на структуру заданную при начале
ориентируясь на структуру заданную в начале

Ну и концовка, в виде обработки флага
Ну, и концовка в виде обработки флага

В которой мы отключаем квадрат, от тач сессии и перерисовываем сам канвас.
В которой мы отключаем квадрат от тач сессии и перерисовываем сам канвас.


 
Inovet ©   (2014-10-24 02:18) [8]

6. Разбираемся с Gesture (жестами)

Мультитач, это только первый шажок
Мультитач - это только первый шажок

А вторая, некие кастомные жесты, переданные пользователем:
А вторая - некие кастомные жесты, переданные пользователем:

с переданным маршрутом, посредством Recognizer.Match.
с переданным маршрутом посредством Recognizer.Match.

Все остальные параметры, приходящие в IsGesture по сути можно исключить, они являются обвесом функции.
Все остальные параметры, приходящие в IsGesture, по сути, можно исключить - они являются обвесом функции.

Вот она то нам и нужна.
Вот она-то нам и нужна.

Врятли вы сможете провести идеально ровную линию
Вряд ли вы сможете провести идеально ровную линию

по оси Х влево, без изменения позиции по оси Y
по оси Х влево без изменения позиции по оси Y

Впрочем, сейчас нам это не понадобится и посмотрим, что можно сделать
Впрочем, сейчас нам это не понадобится. Посмотрим, что можно сделать


 
Inovet ©   (2014-10-24 02:27) [9]

7. Распознаем мультитач жесты (Gestures).

передали ранее записаный массив
передали ранее записанный массив

Но представьте что пользователь сделал все то-же самое
Но представьте, что пользователь сделал все то же самое

А что если все точки маршрута сессии содержат одни и те-же координаты?
А что если все точки маршрута сессии содержат одни и те же координаты?

под данное условие попадет так-же жест "Press And Tap"
под данное условие попадет также жест "Press And Tap"

А что делать если жесты от двух сессий не совпали?
А что делать, если жесты от двух сессий не совпали?

Даже Rotate можно вполне возможно задетектировать
Даже Rotate вполне возможно задетектировать


 
Inovet ©   (2014-10-24 02:28) [10]

Хватит пока что.


 
Германн ©   (2014-10-24 02:38) [11]

"И вот настал тот день:
Мне на рабочий стол был воздвигнут третий монитор (с подержкой Touch ввода аж 10 пальцами) и поставлена задача - это должно заработать в течении трех дней!!!"
Ну блин! Как говорится - респект и уважуха!
P.S. А те учителя даже и не подозревали какого монстра они создают, когда наставляли тебя на путь истинный. :)


 
Eraser ©   (2014-10-24 02:48) [12]


> Не уверен что начальство оценило бы, если бы я сказал, что
> самый простой способ решения задачи выглядит в виде апдейта
> на ХЕ7 (плюс времязатраты на проверку кода на совместимость
> после апа).


ну а почему бы и нет? вот микрософт на радостях windows 8 с плитками выпустила под эту тему, всю планету решили поучить как надо ) а уж версию Делфи ради тачскрина уж можно обновить, тем более, что там не только в этом доработки.


 
картман ©   (2014-10-24 02:48) [13]


> Inovet ©   (24.10.14 00:37) [1]


> А начальство все это скурпулезно отслеживало

тоже всю жизнь слышал, как говорят "скурпулезно", ан нет - скрупулезно))


 
Inovet ©   (2014-10-24 03:35) [14]

> [13] картман ©   (24.10.14 02:48)
> ан нет - скрупулезно

Это надо ещё через Ворд прогнать. Там же

с подержкой Touch ввода аж 10 пальцами
с поддержкой Touch ввода аж 10 пальцами

"порватом" - понимаю, стилистичеки так задумано. Ладно хоть не дырявый.


 
Rouse_ ©   (2014-10-24 10:32) [15]

Ага спасибо, вечером буду перелопачивать :)


 
Kerk ©   (2014-10-24 10:37) [16]

Блин, когда увидел посты Inovet-а, подумал, что он (или я) с ума сошел. Теперь только понял что он имел ввиду.


 
Inovet ©   (2014-10-24 22:17) [17]

> [15] Rouse_ ©   (24.10.14 10:32)
> Ага спасибо, вечером буду перелопачивать

Ты после перелопатки линк кинь, там, может, ещё чего найдётся поправить или назад вернуть. Я вчера остановился на 7.

ПС. Статья хорошая - по MSDN всё равно надо изучать, а тут уже опыт изучения представлен.


 
Inovet ©   (2014-10-24 22:21) [18]

> [16] Kerk ©   (24.10.14 10:37)
> что он (или я) с ума сошел

Мы все в какой-то мере сошли с него, иначе - куда же идти дальше.


 
Rouse_ ©   (2014-10-25 22:39) [19]


> Inovet ©   (24.10.14 22:17) [17]
> Ты после перелопатки линк кинь

Готово, весь код (текстовый) причесан, твои советы учтены, щас досрабатываю картинки, а видео буду или завтра или после завтра выкладывать.
В первых седьмых главах, по которым ты пробежался, я еще немного стилистику поменял, сейчас работаю над остальными.


 
Rouse_ ©   (2014-10-25 22:44) [20]

Думаю в нижних главах надо еще немного теории дать и немного больше разжевать подход, а то слишком сухо получается имх.


 
Inovet ©   (2014-10-26 02:27) [21]

Ок. Но я теперь только среди недели смогу, если к тому времени бОльшие грамотеи из местного сообщества не поправят много лучше.


 
manaka ©   (2014-10-26 13:20) [22]

Де юре: мы проводим огромное количество семинаров в месяц, и вот именно на них, нашим лекторам начали демонстрировать несовместимость нашего ПО с этим пресловутым тачем.

Запятые кажутся лишними.
Первую лучше заменить на точку.
Вторая вообще не нужна.


 
Inovet ©   (2014-10-26 19:16) [23]

Хм. Розыч исправил, но только половину из показанных ошибок что ли?:)


 
Rouse_ ©   (2014-10-27 11:10) [24]

Да не, все исправил. Часть вообще переписал.


 
Rouse_ ©   (2014-10-31 14:26) [25]

Готово, все вроде поправил - можно качать исходники и самостоятельно эксперементировать: http://alexander-bagel.blogspot.ru/2014/10/multitouch-gestures-xe4.html



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.068 c
15-1421962205
Юрий
2015-01-23 00:30
2015.09.10
С днем рождения ! 23 января 2015 пятница


8-1236500354
deswan
2009-03-08 11:19
2015.09.10
Graphics32 - навигация по изображению


15-1414820425
Юрий Зотов
2014-11-01 09:40
2015.09.10
Чудеса


2-1393344362
Антоха
2014-02-25 20:06
2015.09.10
Unable to complete network request to host


15-1417707045
Дмитрий С
2014-12-04 18:30
2015.09.10
Получить все открытые документы Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский