asimagexml(1)

NAME
asimagexml - XML schema to be used for scripting image manipulation by AfterStep and ascompose libAfterImage/asimagexml

NAMEascompose
is a tool to compose image(s) and display/save it based on supplied XML input file.

DESCRIPTION
ascompose reads supplied XML data, and manipulates image accordingly.
It could transform images from files of any supported file format,
draw gradients, render antialiased texturized text, perform
superimposition of arbitrary number of images, and save images into
files of any of supported output file formats.
At any point, the result of any operation could be assigned a name,
and later on referenced under this name.
At any point during the script processing, result of any operation
could be saved into a file of any supported file types.
Internal image format is 32bit ARGB with 8bit per channel.
Last image referenced, will be displayed in X window, unless -n option
is specified. If -r option is specified, then this image will be
displayed in root window of X display, effectively setting a background
for a desktop. If -o option is specified, this image will also be
saved into the file or requested type.

TAGS
Here is the list and description of possible XML tags to use in the
script :
    img       - load image from the file.
    recall    - recall previously loaded/generated image by its name.
    text      - render text string into new image.
    save      - save an image into the file.
    bevel     - draw solid bevel frame around the image.
    gradient  - render multipoint gradient.
    mirror    - create mirror copy of an image.
    blur      - perform gaussian blur on an image.
    rotate    - rotate/flip image in 90 degree increments.
    scale     - scale an image to arbitrary size.
    slice     - enlarge image to arbitrary size leaving corners unchanged.
    crop      - crop an image to arbitrary size.
    tile      - tile an image to arbitrary size.
    hsv       - adjust Hue, Saturation and Value of an image.
    pad       - pad image with solid color from either or all sides.
    solid     - generate new image of requested size, filled with solid
             color.
    composite - superimpose arbitrary number of images using one of 15
             available methods.
 if        - conditional processing based on value of the variables
 set       - sets value of the variable
 printf    - formated printing of the value of the variable
Each tag generates new image as the result of the transformation -
existing images are never modified and could be reused as many times
as needed. See below for description of each tag.
Whenever numerical values are involved, the basic math ops (add,
subtract, multiply, divide), unary minus, and parentheses are
supported.
Operator precedence is NOT supported.  Percentages are allowed, and
apply to either width or height of the appropriate image (usually
the refid image).
Also, variables of the form $image.width and $image.height are
supported.  $image.width is the width of the image with refid "image",
and $image.height is the height of the same image.  The special
$xroot.width and $xroot.height values are defined by the the X root
window, if there is one.  This allows images to be scaled to the
desktop size: <scale width="$xroot.width" height="$xroot.height">.
Each tag is only allowed to return ONE image.

NAMEtext
- render text string into new image, using specific font, size and texture.

SYNOPSIS
<text id="new_id" font="font" point="size" fgcolor="color"
      bgcolor="color" fgimage="image_id" bgimage="image_id"
      spacing="points" type="3dtype">My Text Here</text>

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

font
    Optional. Default is "fixed". Font to use for text.

point
    Optional. Default is 12. Size of text in points.

fgcolor
    Optional. No default. The text will be drawn in this color.

bgcolor
    Optional. No default. The area behind the text will be drawn in this color.

fgimage
    Optional. No default. The text will be textured by this image.

bgimage
    Optional. No default. The area behind the text will be filled with this image.

spacing
    Optional. Default 0. Extra pixels to place between each glyph.

type
    Optional. Default 0. Valid values are from 0 to 7 and each represeend different 3d type.

NOTES
<text> without bgcolor, fgcolor, fgimage, or bgimage will NOT
produce visible output by itself.  See EXAMPLES below.

NAMEcomposite
- superimpose arbitrary number of images on top of each other.

SYNOPSIS
<composite id="new_id" op="op_desc"
           keep-transparency="0|1" merge="0|1">

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

op  Optional. Default is "alphablend". The compositing operation. Valid values are the standard AS blending ops: add, alphablend, allanon, colorize, darken, diff, dissipate, hue, lighten, overlay, saturate, screen, sub, tint, value.

