Axiom Справочник языка

Оператор

Оператор SMOOTH

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

Что фильтруется

SMOOTH фильтрует весь кадр, а не отдельную фигуру или надпись: программа выбирает один режим для результата рисования. Фильтрация включается в момент, когда кадр показывается в области иного размера, поэтому сами нарисованные пиксели и координаты, которыми оперирует программа, остаются прежними.

Действие распространяется на обе графические поверхности — SCREEN и CANVAS. В текстовом режиме SCREEN 0 графический кадр не выводится, поэтому сглаживание там не применяется, а выбранный режим сохраняется для следующей графической поверхности.

Синтаксис

SMOOTH ON
SMOOTH OFF

Это две отдельные формы одного оператора. После ключевого слова SMOOTH указывается ровно одно состояние.

Состояния ON и OFF

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

СостояниеЗначение
ONВключает билинейное смешивание соседних пикселей при выводе кадра в другом размере.
OFFОставляет точечную выборку ближайшего исходного пикселя при изменении размера. Это состояние используется по умолчанию при каждом новом запуске программы.

Когда изменение становится видимым

SMOOTH ON сразу обновляет способ показа уже опубликованного графического кадра. На CANVAS новый кадр, который программа ещё рисует и не показала оператором PRESENT, остаётся невидимым до публикации; текущий опубликованный кадр при этом переключается сразу. Обратный вызов SMOOTH OFF немедленно возвращает точечную выборку.

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

Правила работы и ограничения

  • Оператор SMOOTH можно выполнить до открытия SCREEN или CANVAS; выбранное состояние применяется к следующему графическому кадру.
  • Выбранное состояние сохраняется при переключении между SCREEN и CANVAS и сбрасывается в OFF при новом запуске программы.
  • Если размер кадра совпадает с размером области вывода, фильтрация не меняет пиксели.
  • Билинейная интерполяция может смягчить мелкий текст и тонкие линии. При сильном уменьшении мелкие детали всё равно могут потеряться.
  • Оператор SMOOTH меняет только представление кадра. Функция POINT(x, y) продолжает возвращать цвет логического пикселя.

Диагностика

  • MB1001: после SMOOTH не указано состояние или указано не ON/OFF. Допустимы ровно две формы: SMOOTH ON и SMOOTH OFF.
  • MB1004: после состояния ON или OFF переданы лишние токены. После режима должен завершиться оператор.

Пример

' Включаем сглаживание готового кадра SCREEN.
SMOOTH ON
SCREEN 2
CLS
PSET (20, 20), 12
CIRCLE (220, 160), 60, 14
  PRINT "POINT сохраняет логический цвет: "; POINT(20, 20)
SLEEP

Сглаживание включено до открытия экрана, поэтому применяется к первому же кадру. Последняя строка показывает, что чтение пикселя не зависит от фильтра: POINT возвращает цвет логического пикселя, а не смешанный цвет его отображения.

Запускаемый пример для изменения размера SCREEN находится в samples/operators/smooth/screen_resize.axm. Перемещение окна SCREEN 8 и переключение режима клавишами проверяет samples/operators/smooth/screen_move_resize.axm. Пример с переключением режима во время работы CANVAS доступен в samples/operators/smooth/canvas_resize.axm.

См. также