ImagePathFunctionWML

Материал из Wesnoth Life Wiki
Перейти к: навигация, поиск

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

Цвет команды (team-color)

In Wesnoth version 1.2, the only Image Path Function was ~TC(), which took two comma-separated parameters: the team number and the source color palette. The valid values for both of these parameters are defined in the file data/team-colors.cfg

Синтаксис

~TC( side_number , source_palette )

  • side_number - число от 1 до 9, означающее номер игровой стороны, чьим цветом будет раскрашен рисунок. Например, номер 1 это обычно красный игрок, номер 2 - синий и т.д.
  • source_palette - идентификатор исходной цветовой палитры изображения, обычно magenta.

Перекрашивание (re-color)

May be used to change some colors in an image.

Синтаксис

~RC( source_palette > color_range )

  • source_palette - идентификатор исходной цветовой палитры, обычно magenta.
  • color_range - идентификатор цветового диапазона из файла data/core/team-colors.cfg (также можно локально определить собственный диапазон и указать его ID).

Пример

In the following example, the magenta regions in an elvish captain's image are turned a healthy shade of green:

 [message]
     speaker=narrator
     image=units/elves-wood/captain.png~RC(magenta>green)
     message=_ "Now I am on the green team."
 [/message]

The IDs of the color ranges may be the lowercased English name of the palette's base color (e.g. 'red', 'brown', etc.). They may also be numeric color indices from the palette WML included with the game, but this is not recommended.

Смена палитры (palette-switch)

May be used to change colors in an image following the specifications of a source and target (new) palette.

Синтаксис

~PAL( source color palette > target color palette )

  • source color palette - the first parameter is a source color palette, such as magenta. Do not surround this parameter with quotes.
  • target color palette - the new palette to take the place of the source colors in the image.

Отражение (flip)

Отражает изображение по горизонтали или по вертикали.

Синтаксис

~FL( optional argument list )

  • vertical - if the string "vert" is found anywhere in the argument list, the image will be flipped vertically.
  • horizontal - if the string "horiz" is found anywhere in the argument list, the image will be flipped horizantally.
  • если список аргументов пуст, отражение происходит только по горизонтали.

Вращение (rotate)

(версия 1.11 и выше) Функция может быть использована для поворота изображения на угол, кратный 90 градусов.

Синтаксис

~ROTATE( degrees )

  • degrees - The number of degrees by which the image will be rotated. This must be a multiple of 90. Positive numbers indicate clockwise rotation, while negative numbers indicate counter-clockwise. (Zero indicates no rotation.)

If the number of degrees is omitted, a quarter turn (90 degrees) clockwise is assumed.

Обесцвечивание (greyscale)

Делает изображение черно-белым.

Синтаксис

~GS( )

Обрезка (crop)

Извлекает из рисунка прямоугольную область.

Синтаксис

~CROP(x,y,width,height)

  • x,y: Координаты верхнего левого угла вырезаемого прямоугольника.
  • width: Ширина прямоугольника.
  • height: Высота прямоугольника.

Все параметры должны быть неменьше нуля и в пределах координат изображения.

Наложение (blit)

Размещает другой рисунок поверх текущего. Так, к примеру, можно надеть на крестьянина шляпу: peasant.png~BLIT(hat.png,30,10)

Синтаксис

~BLIT(src,x,y)

  • src: an image file used as source for the blit, other image path functions can be used there.
  • x,y: top-left corner coordinates where to blit. Must be greater or equal than zero. If missing assume (0,0).

Наложение маски (mask)

Remove parts of the main image using the parameter image as a mask. Example: grass.png~MASK(circle.png) will give a circle of grass.

Синтаксис

~MASK(mask,x,y)

  • mask: Изображение, используемое как маска. К нему так же можно применить функции обработки.
  • x,y: Верхний левый угол наложения маски. Части рисунка, находящиеся за ее пределами, считаются прозрачными. По умолчанию координаты равны (0,0), и указывать их не обязательно.