merge
    Optional. Default is "expand". Valid values are "clip" and "expand". Determines whether final image will be expanded to the maximum size of the layers, or clipped to the bottom layer.

keep-transparency
    Optional. Default is "0". Valid values are "0" and "1". If set to "1", the transparency of the bottom layer will be kept for the final image.

NOTES
All images surrounded by this tag will be composited with the given op.

ATTRIBUTES
 All tags surrounded by this tag may have some of the common attributes
 in addition to their normal ones.  Under no circumstances is there a
 conflict with the normal child attributes:

crefid
    Optional. An image ID defined with the "id" parameter for any previously created image. If set, percentages in "x" and "y" will be derived from the width and height of the crefid image.

x   Optional. Default is 0. Pixel coordinate of left edge.

y   Optional. Default is 0. Pixel coordinate of top edge.

align
    Optional. Alternative to x - allowed values are right, center and left.

valign
    Optional. Alternative to y - allowed values are top, middle and bottom.

clip_x
    Optional. Default is 0. X Offset on infinite surface tiled with this image, from which to cut portion of an image to be used in composition.

clip_y
    Optional. Default is 0. Y Offset on infinite surface tiled with this image, from which to cut portion of an image to be used in composition.

clip_width
    Optional. Default is image width. Tile image to this width prior to superimposition.

clip_height
    Optional. Default is image height. Tile image to this height prior to superimposition.

tile
    Optional. Default is 0. If set will cause image to be tiled across entire composition, unless overridden by clip_width or clip_height.

tint
    Optional. Additionally tint an image to specified color. Tinting can both lighten and darken an image. Tinting color 0 or #7f7f7f7f yields no tinting. Tinting can be performed on any channel, including alpha channel.

SEE ALSO
libAfterImage

NAMEimg
- load image from the file.

SYNOPSIS
<img id="new_img_id" src="filename"/>

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

src Required. The filename (NOT URL) of the image file to load.

NOTES
The special image src "xroot:" will import the background image
of the root X window, if any.  No attempt will be made to offset this
image to fit the location of the resulting window, if one is displayed.

NAMErecall
- recall previously generated and named image by its id.

SYNOPSIS
<recall id="new_id" srcid="image_id" default_src="filename"/>

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

srcid
    Required. An image ID defined with the "id" parameter for any previously created image. libAfterImage/asimagexml/release

NAMErelease
- release (destroy if possible) previously generated and named image by its id.

SYNOPSIS
<release srcid="image_id"/>

ATTRIBUTES

srcid
    Required. An image ID defined with the "id" parameter for any previously created image. libAfterImage/asimagexml/color

NAMEcolor
- defines symbolic name for a color and set of variables.

SYNOPSIS
<color name="sym_name" domain="var_domain" argb="colorvalue"/>

ATTRIBUTES

name
    Symbolic name for the color value, to be used to refer to that color.

argb
    8 characters hex definition of the color or other symbolic color name.

domain
    string to be used to prepend names of defined variables.

NOTES
In addition to defining symbolic name for the color this tag will define
7 other variables :     domain.sym_name.red, domain.sym_name.green,
                        domain.sym_name.blue, domain.sym_name.alpha,
                        domain.sym_name.hue, domain.sym_name.saturation,
                        domain.sym_name.value

NAMEcolor2alpha
- set alpha channel based on color closeness to specified color

SYNOPSIS
<color2alpha id="new_id" ref_id="other_imag" width="pixels" height="pixels"
       clip_x="clip_x" clip_y="clip_y"
       color="color">

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

refid
    Optional. An image ID defined with the "id" parameter for any previously created image. If set, percentages in "width" and "height" will be derived from the width and height of the refid image.

width
    Required. The image will be scaled to this width.

height
    Required. The image will be scaled to this height.

clip_x
    Optional. Offset into original image.

clip_y
    Optional. Offset into original image.

color
    Required. Color to match against.

NOTES
This tag applies to the first image contained within the tag.  Any
further images will be discarded.
If you want to keep image proportions while resizing-use "proportional"
instead of specific size for particular dimention.

