Психбольница в руках пациентов - [95]

Шрифт
Интервал

Большинство продуктов конкурентов, в том числе и продукт, предшествовавший Peacock, просто сбрасывали изображения в файловую систему, оставляя пользователя наедине с традиционной иерархией, позволяющей хранить и находить отсканированные изображения. Но этой файловой системой в действительности очень сложно пользоваться, она практически бесполезна.

Файловая система требует, чтобы Чед назначил имя отсканированному изображению, затем выбрал место в иерархии файловой системы, где изображение следует сохранить. А если Чеду понадобится найти изображение, ему придется вспомнить имя изображения и место, где это изображение хранится. Так уж получилось, что Чед не очень силен в запоминании подобных фактов. А компьютер, обладая жестким диском, идеально подходит для запоминания подобных фактов, но не делает этого. Он заставляет Чеда помнить и место хранения, и имя файла.

В нашем варианте программное обеспечение сканера не заставляет Чеда назначать изображениям имена и место сохранения. Программа все делает сама. Когда Чеду понадобится найти изображение, он сможет воспользоваться любым из его свойств, таких как дата сканирования, размер, содержание, отметка об экспорте в другую программу.

Не позволяя Чеду и Магнуму возиться с различными аппаратными настройками сканера, мы сосредоточили усилия на трех более важных моментах:

• Исключили из интерфейса все идиомы управления сканером.

• Сделали невозможной потерю отсканированных изображений в дебрях файловой системы.

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

Мы рассмотрели все доступные функции работы с изображениями и решили, что лишь три из них абсолютно необходимы. Остальные можно исключить или позднее выполнить в других, более подходящих приложениях, таких как Photoshop. Вот эти три функции:

• Обрезка, отсечение изображения по краям.

• Изменение размера изображения.

• Изменение ориентации, поворот изображения.



Набор функций получился очень маленький, но в него вошли только необходимые и часто используемые возможности, поэтому мы решили обеспечить всем функциям высочайшее качество и простоту применения. На коде удалось сэкономить в целом столько, что команда разработчиков получила необходимое время на достижение поставленных целей.

Высококлассная обрезка

Все компьютерные инструменты обрезки, с которыми мне приходилось сталкиваться, работают одинаково неправильным образом. Пользователь щелкает мышью и растягивает прямоугольный контур. Щелчок происходит в левом верхнем углу области отсечения, а точка, где заканчивается движение, становится правым нижним углом области. Все, что находится вне области, удаляется, а фрагмент внутри области становится новым изображением. Метод быстрый, простой, легкий в реализации, доступный для понимания. Тяжеловесная графическая программа Photoshop тоже использует этот способ. Тем не менее, способ имеет серьезные недостатки. Прежде всего, он дает низкую точность – область следует выделять одним четким движением. При этом весьма вероятно, что, определив три стороны области, пользователь не сможет определить верно четвертую, не затрагивая одну или несколько корректно размеченных сторон. Кроме того, необратимость операции означает, что программа может сохранить два различных варианта обрезки одного изображения.



Наш вариант инструмента решил обе проблемы простыми для освоения и понимания способами. На каждой из четырех сторон отсканированного изображения присутствует постоянно видимый якорь линии обрезки. Якорь является наглядным инструментом непосредственного манипулирования. Теперь Чеду достаточно щелкнуть по якорю и потащить за него, чтобы получить мгновенный и соответствующий действию наглядный отклик, оценить последствия своих действий. По мере перемещения якоря часть изображения, оставленная «за бортом», меняет свой цвет на призрачно-серый. Становится очевидно, что происходит обрезка изображения, но также ясно, что обрезка еще не произошла необратимо. Чед может так же легко перетащить якорь на прежнее место и таким образом восстановить фрагмент изображения.

Перемещая один якорь, Чед сразу понимает, что четыре стороны области обрезки независимы, что перемещение одной стороны не затрагивает три другие. Он может корректировать и изменять область обрезки, пока не получит нужный результат. Совсем другое ощущение оставляют традиционные инструменты обрезки, где процесс модален, необратим, должен выполняться одним идеальным движением. Очень немногие пользователи компьютеров обладают нужной ловкостью рук, позволяющей выполнить хорошо такое движение. И Чед определенно не входит в их число. Более того, обрезка должна быть наглядной и, как правило, итеративной. Даже художникам требуется несколько попыток, чтобы добиться нужного результата. Старые инструменты просто не поддерживали такой подход. А тот, что мы создали для Logitech, делал это замечательно.

Даже окончательный выбор Чеда не делал обрезку необратимой. Текущие настройки области обрезки считались просто свойством изображения, а изображение всегда хранилось в полном объеме (отдельный пункт меню позволял сделать обрезку необратимой, если требовалась экономия дискового пространства). Так что Чед мог отсканировать фотографию своей семьи, усечь изображение, исключив всех, кроме кого-то одного, например матери, а результат использовать в домашней работе и потом, месяца через три, вернуться к той же фотографии и изменить область обрезки, включив в результат только отца, и его фотографию поместить затем в письмо. Любая другая программа сканирования заставила бы Чеда повторно сканировать изображение.


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.