Meters

A meter is an object that defines a visual element that is displayed in a skin. Meters are one of the two major kinds of objects in a skin, along with measures.

Usage

A meter does not have a "value" in the way that measures do. Some meters are used to display or respond to informational values in two ways:

  • A meter can be bound to a measure. In this way, the meter will automatically display the value in a way that is appropriate for the type of meter. For example, a string meter would display the string value of a measure as a block of text, while a bar meter would display the same measure's number value as a percentage of its maximum value. Some meter types must be bound to a specific measure; on others, binding is optional.

  • A meter can use variables in any option. This includes section variables, which provide an alternative way of using measure values. Dynamic variables are allowed in all options on all meters (other than the Meter option).

Not all meters are used to display information. Some are used to create static elements, such as background images, frames and labels. Specific options and requirements for each meter type are detailed in their individual articles.

Format

A meter is written as a section in the skin. All meters use the Meter option to define the section as a specific type of meter. Most other meter options depend on the type, but there are some general options that are valid in many or all meters.

Below is an example of a complete working meter:

[MyMeter]
Meter=String
Text=Hello, world!

Positions

A meter has a certain position, which is given by its X and Y options, and dimensions, which are given by its W and H options. This means that every meter is actually bounded by a rectangular block of pixels, even though it may have a transparent background and therefore appear to be "free-floating."

Meters are positioned within the skin window. This means that when the skin is moved, its meters move with it. It also means that meter positions are given relative to the top-left corner of the skin, rather than the desktop. For example, a meter with the option X=15 starts 15 pixels from the left edge of the skin.

The dimensions of the skin window are determined by the positions and dimensions of all meters when the skin is loaded. If the skin has DynamicWindowSize enabled, the window will be "pushed" outward if meters are moved rightward or downward or expand in width or height. However, meters that move leftward beyond X=0, or upward beyond Y=0, will appear either "cut off" or completely invisible. There is no technical limit to the size of the skin window, but, practically speaking, skins should be made to fit within the current desktop work area.

Left: a skin with a single meter that appears to be "free-floating." Right: the same skin with colored backgrounds added, showing how the meter (purple) is actually positioned inside the skin window (green) and "pushes" the window boundaries to the lower-right.

Order

The order of meters in the skin code is important in two ways:

  • "Z" position. Meters are drawn in order. Later meters appear "on top of" or "in front of" earlier meters. This means that, for example, a background image that appears behind all other meters must be the first meter that appears in the skin code.

  • Relative positions. A meter's X or Y position may be set "relative" to the position of the previous meter. This is useful for groups of meters that follow a common pattern, such as lists, tabs or menu items.

MeterStyles

Meters can use option values from other meters. Using the MeterStyle option, one meter may inherit all options from one or more "parent" sections.

For more, see MeterStyles.