NAMEprintf
- prints variable value to standard output.

SYNOPSIS
<printf format="format_string" var="variable_name" val="expression"/>

ATTRIBUTES

format_string
    Standard C format string with exactly 1 placeholder.

var Name of the variable, which value will be printed.

val math expression to be printed.

NOTESlibAfterImage/asimagexml/set

NAMEset
- declares variable, assigning it a numeric value of expression.

SYNOPSIS
<set var="variable_name" domain="var_domain" val="expression"/>

ATTRIBUTES

var Name of the variable, which value will be set.

val math expression to be evaluated.

domain
    (optional) variable's domain to be prepended to its name using format var_domain.variable_name libAfterImage/asimagexml/if

NAMEif
- evaluates logical expression and if result evaluates to not true(or false if <unless> tag is used ), handles tags within.

SYNOPSIS
<if val1="expression" [op="gt|lt|ge|le|eq|ne" val2="expression"]/>
    [<then>...</then><else>...</else>]
</if>
<unless val1="expression" [op="gt|lt|ge|le|eq|ne" val2="expression"]/>

ATTRIBUTES

val1
    math expression to be evaluated.

val2
    math expression to be evaluated.

op  (optional) comparison op to be applied to values

EXAMPLE
<if val1="$ascs.Base.value" val2="50" op="gt"><then>...</then><else>...</else></if>

NAMEgradient
- render multipoint gradient.

SYNOPSIS
<gradient id="new_id" angle="degrees"
          refid="refid" width="pixels" height="pixels"
          colors ="color1 color2 color3 [...]"
          offsets="fraction1 fraction2 fraction3 [...]"/>

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

refid
    Optional. An image ID defined with the "id" parameter for any previously created image. If set, percentages in "width" and "height" will be derived from the width and height of the refid image.

width
    Optional. The result will have this width.

height
    Optional. The result will have this height.

colors
    Required. Whitespace-separated list of colors. At least two colors are required. Each color in this list will be visited in turn, at the intervals given by the offsets attribute.

offsets
    Optional. Whitespace-separated list of floating point values ranging from 0.0 to 1.0. The colors from the colors attribute are given these offsets, and the final gradient is rendered from the combination of the two. If both colors and offsets are given but the number of colors and offsets do not match, the minimum of the two will be used, and the other will be truncated to match. If offsets are not given, a smooth stepping from 0.0 to 1.0 will be used.

angle
    Optional. Given in degrees. Default is 0. This is the direction of the gradient. Currently the only supported values are 0, 45, 90, 135, 180, 225, 270, 315. 0 means left to right, 90 means top to bottom, etc. libAfterImage/asimagexml/solid

NAMEsolid
- generate image of specified size and fill it with solid color.

SYNOPSIS
<solid id="new_id" color="color" opacity="opacity"
    width="pixels" height="pixels"
    refid="refid" width="pixels" height="pixels"/>

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

width
    Optional. The result will have this width.

height
    Optional. The result will have this height.

refid
    Optional. An image ID defined with the "id" parameter for any previously created image. If set, percentages in "width" and "height" will be derived from the width and height of the refid image.

color
    Optional. Default is "#ffffffff". An image will be created and filled with this color.

width
    Required. The image will have this width.

height
    Required. The image will have this height.

opacity
    Optional. Default is 100. Values from 0 to 100 represent the opacity of resulting image with 100 being completely opaque. Effectively overrides alpha component of the color setting. libAfterImage/asimagexml/save

NAMEsave
- write generated/loaded image into the file of one of the supported types

SYNOPSIS
<save id="new_id" dst="filename" format="format" compress="value"
      opacity="value" replace="0|1" delay="mlsecs">

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

dst Optional. Name of file image will be saved to. If omitted image will be dumped into stdout - usefull for CGI apps.

format
    Optional. Ouput format of saved image. Defaults to the extension of the "dst" parameter. Valid values are the standard AS image file formats: xpm, jpg, png, gif, tiff.