Only the alpha channel of the mask is used and each alpha value will be the maximum alpha of the resulting image. Т.е., кроме того, что прозрачные области маски стирают соответствующие им куски рисунка, полупрозрачные области генерируют полупрозрачное же изображение.

Цветовой сдвиг (color-shift)

Performs simple per-channel color shifts by adding the arguments to the respective color channels.

Синтаксис

Multi-channel: ~CS(r,g,b) Single-channel: ~R(v), ~G(v), ~B(v)

The multichannel syntax assumes all arguments are set to zero initially, so one can use, e.g. ~CS(2,4) to add +2 and +4 units to the red and green channels respectively, leaving the blue channel intact. Arguments may be negative to diminish a channel's value; this can be used to change an image's brightness. Checks for out-of-range arguments or results (less than 0 or greater than 255) are made, so the resultant values are truncated if necessary.

The single channel syntax behaves exactly the same, except that only single-channel modifications are made per function. However, one can stack them to produce the same behavior as ~CS(), e.g. ~R(r)~G(g)~B(b), but that tends to be just a performance loss.

Color-blend function

(версия 1.11 и выше) Blends the image with the given color to produce a more controlled tinting effect than color-shifting, independently of the image's contents.

Синтаксис

~BLEND(r,g,b,o)

The color is defined by the r, g, and b parameters (integers ranging from 0 to 255). The o (opacity) parameter controls the amount by which the given color will be blended into the image, and may be specified either as a factor from 0.0 to 1.0, or percentage up to 100%. Thus, ~BLEND(r,g,b,0.5) and ~BLEND(r,g,b,50%) are equivalent.

Цветовой сдвиг на базе карт освещения (lightmap color-shift)

Выполняет попиксельное и поканальное смешивание с использованием другого изображения (карты освещения), позволяя создавать текстурированные световые эффекты.

Синтаксис

~L(lightmap)

For each pixel of the original image, it checks the RGB values from the corresponding pixel of the lightmap, slightly transform them, then add these values to the original pixel.

Преобразование сделано, чтобы расширить диапазон (0,255) до (-255,255), позволяя тем самым как прибавлять, так и вычитать RGB-значения. Его формула: (x-128)*2; что означает, что 0 дает -256, 128 дает 0, а 255 дает 254. Таким образом, чистая карта представляет из себя абсолютно серое изображение (RGB = 128,128,128), и любой отличный от серого пиксель влияет на цвета оригинала.

Имейте в виду, что карта масштабируется к размеру рисунка.

Масштабирование (scale)

Увеличивает или уменьшает изображение.

Синтаксис

~SCALE( new_width, new_height )

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

Управление прозрачностью (opacity)

Изменяет степень непрозрачности рисунка.

Синтаксис

~O( процент% или множитель )

Если параметр содержит символ процента (%), он рассматривается как процентаж от реальной непрозрачности рисунка. В противном случае он расценивается как множитель для исходной доли непрозрачности. Т.е., команды ~O(0.5) и ~O(50%) абсолютно идентичны: и та и другая уменьшает непрозрачность вдвое.

Размытие (blur)

Blurs a graphic at render time using the same algorithm used for in-game dialogs.

Синтаксис

~BL( radius )

Overlay function

Puts a time-of-day overlay on the image.

Синтаксис

~LIGHTEN()

~DARKEN()

Цвет фона (background color)

Устанавливает цвет всем (полу)прозрачным пикселам изображения.

Синтаксис

~BG(r,g,b)

Пустая функция

Ничего не делает.

Синтаксис

~NOP()

Приоритет функций

All functions are applied in left-to-right order, with the exception of RC(), TC() and PAL() which are applied always before any other functions. Standard team coloring for a unit is applied after all custom RC(), TC() and PAL() functions but before any other functions. That is, stuff like "units/elves-wood/fighter.png~CROP(0,0,20,20)~CROP(10,10,10,10)" would result in taking a crop of the rectangle x=20;y=20;w=40;h=40 and then taking a crop from that rectangle as x=10;y=10;w=10;h=10 resulting in the area x=30;y=30;w=10;h=10 from the original graphic.