compress
    Optional. Compression level if supported by output file format. Valid values are in range of 0 - 100 and any of "deflate", "jpeg", "ojpeg", "packbits" for TIFF files. Note that JPEG and GIF will produce images with deteriorated quality when compress is greater then 0. For JPEG default is 25, for PNG default is 6 and for GIF it is 0.

opacity
    Optional. Level below which pixel is considered to be transparent, while saving image as XPM or GIF. Valid values are in range 0-255. Default is 127.

replace
    Optional. Causes ascompose to delete file if the file with the same name already exists. Valid values are 0 and 1. Default is 1 - files are deleted before being saved. Disable this to get multimage animated gifs.

delay
    Optional. Delay to be stored in GIF image. This could be used to create animated gifs. Note that you have to set replace="0" and then write several images into the GIF file with the same name.

NOTES
This tag applies to the first image contained within the tag.  Any
further images will be discarded.

NAMEbackground
- set image's background color.

SYNOPSIS
 <background id="new_id" color="color">

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

color
    Required. Color to be used for background - fills all the spaces in image with missing pixels.

NOTES
This tag applies to the first image contained within the tag.  Any
further images will be discarded.

NAMEblur
- perform a gaussian blurr on an image.

SYNOPSIS
<blur id="new_id" horz="radius" vert="radius" channels="argb">

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

horz
    Optional. Horizontal radius of the blur in pixels.

vert
    Optional. Vertical radius of the blur in pixels.

channels
    Optional. Applys blur only on listed color channels: a - alpha, r - red, g - green, b - blue

NOTES
This tag applies to the first image contained within the tag.  Any
further images will be discarded.

NAMEbevel
- draws solid bevel frame around the image.

SYNOPSIS
<bevel id="new_id" colors="color1 color2"
          width="pixels" height="pixels" refid="refid"
       border="left top right bottom" solid=0|1 outline=0|1>

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

colors
    Optional. Whitespace-separated list of colors. Exactly two colors are required. Default is "#ffdddddd #ff555555". The first color is the color of the upper and left edges, and the second is the color of the lower and right edges.

borders
    Optional. Whitespace-separated list of integer values. Default is "10 10 10 10". The values represent the offsets toward the center of the image of each border: left, top, right, bottom.

solid
    Optional - default is 1. If set to 0 will draw bevel gradually fading into the image.

outline
    Optional - default is 0. If set to 1 will draw bevel around the image vs. inside the image.

width
    Optional. The result will have this width.

height
    Optional. The result will have this height.

refid
    Optional. An image ID defined with the "id" parameter for any previously created image. If set, percentages in "width" and "height" will be derived from the width and height of the refid image.

NOTES
This tag applies to the first image contained within the tag.  Any
further images will be discarded.

NAMEmirror
- create new image as mirror copy of an old one.

SYNOPSIS
 <mirror id="new_id" dir="direction"
            width="pixels" height="pixels" refid="refid">

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

dir Required. Possible values are "vertical" and "horizontal". The image will be flipped over the x-axis if dir is vertical, and flipped over the y-axis if dir is horizontal.

width
    Optional. The result will have this width.

height
    Optional. The result will have this height.

refid
    Optional. An image ID defined with the "id" parameter for any previously created image. If set, percentages in "width" and "height" will be derived from the width and height of the refid image.

NOTES
This tag applies to the first image contained within the tag.  Any
further images will be discarded.

NAMErotate
- rotate an image in 90 degree increments (flip).

SYNOPSIS
 <rotate id="new_id" angle="degrees"
            width="pixels" height="pixels" refid="refid">
* ATTRIBUTES
id       Optional. Image will be given this name for future reference.
angle    Required.  Given in degrees.  Possible values are currently
         "90", "180", and "270".  Rotates the image through the given
         angle.
width    Optional.  The result will have this width.
height   Optional.  The result will have this height.
refid    Optional.  An image ID defined with the "id" parameter for
         any previously created image.  If set, percentages in "width"
         and "height" will be derived from the width and height of the
         refid image.

NOTES
This tag applies to the first image contained within the tag.  Any
further images will be discarded.

NAMEscale
- scale image to arbitrary size

SYNOPSIS
<scale id="new_id" refid="other_imag" src_x="pixels"  src_y="pixels"
       src_width="pixels" src_height="pixels"
       width="pixels" height="pixels">

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

refid
    Optional. An image ID defined with the "id" parameter for any previously created image. If set, percentages in "width" and "height" will be derived from the width and height of the refid image.

width
    Required. The image will be scaled to this width.

height
    Required. The image will be scaled to this height.

src_x
    Optional. Default is 0. X Offset on infinite surface tiled with this image, from which to cut portion of an image to be used in scaling.

src_y
    Optional. Default is 0. Y Offset on infinite surface tiled with this image, from which to cut portion of an image to be used in scaling.

src_width
    Optional. Default is image width. Tile image to this width prior to scaling.

src_height
    Optional. Default is image height. Tile image to this height prior to scaling.

*   NOTES

This
    tag applies to the first image contained within the tag. Any

further
    images will be discarded.

If  you want to keep image proportions while scaling - use "proportional"

instead
    of specific size for particular dimention. libAfterImage/asimagexml/slice

NAMEslice
- slice image to arbitrary size leaving corners unchanged

SYNOPSIS
<slice id="new_id" ref_id="other_imag" width="pixels" height="pixels"
       x_start="slice_x_start" x_end="slice_x_end"
          y_start="slice_y_start" y_end="slice_y_end"
          scale="0|1">

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

refid
    Optional. An image ID defined with the "id" parameter for any previously created image. If set, percentages in "width" and "height" will be derived from the width and height of the refid image.

width
    Required. The image will be scaled to this width.

height
    Required. The image will be scaled to this height.

x_start
    Optional. Position at which vertical image slicing begins. Corresponds to the right side of the left corners.

x_end
    Optional. Position at which vertical image slicing end. Corresponds to the left side of the right corners.

y_start
    Optional. Position at which horisontal image slicing begins. Corresponds to the bottom side of the top corners.

y_end
    Optional. Position at which horisontal image slicing end. Corresponds to the top side of the bottom corners.

scale
    Optional. If set to 1 will cause middle portion of the image to be scaled instead of tiled.

NOTES
This tag applies to the first image contained within the tag.  Any
further images will be discarded.
Contents of the image between x_start and x_end will be tiled
horizontally. Contents of the image between y_start and y_end will be
tiled vertically. This is usefull to get background images to fit the
size of the text or a widget, while preserving its borders undistorted,
which is the usuall result of simple scaling.
If you want to keep image proportions while resizing-use "proportional"
instead of specific size for particular dimention.

NAMEpixelize
- pixelize image using arbitrary pixel size

SYNOPSIS
<pixelize id="new_id" ref_id="other_imag" width="pixels" height="pixels"
       clip_x="clip_x" clip_y="clip_y"
       pixel_width="pixel_width" pixel_height="pixel_height">

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

refid
    Optional. An image ID defined with the "id" parameter for any previously created image. If set, percentages in "width" and "height" will be derived from the width and height of the refid image.

width
    Required. The image will be scaled to this width.

height
    Required. The image will be scaled to this height.

clip_x
    Optional. Offset into original image.

clip_y
    Optional. Offset into original image.

pixel_width
    Required. Horizontal pixelization step;

pixel_height
    Required. Vertical pixelization step;

NOTES
This tag applies to the first image contained within the tag.  Any
further images will be discarded.
If you want to keep image proportions while resizing-use "proportional"
instead of specific size for particular dimention.

NAMEcrop
- crop image to arbitrary area within it.

SYNOPSIS
 <crop id="new_id" refid="other_image" srcx="pixels" srcy="pixels"
       width="pixels" height="pixels" tint="color">

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

refid
    Optional. An image ID defined with the "id" parameter for any previously created image. If set, percentages in "width" and "height" will be derived from the width and height of the refid image.

srcx
    Optional. Default is "0". Skip this many pixels from the left.

srcy
    Optional. Default is "0". Skip this many pixels from the top.

width
    Optional. Default is "100%". Keep this many pixels wide.

height
    Optional. Default is "100%". Keep this many pixels tall.

tint
    Optional. Additionally tint an image to specified color. Tinting can both lighten and darken an image. Tinting color 0 or #7f7f7f7f yeilds no tinting. Tinting can be performed on any channel, including alpha channel.

NOTES
This tag applies to the first image contained within the tag.  Any
further images will be discarded.

NAMEtile
- tile an image to specified area.

SYNOPSIS
 <tile id="new_id" refid="other_image" width="pixels" height="pixels"
       x_origin="pixels" y_origin="pixels" tint="color" complement=0|1>

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

refid
    Optional. An image ID defined with the "id" parameter for any previously created image. If set, percentages in "width" and "height" will be derived from the width and height of the refid image.

width
    Optional. Default is "100%". The image will be tiled to this width.

height
    Optional. Default is "100%". The image will be tiled to this height.

x_origin
    Optional. Horizontal position on infinite surface, covered with tiles of the image, from which to cut out resulting image.

y_origin
    Optional. Vertical position on infinite surface, covered with tiles of the image, from which to cut out resulting image.

tint
    Optional. Additionally tint an image to specified color. Tinting can both lighten and darken an image. Tinting color 0 or #7f7f7f7f yields no tinting. Tinting can be performed on any channel, including alpha channel.

complement
    Optional. Will use color that is the complement to tint color for the tinting, if set to 1. Default is 0.

NOTES
This tag applies to the first image contained within the tag.  Any
further images will be discarded.

NAMEhsv
- adjust Hue, Saturation and/or Value of an image and optionally tile an image to arbitrary area.

SYNOPSIS
<hsv id="new_id" refid="other_image"
     x_origin="pixels" y_origin="pixels" width="pixels" height="pixels"
     affected_hue="degrees|color" affected_radius="degrees"
     hue_offset="degrees" saturation_offset="value"
     value_offset="value">

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

refid
    Optional. An image ID defined with the "id" parameter for any previously created image. If set, percentages in "width" and "height" will be derived from the width and height of the refid image.

width
    Optional. Default is "100%". The image will be tiled to this width.

height
    Optional. Default is "100%". The image will be tiled to this height.

x_origin
    Optional. Horizontal position on infinite surface, covered with tiles of the image, from which to cut out resulting image.

y_origin
    Optional. Vertical position on infinite surface, covered with tiles of the image, from which to cut out resulting image.

affected_hue
    Optional. Limits effects to the renage of hues around this hue. If numeric value is specified - it is treated as degrees on 360 degree circle, with : red = 0, yellow = 60, green = 120, cyan = 180, blue = 240, magenta = 300. If colorname or value preceded with # is specified here - it will be treated as RGB color and converted into hue automagically.

affected_radius
    Optional. Value in degrees to be used in order to calculate the range of affected hues. Range is determined by substracting and adding this value from/to affected_hue.

hue_offset
    Optional. Value by which to adjust the hue.

saturation_offset
    Optional. Value by which to adjust the saturation.

value_offset
    Optional. Value by which to adjust the value.

NOTES
One of the Offsets must be not 0, in order for operation to be
performed.
This tag applies to the first image contained within the tag.  Any
further images will be discarded.

NAMEpad
- pad an image with solid color rectangles.

SYNOPSIS
<pad id="new_id" left="pixels" top="pixels"
     right="pixels" bottom="pixels" color="color"
        refid="refid" width="pixels" height="pixels">

ATTRIBUTES

id  Optional. Image will be given this name for future reference.

width
    Optional. The result will have this width.

height
    Optional. The result will have this height.

refid
    Optional. An image ID defined with the "id" parameter for any previously created image. If set, percentages in "width" and "height" will be derived from the width and height of the refid image.

left
    Optional. Size to add to the left of the image.

top Optional. Size to add to the top of the image.

right
    Optional. Size to add to the right of the image.

bottom
    Optional. Size to add to the bottom of the image.

color
    Optional. Color value to fill added areas with. It could be transparent of course. Default is #FF000000 - totally black.

NOTES
This tag applies to the first image contained within the tag.  Any
further images will be discarded.