Introduction:
Zoom Player has its own ever-improving skin script language. It's quite straight-forward, especially if you have any programming
experience.
The basic premise behind a Zoom Player skin is to create one or more bitmap containing all of the skin's graphical elements and
then using the script language, instruct Zoom Player at how to combine the graphical element into a fully functioning user interface.
Unlike some media players, Zoom Player's interface can be resized dynamically. As such, some of the graphical elements are required
to be dynamic in order to look good. This means that when the user interface window is resized, some of the graphical elements are
tiled to maintain fluidity.
This Tutorial always reflects the latest beta version. Skins are backward compatible, but it is recommended using the latest beta
when writing new skins.
A Word about Tinting:
Several skin functions take RGB values (similar to HTML code). Zoom Player supports skin-tinting (modification of the skin
color through the skin selection interface). If you want an RGB color not to be tinted, specify "NT" right after the value (no space), for
example:
FillRect(6,21,64,128,FFFFFFNT)
The Graphical Elements:
Here is an example of how a skin's graphical elements look like.
As you can see, the actual locations of the elements within the bitmap is irrelevant as we later tell Zoom Player where in the
bitmap the elements are located. The elements include the skin background graphics, buttons in both the up, down and activate
state (for some of the buttons), volume and time line controls.
Dynamic Variables:
Zoom Player contains a number of dynamic variables which can be used within the skin to display dynamic content (such as the
current time, duration of current clip, etc...). Some elements may have become obsolete as the technology evolved and are marked as such.
Variable Name
Description
<WinWidth>
Main Interface Window Width in Pixels
<WinHeight>
Main Interface Window Height in Pixels
<WinHalfWidth>
Main Interface Window Width in Pixels divided by 2 (useful for screen-centering)
<WinHalfHeight>
Main Interface Window Height in Pixels divided by 2 (useful for screen-centering)
<PLWinWidth>
Playlist Interface Window Width in Pixels
<PLWinHeight>
Playlist Interface Window Height in Pixels
<PLWinHalfWidth>
Playlist Interface Window Width in Pixels divided by 2 (useful for screen-centering)
<PLWinHalfHeight>
Playlist Interface Window Height in Pixels divided by 2 (useful for screen-centering)
<VidWidth>
Width in Pixels of Video Area
<VidHeight>
Height in Pixels of Video Area
<SrcWidth>
Source Video Width in Pixels
<SrcHeight>
Source Video Height in Pixels
<ARWidth>
Width in Pixels of Video Area with Aspect Ratio Adjustment
<ARHeight>
Height in Pixels of Video Area with Aspect Ratio Adjustment
<FileName>
Name of Currently loaded file (full path)
<FilePath>
Path of Currently loaded file
<FileTitle>
Name of Currently loaded file (file name+extension)
<FileBase>
Name of Currently loaded file (file name only, no extension or path)
<cBarWidth>
Width in Pixels of the Control Bar after deducting the space used by the buttons and Right Margin
<cBarFullWidth>
Width in Pixels of the entire Control Bar
<cBarHeight>
Height in Pixels of the Control Bar
<cBarHalfWidth>
Width in Pixels of the Control Bar after deducting the space used by the buttons divided by 2
<cBarHalfHeight>
Height in Pixels of Control Bar divided by 2
<ovColor>
(Obsolete) Overlay Color RGB (can be used for transparency with the Control Bar)
<Time>
Current Time Display (playing media)
<TimeRemain>
Time Remaining
<Duration>
Total Duration of playing content
<LTime>
Long Current Time Display (playing media) (always show HH:MM:SS, even if HH = 0)
<LTimeRemain>
Long Time Remaining (always show HH:MM:SS, even if HH = 0)
<LDuration>
Long Total Duration of playing content (always show HH:MM:SS, even if HH = 0)
<DVDChapter>
Current DVD Chapter
<DVDTitle>
Current DVD Title
<DVDVolume>
Current DVD Volume Label
<FileIndex>
Currently playing item in the playlist
<PlayListItems>
Number of items in the current playlist, returns "[n] file(s)" where [n] is the number of files
<PlayListCount>
Number of items in the current playlist, returns only the number
<PlayListTotal>
Total Time used by currently loaded Playlist Items.
<Clock>
The Current Time (Clock)
<Date>
The Current Date
<VideoZoom>
The current video zooming used in the window interface (affected by the Alt-"1..5" keys and the new "exZoomTo" function)
<trackname>
TAG (ID3/APE/OGM/WMA) Containing the Track/Title Name
<genre>
TAG (ID3/APE/OGM/WMA) Containing the Genre
<track>
TAG (ID3/APE/OGM/WMA) Containing the Track Number
<language>
TAG (ID3/APE/OGM/WMA) Containing the Language
<artistname>
TAG (ID3/APE/OGM/WMA) Containing the Artist Name
<albumname>
TAG (ID3/APE/OGM/WMA) Containing the Album Name
<year>
TAG (ID3/APE/OGM/WMA) Containing the Year
<authorname>
TAG (ID3/APE/OGM/WMA) Containing the Author Name
<encoder>
TAG (ID3/APE/OGM/WMA) Containing the Encoder
<comment>
TAG (ID3/APE/OGM/WMA) Containing a Comment
<urllink>
TAG (ID3/APE/OGM/WMA) Containing a URL
<copyright>
TAG (ID3/APE/OGM/WMA) Containing the Copyright Notice
Constants:
Constants are fixed skin parameters that are given initially at the creation of the skin. For example: iMinWidth = (320)
Some elements may have become obsolete as the technology evolved and are marked as such.
Constant Name
Description
ActiveGroups
Determines which Skin Groups are active by Default (see below for more information on skin groups)
AudioSkin
Specifies if the Skin only contains audio (see defaultaudio.skn), value can be 1 for Audio Only and 0 for regular.
SkinFileName
Name of non-compressed BMP or Compressed PNG (8bit/24bit) image that contains all the skin graphics
PLSkinFileName
BMP/PNG image used for Playlist Skinning elements (if doesn't exists, "SkinFileName" is used)
EQSkinFileName
BMP/PNG image used for Equalizer Skinning elements (if doesn't exists, "SkinFileName" is used)
OSDSkinFileName
BMP/PNG image used for OSD Skinning elements (if doesn't exists, "SkinFileName" is used)
TimelineCursor
Name of a Cursor file that will be used for timeline seeking
iWinWidth
Initial Window Width
iWinHeight
Initial Window Height
iVidWidth
Initial Video Width
iVidHeight
Initial Video Height
iVidLeft
Initial Video Position in pixels from left position of Window
iVidTop
Initial Video Position in pixels from top position of Window
iMinWidth
Minimum Video Width (It's recommended keep the minimum Width/Height to a 4:3 aspect ratio)
iMinHeight
Minimum Video Height
RateLeft
(Obsolete, replaced by "RateExData") Left Position of Rate bar witin window
RateTop
(Obsolete, replaced by "RateExData") Top Position of Rate bar witin window
tLineWidth
TimeLine Width
tLineHeight
TimeLine Height
tLineLeft
TimeLine position in pixels from left position of Window
tLineTop
TimeLine position in pixels from top position of Window
tLineColor
TimeLine Color (Hex RGB Value, like on web pages. Not required if a bitmap is set using TimeLineFG)
tLineFontSize
TimeLine Font Size (don't use, replaced by tLineFontHeight)
tLineFontHeight
TimeLine Font Height
tLineFontYOfs
TimeLine Font Y-Offset in pixels (can be negative value)
tLineFontFace
TimeLine Font Name
tLineFontColor
TimeLine Font Color
tLineFontStyle
Bold and Italic, example : tLineFontStyle = (Bold|Italic), To disable style use (None) as value.
tLineNoText
Don't show any text on timeline (Set to 1 to show no text and 0 to show text - default)
tLineTrans
Hex RGB Value of the coor used for Transparency on the Timeline
cBarFontSize
Control Bar Font Size (don't use, replaced by cBarFontHeight)
cBarFontHeight
Control Bar Font Height
cBarFontYOfs
Control Bar Font Y-Offset in pixels (can be negative value)
cBarFontFace
Control Bar Font Name
cBarFontColor
Control Bar Font Color
cBarFontStyle
Bold and Italic, example : CBarFontStyle = (Bold|Italic), To disable style use (None) as value.
cBarNoText
Don't show any text on the control bar timeline (Set to 1 to show no text and 0 to show text - default)
cBarButWidth
Control Bar Button Width (must be set before any buttons are added to the control bar)
cBarButHeight
Control Bar Button Height (same as width, but also sets the height of the control bar)
cBarRightMargin
Number of pixels to save on the right side of skin
cBarTLColor
Control Bar TimeLine Color (Not required if a bitmap is set using TimeLineCBarFG)
cBarTLWidth
Width of the Control Bar time line
cBarTLHeight
Height of the Control Bar time line
cBarTLLeft
Control Bar TimeLine position in pixels from left position of Control Bar
cBarTLTop
Control Bar TimeLine position in pixels from top position of Control Bar
cBarTLTrans
Hex RGB Value of the coor used for Transparency on the Control Bar Timeline
iTransColor
Hex RGB Value of the color used for Window Transparency on the Main User Interface
cTransColor
Hex RGB Value of the color used for Window Transparency on the Control Bar
pTransColor
Hex RGB Value of the color used for Window Transparency on the Playlist
eTransColor
Hex RGB Value of the color used for Window Transparency on the Equaliser
Skinning Functions:
The Skin Script functions are used to actually construct how the skin will appear.
FillRect(DestX, DestY, Width, Height, RGBColor)
Fill a rectangle with a specific Hex RGB color.
(000000=Black, FF0000=Red, 00FF00=Green, 0000FF=Blue, FFFFFF=White, exactly like in HTML).
Fill a mask by filling any color that doesn't match the SrcRGBColor with
the DestRGBColor. This can be used on non-rectangular buttons that have
a transparent background and thus should have a masked drawn behind them
so that they don't become transparent themselves.
Copy a Color Keyed transparent bitmap from the skin image to the user interface.
The color specified by the RGBColor is considered transparent and won't be copied
This function can be CPU intensive if used extensively.
Copy an Alpha Masked bitmap from the skin image to the user interface.
An Alpha mask is a gray representation of the image where black means no
copying to be done and white means full copying. Any gray value in between
determines what percentage to mix between the background and foreground bitmaps.
The Alpha mask must the aligned to the right of the source image and match its size.
This function can be CPU intensive if used extensively.
Fill a rectangle with a vertical gradient from RGBColor1 to RGBColor2
Doing gradient fills may be CPU intensive.
TimeLineBG(SrcX, SrcY, Width)
Bitmap positioning used for the User Interface TimeLine background, height must be the same as the "tLineHeight" constant.
TimeLineFG(SrcX, SrcY, Width)
Bitmap positioning used for the User Interface TimeLine foreground, height must be the same as the "tLineHeight" constant.
Using this function enables the Time Line (makes it visible) on the main user interface.
Using this function means that a bitmap will be used instead of a color for the action portion of the timeline.
Bitmap positioning used for the User Interface TimeLine Highlighting (used by the "A-B Repeat" and other functions that highlight the timeline area).
Each bitmap has to have an alpha bitmap element for transparency drawing which should be located to the right on the source bitmap. The width values
indicate the width of the bitmap not including the alpha bitmap size.
Parameters:
StartX
:
X-Offset on the Skin where the timeline's left-side bitmap.
StartY
:
Y-Offset on the Skin where the timeline's left-side bitmap.
StartW
:
Width of the timeline left-side bitmap.
StartH
:
Height of the timeline left-side bitmap.
MiddleX
:
X-Offset on the Skin where the timeline's middle (tiled) bitmap.
MiddleY
:
Y-Offset on the Skin where the timeline's middle (tiled) bitmap.
MiddleW
:
Width of the timeline middle (tiled) bitmap.
MiddleH
:
Height of the timeline middle (tiled) bitmap.
EndX
:
X-Offset on the Skin where the timeline's right-side bitmap.
EndY
:
Y-Offset on the Skin where the timeline's right-side bitmap.
EndW
:
Width of the timeline middle (tiled) bitmap.
EndH
:
Height of the timeline middle (tiled) bitmap.
YOfs
:
Y-Offset in the timeline to draw the active section.
TimeLineFontShade(Left, Right, Top, Bottom)
This function allows you to shade (shadow/outline) the TimeLine font. All four parameters are RGB vlaues
representing the shading colors around the font. Use a value of "-1" in order for shading to be disabled
on a particular side.
This is an optional function if bitmapped TimeLine (TimeLineBG/TimeLineFG) is used. It allows you to
specify a bitmap to be drawn at the currently active timeline position. SrcX, SrcY and Width are pretty self
explanetory. The XOffset and YOffset allows you to specify how many pixels to move the bitmap to the right and
down (by default the bitmap is drawn at the top of the timeline and to the left of the currently active position
(taking into account the width of the bitmap).
TimeLineStart(SrcX, SrcY, Width)
Specify a start bitmap for the timeline, the bitmap height should match the timeline bitmap height and like
with buttons, it should actually be comprised of two bitmaps drawn next to each other (on the right) of the
active and inactive timeline states (highlighted/non-highlighted). The width specified is only of the first
image, the inactive image on the right should be the same width and height.
TimeLineEnd(SrcX, SrcY, Width)
Same as TimeLineStart, but for the end (right side) of the timeline.
This function sets all the necessary data to enable the user-interface volume bar pop-up window (when a user calls
the "fnVolumeWindow" function, the volume bar window will pop up positioned relative to the calling button (if the function
is called through a button) or above the mouse cursor if the function was called from a different source.
Parameters:
Images
:
Number of Volume Images, Image are expected to be drawn aligned to the right of each image.
Vertical
:
Can be either "True" or "False", determines how the volume reacts to a user click (horizontally or vertically).
TransColor
:
A color-keyed transparent button, an RGB value indicating the transparent color-key.
VWidth
:
Width of a Single Volume Image.
VHeight
:
Height of a Single Volume Image.
Hint
:
Text value describing the function of this control.
SrcX
:
X-Offset from source image to the position of the Background Bitmap data.
SrcY
:
Y-Offset from source image to the position of the Background Bitmap data.
Width
:
Volume Window Width (background bitmap copied from SrcX,SrcY position).
Height
:
Volume Window Height (background bitmap copied from SrcX,SrcY position).
VSrcX
:
X-Offset from source image to the position of the Volume Bar Bitmap data.
VSrcY
:
Y-Offset from source image to the position of the Volume Bar Bitmap data.
VDestX
:
Volume Bar X-Offset position within the Volume Window.
VDestY
:
Volume Bar Y-Offset position within the Volume Window.
XOfs
:
Horizontal distance in pixels from the left position of the calling button where the volume window appears (can contain a negative value)
YOfs
:
Vertical distance in pixels from the top position of the calling button where the volume window appears (can contain a negative value)
BSrcX
:
Identical to "SrcX", used when the window needs to appear below the control bar.
BSrcY
:
Identical to "SrcY", used when the window needs to appear below the control bar.
BWidth
:
Identical to "Width", used when the window needs to appear below the control bar.
BHeight
:
Identical to "Height", used when the window needs to appear below the control bar.
BVSrcX
:
Identical to "VSrcX", used when the window needs to appear below the control bar.
BVSrcY
:
Identical to "VSrcY", used when the window needs to appear below the control bar.
BVDestX
:
Identical to "VDestX", used when the window needs to appear below the control bar
BVDestY
:
Identical to "VDestY", used when the window needs to appear below the control bar
BXOfs
:
Identical to "XOfs", used when the window needs to appear below the control bar
BYOfs
:
Identical to "YOfs", used when the window needs to appear below the control bar
The Parameter order isn't important, just that the values are being passed. The Vertical
parameter is optional, by default the volume window is vertical.
Example:
VolumeWindow(SrcX=120, SrcY=80, Width=20, Height=50, VSrcX=208, VSrcY=0, VWidth=14, VHeight=42, VDestX=3, VDestY=4, Images=12, Vertical=True, TransColor=FF0000, XOfs=-10, YOfs=-50, Hint=Click to set Volume)
This function sets all the neccessery data to enable the user-interface volume controls.
Parameters:
SrcX
:
X-Offset from source image to the location Bitmap data.
SrcY
:
Y-Offset from source image to the location Bitmap data.
DestX
:
Destination X-Offset on the Skin.
DestY
:
Destination Y-Offset on the Skin.
Width
:
Width of a Single Volume Image.
Height
:
Height of a Single Volume Image.
Images
:
Number of Volume Images, Image are expected to be drawn aligned to the bottom of each image.
Vertical
:
Can be either "True" or "False", determines how the volume reacts to a user click (horizontally or vertically).
Hint
:
Text value describing the function of this control.
The Parameter order isn't important, just that the values are being passed. The Vertical
parameter is optional, by default the volume bar is horizontal.
This function sets all the neccessery data to enable the user-interface Play Rate controls.
Make sure you have 7 images drawn for rate positions, as seen in the default.bmp file.
Parameters:
SrcX
:
X-Offset from source image to the location Bitmap data.
SrcY
:
Y-Offset from source image to the location Bitmap data.
DestX
:
Destination X-Offset on the Skin.
DestY
:
Destination Y-Offset on the Skin.
Width
:
Width of a Single Volume Image.
Height
:
Width of a Single Volume Image.
Hint
:
Text value describing the function of this control.
The Parameter order isn't important, just that the values are being passed. The Vertical
parameter is optional, by default the volume bar is horizontal.
This function sets all the neccessery data to enable the user-interface Audio Balance controls.
Make sure you have 7 images drawn for balance positions, as seen in the default.bmp file.
Parameters:
SrcX
:
X-Offset from source image to the location Bitmap data.
SrcY
:
Y-Offset from source image to the location Bitmap data.
DestX
:
Destination X-Offset on the Skin.
DestY
:
Destination Y-Offset on the Skin.
Width
:
Width of a Single Volume Image.
Height
:
Width of a Single Volume Image.
Hint
:
Text value describing the function of this control.
The Parameter order isn't important, just that the values are being passed. The Vertical
parameter is optional, by default the volume bar is horizontal.
If you have transparent skin where the edges of the window are transparent,
you may want to define a "ResizeBox". When the mouse moves over the
ResizeBox designated area, the cursor will change to a resize cursor and
allow the window to be resized from that position.
The Values of CursorType can be:
0 - Bottom Right Corner
1 - Bottom Left Corner
2 - Top Right Corner
3 - Top Left Corner
4 - Left Side
5 - Right Side
6 - Top Side
7 - Bottom Side
Example:
ResizeBox(-40, -40, 10, 10, 0)
FolderImage(XOfs, YOfs, Width, Height)
The FolderImage function allows you to draw the folder image (if one exists) anywhere on the skin.
Example:
FolderImage(-120, -90, 90, 60)
Type of Text Function (see below) (Default = "Normal").
Target
:
Target Window, Can be either "Main", "EQ", "PlayList", "ExtCBar" (Default = "Main").
DestX
:
Destination X-Offset on the Skin.
DestY
:
Destination Y-Offset on the Skin.
Width
:
Maximum Width of Text (used for clipping).
Height
:
Maximum Height of Text (used for clipping).
Align
:
Text Alignment, values can be "Left, Center or Right" (Default "Left").
Case
:
Uppercase/Lowercase Structure, values can be "None,Lower,Upper,UpFirst" (Default "None").
WordWrap
:
Value can be True or False, if True and the text doesn't fit the width, it is word wrapped (Default "False").
FontName
:
The Name of the Font, i.e. Arial, Times New Romand, etc...
FontSize
:
Size of Font (approximate height in pixels).
FontColor
:
RGB value indicating the Font Color.
FontStyle
:
Bold, Italic, Both or None, if both then separated by "|" (i.e. "Bold|Italic") (Default "None").
ShadeLeft
:
RGB value represting the shadow color on the left side (set to -1 to disable)
ShadeRight
:
RGB value represting the shadow color on the right side (set to -1 to disable)
ShadeTop
:
RGB value represting the shadow color on the top side (set to -1 to disable)
ShadeBottom
:
RGB value represting the shadow color on the bottom side (set to -1 to disable)
Text
:
String that should be displayed, can including dynamic content by using Dynamic Variables (see above).
Function
:
Call any fnFunction on Double Click (see function list).
FunctionParam
:
Used in combination with "ex" functions to pass a parameter to the function.
StringParam
:
A string parameter passed to certain function types.
Hint
:
A string containing the pop-up description of the text label.
This function allows you to draw text anywhere on the user interface. The Text content is
updated every time the user interface is resized and once per second (while not in fullscreen).
This allows you to draw dynamic text such as Time, DVD Chapter, etc...
Note that unlike buttons a Text entry does not require a function to be specified,
Here are the possible values of the "Type" parameter:
"Normal"
:
Standard Text, accepts usual "fn" functions (see function list).
"Filter"
:
Instead of calling a function, this Text opens a filter's property dialog.
The filter name is passed in the "StringParam" value and can contain multiple
sub-strings so that you could open different filters with one button (such as
all Video Decoders). Example "StringParam=DIVX|XVID|MPEG4".
"Extended"
:
Extended Text functions are similar to the normal text function with the exception that
they use the Extended functions (see function list). In addition to
the "Function" value, you must also supply the "FunctionParam" value so that it
could be passed on to the Function. For example, when "Function=exSetAR", setting
"FunctionParam=1" will set the Aspect Ratio mode to "Source Aspect Ratio".
"Skin"
:
Use this Text-type to replace the Zoom Player skin with a single button.
The StringParam value is assigned the new skin name (i.e. "default.skn").
(Obsolete) - CreateButton
This function has been superseded by CreateExButton
(Obsolete) - AddBarButton
This function has been superseded by CreateExButton
Target Window, Can be either "Main", "EQ", "PlayList", "CBar" or "ExtCBar" (Default = "Main"), CBar is special, see below.
SrcX
:
X-Offset from source image to the location Bitmap data, Button Up graphics.
SrcY
:
Y-Offset from source image to the location Bitmap data.
DownX
:
X-Offset from source image to the location of the Button Down Bitmap (Optional, by default it's SrcX+Width).
DownY
:
Y-Offset from source image to the location of the Button Down Bitmap (Optional, by default it's SrcY).
HoverX
:
X-Offset from source image to the location of the Hover (mouse-over) Bitmap (also enables Hover Bitmap).
HoverY
:
Y-Offset from source image to the location of the Hover (mouse-over) Bitmap.
AlphaX
:
X-Offset from source image to the location of the Alpha (Alpha Masking) Bitmap (also enables Alpha Masking).
AlphaY
:
Y-Offset from source image to the location of the Alpha (Alpha Masking) Bitmap.
ActiveX
:
X-Offset from source image to the location of the Activate (Special Event) Bitmap.
ActiveY
:
Y-Offset from source image to the location of the Activate (Special Event) Bitmap.
ActiveDownX
:
X-Offset from source image to the location of the Activate (Special Event) Bitmap (Down state).
ActiveDownY
:
Y-Offset from source image to the location of the Activate (Special Event) Bitmap (Down state).
Activate
:
Draws the Active Bitmap when a Special Event is called, See Below for available values.
Width
:
Width of Button.
Height
:
Height of Button.
DestX
:
Destination X-Offset on the Skin.
DestY
:
Destination Y-Offset on the Skin.
Function
:
Either "fn" function (see function list) or "ex" function (see function list) depending on "type" parameter.
FunctionParam
:
Used in combination with "ex" functions to pass a parameter to the function.
StringParam
:
A string parameter passed to certain button types.
TransColor
:
A color-keyed transparent button, an RGB value indicating the transparent color-key.
Hint
:
A string containing the pop-up description of the button.
ActiveHint
:
A string containing the pop-up description of the button when the button is Active.
AniSpeed
:
If Animated buttons are enabled, the speed of animation (value from 20-1000, default = 50).
Also, when no image is specified:
Color
:
Background color
Text
:
A string containing a caption
FontName
:
The Name of the Font, i.e. Arial, Times New Romand, etc...
FontSize
:
Size of Font (approximate height in pixels).
FontColor
:
RGB value indicating the Font Color.
FontStyle
:
Bold, Italic, Both or None, if both then separated by "|" (i.e. "Bold|Italic") (Default "None").
This function replaces the standard "CreateButton" function in newer skin. Instead of entering
parameters in a specific order, you can use any order but the value tag must be used, for example:
CreateExButton(Type=Normal, Function=fnMax, Hint=Maximize Window, SrcX=20, SrcY=10, DestX=100, DestY=-100, Width=25, Height=25, TransColor=FF00FF)
As you can see, the order of the other parameters isn't important. Furthermore, not all parameters
are needed, some parameters have different requirements depending on the button "Type" and some
(like Hint and AlphaX/Y) are optional altogether.
Here are the possible values of the "Type" parameter:
"Normal"
:
Standard Button, accepts usual "fn" functions (see function list).
"Filter"
:
Instead of calling a function, this Button opens a filter's property dialog.
The filter name is passed in the "StringParam" value and can contain multiple
sub-strings so that you could open different filters with one button (such as
all Video Decoders). Example "StringParam=DIVX|XVID|MPEG4".
"Extended"
:
Extended Button functions are similar to the normal button function with the exception that
they use the Extended functions (see function list). In addition to
the "Function" value, you must also supply the "FunctionParam" value so that it
could be passed on to the Function. For example, when "Function=exSetAR", setting
"FunctionParam=1" will set the Aspect Ratio mode to "Source Aspect Ratio".
"Skin"
:
Use this Button-type to replace the Zoom Player skin with a single button.
The StringParam value is assigned the new skin name (i.e. "default.skn").
Here are the possible values of the "Activate" parameter:
"Closed"
:
Draw the Active bitmap when the current play state is "Closed".
"Stop"
:
Draw the Active bitmap when the current play state is "Stopped".
"Play"
:
Draw the Active bitmap when the current play state is "Playing".
"Pause"
:
Draw the Active bitmap when the current play state is "Paused".
"Mute"
:
Draw the Active bitmap when the Audio is muted.
"RandomPlay"
:
Draw the Active bitmap when Random Play is enabled.
"LoopPlay"
:
Draw the Active bitmap when playback is set to loop on the current track.
"StayOnTop"
:
Draw the Active bitmap when the StayOnTop is Active.
"EQState"
:
Draw the Active bitmap when the Equalizer is ON.
"PLMagnet"
:
Draw the Active bitmap when the Playlist Editor's Magnetic Dock is Active.
"EQMagnet"
:
Draw the Active bitmap when the Equalizer's Magnetic Dock is Active.
"Maximized"
:
Draw the Active bitmap when the Player window is maximized.
"SkinSelector"
:
Draw the Active bitmap when the Skin Selection interface is open.
"Station"
:
Draw the Active bitmap when the Station Manager interface is open.
"ColorControl"
:
Draw the Active bitmap when the Color Control navigator is open.
"Equalizer"
:
Draw the Active bitmap when the Equalizer interface is open.
"Navigator"
:
Draw the Active bitmap when any navigation interface is visible.
"MediaLibEdit"
:
Draw the Active bitmap when the Media Library editor interface is open.
"ChapterEdit"
:
Draw the Active bitmap when the Chapter editor interface is open.
"Playlist"
:
Draw the Active bitmap when the Playlist editor interface is open.
"PLMaximized"
:
Draw the Active bitmap when the Playlist editor window is maximized.
Note, Alpha blending by default is disabled, if you enable Alpha blended buttons by using the "AlphaX"
parameter, you should make sure that the button is listed toward the end of the skin file after the
background it should be blended against has already been drawn! Another thing is that Alpha Blending
only works against the background and not against other buttons. Using Alpha Blended icons is quite CPU
intensive when the skin is drawn/resized.
When the "Target" value is set to "CBar" (The Control Bar), you can't specify non-Normal type value,
width, height (as they are fixed and pre-defined) or DestX/Y as they are controlled dynamically. These are special
dynamic buttons which can be turned on/off through the control bar context menu or through the options dialog.
To create regular buttons on the control bar, use the "ExtCBar" value.
See "default.skn" and "defaultdvd.skn" files for multiple examples of this function.
Width of the Equalizer Window (Equalizer Window has a fixed width).
Height
:
Height of the Equalizer Window (Equalizer Window has a fixed height).
BarX
:
Specifies a Source X Offset for the Equalizer Bar Graphics.
BarY
:
Specifies a Source Y Offset for the Equalizer Bar Graphics.
BarW
:
Specifies a Width (In Pixels) for the Equalizer Bar Graphics.
BarC
:
Specifies the number of Bar Stages, this needs to be an uneven number!
BarPX
:
Specifies a Destination X Offset for the PreAmp Bar.
BarPY
:
Specifies a Destination Y Offset for the PreAmp Bar.
Bar[n]X
:
The [n] is replaced by a number from 0 to 9 representing the 10 different Equalizer Bars (Bands) X Positions from Left to Right (for example Bar2X=100).
Bar[n]Y
:
The [n] is replaced by a number from 0 to 9 representing the 10 different Equalizer Bars (Bands) Y Positions from Left to Right (for example Bar5Y=20).
This procedure assigns skinning information to the Navigator interface. At the minimum,
you must assign the "ICONImage", "IconSize", "DefaultX" and "DefaultY" parameters. The
"DefaultX" and "DefaultY" parameters must be assigned prior to any of the other icon location
parameters. Any unspecified icon type will fallback to the Default icon position.
Parameters:
BGImage
:
File Name (no Path) of the Navigator Background Image.
ICONImage
:
File Name (no Path) of the Navigator Icon Image File.
IconSize
:
Icon size in pixels (all icons are square, so width and height are the same).
DefaultX
:
X Position (in pixels) of the Default icon within the Icon Image file.
DefaultY
:
Y Position (in pixels) of the Default icon within the Icon Image file.
PictureX
:
X Position (in pixels) of the Picture icon within the Icon Image file.
PictureY
:
Y Position (in pixels) of the Picture icon within the Icon Image file.
AudioX
:
X Position (in pixels) of the Audio icon within the Icon Image file.
AudioY
:
Y Position (in pixels) of the Audio icon within the Icon Image file.
VideoX
:
X Position (in pixels) of the Video icon within the Icon Image file.
VideoY
:
Y Position (in pixels) of the Video icon within the Icon Image file.
DVDX
:
X Position (in pixels) of the DVD icon within the Icon Image file.
DVDY
:
Y Position (in pixels) of the DVD icon within the Icon Image file.
ExecuteX
:
X Position (in pixels) of the Execute icon within the Icon Image file.
ExecuteY
:
Y Position (in pixels) of the Execute icon within the Icon Image file.
URLX
:
X Position (in pixels) of the URL icon within the Icon Image file.
URLY
:
Y Position (in pixels) of the URL icon within the Icon Image file.
ArchiveX
:
X Position (in pixels) of the Archive icon within the Icon Image file.
ArchiveY
:
Y Position (in pixels) of the Archive icon within the Icon Image file.
FolderX
:
X Position (in pixels) of the Folder icon within the Icon Image file.
FolderY
:
Y Position (in pixels) of the Folder icon within the Icon Image file.
PlayListX
:
X Position (in pixels) of the Playlist icon within the Icon Image file.
PlayListY
:
Y Position (in pixels) of the Playlist icon within the Icon Image file.
CDX
:
X Position (in pixels) of the CD icon within the Icon Image file.
CDY
:
Y Position (in pixels) of the CD icon within the Icon Image file.
HDX
:
X Position (in pixels) of the Hard Disk icon within the Icon Image file.
HDY
:
Y Position (in pixels) of the Hard Disk icon within the Icon Image file.
LeftX
:
X Position (in pixels) of the Left icon within the Icon Image file.
LeftY
:
Y Position (in pixels) of the Left icon within the Icon Image file.
RightX
:
X Position (in pixels) of the Right icon within the Icon Image file.
RightY
:
Y Position (in pixels) of the Right icon within the Icon Image file.
This procedure enables you to skin the Pop-Up OSD Action window.
You can do the actual skinning using the skinning functions below (similar to skinning the main window).
Parameters:
MinWidth
:
Minimum width required to draw the OSD Background.
MinHeight
:
Minimum height required to draw the OSD Background.
xMargin
:
Number of pixels from the left border of the OSD Window to make room for the font against the edge.
yMargin
:
Number of pixels from the top border of the OSD Window to make room for the font against the edge.
TransColor
:
RGB Value representing the transparent color. Don't set this parameter to disable transparency.
ToggleInterface(Target=Value, Visible=Boolean)
This procedure allows you to show/hide Zoom Player user interfaces as the skin loads. This can
become quite annoying to the user if used improperly, so only use it when you must!
Parameters:
Target
:
Which interface to show/hide. Possible values are "PlayList", "EQ" and "CBar".
Visible
:
A value of "True" makes sure the interface is visible and "False" makes sure it's hidden.
With this procedure, you can specify the properties of the search drop-down list. If it is not specified, the search drop-down list
will remain invisible.
Parameters:
DestX
:
Destination X-Offset on the Skin.
DestY
:
Destination Y-Offset on the Skin.
Width
:
Maximum Width of Text (used for clipping).
Height
:
Maximum Height of Text (used for clipping).
FontName
:
The Name of the Font, i.e. Arial, Times New Romand, etc...
FontHeight
:
Size of Font (approximate height in pixels).
FontColor
:
RGB value indicating the Font Color.
FontStyle
:
Bold, Italic, Both or None, if both then separated by "|" (i.e. "Bold|Italic") (Default "None").
This procedure allows you to tint the color of regions within the source image. Using it,
you can create different skin files that contain different color schemes from the same
source image.
Parameters:
SrcX
:
X Offset in pixels from where to begin the color tinting.
SrcY
:
Y Offset in pixels from where to begin the color tinting.
Width
:
Width of rectangle to tint.
Height
:
Height of rectangle to tint.
rTint
:
The intensity of Red tinting (can be a negative value).
gTint
:
The intensity of Green tinting (can be a negative value).
bTint
:
The intensity of Blue tinting (can be a negative value).
cIgnore
:
A Hex RGB value containing the color that shouldn't be tinted (the transparency color usually).
This procedure allows you to prevent parts of the skin from tinting by the tint
bars on the skin selection dialog.
Parameters:
Target
:
Target specifies which skin bitmap not to tint. Since you can (optionally) specify a different skin bitmap for different sections of the skin, using this parameter allows you to choose which bitmap not to tint. Valid values are "Main", "PlayList", "EQ" and "OSD".
SrcX
:
X Offset in pixels from where to prevent the color tinting.
SrcY
:
Y Offset in pixels from where to prevent the color tinting.
Width
:
Width of rectangle to prevent tinting.
Height
:
Height of rectangle to prevent tinting.
Control Bar Skinning Functions:
The following commands perform the exact function as the above, but apply to the Control Bar.
Skin Groups:
Skin Grouping is a powerful tool for creating multiple skin variations or conditional skin
behavior within the same skin file. What it does is allow you to segment parts of the code
into a group. Anything within the specified segment will only be used if that Group is enabled,
otherwise, that part of the skin is ignored. Using the "exGroupToggle", "exGroupEnable",
"exGroupDisable" and "exGroupSet" functions you can modify which groups are active at any one time
and thus change the appearance of the skin. You can see an example of this in the default skin.
Group
Value
1
1
2
2
3
4
4
8
5
16
6
32
7
64
8
128
9
256
10
512
11
1024
12
2048
13
4096
14
8192
15
16384
16
32768
There are up to 16 skin groups you can define. Each group has a binary bitmask value:
Using the table to the left, if you would like to enable "Group #4" and "Group #15",
you would call the "exGroupEnable" function with a parameter value of 8192+8 = 8200.
To begin a Group within the code you use the "StartGroup" function. For example, to
begin "Group #15" you would do "StartGroup(8192)". After this line you would type all
the code belonging to this group and then end with the "EndGroup(8192)" command.
For ease of use, you can have multiple "Start" and "End" statements for the same group
in different parts of the code.
It is important that you specify the ActiveGroups variable (see above) to determine which
is the initial active group.
Any code that isn't within a Group Block is considered shared between all the groups
(for example, there may not be a need to change the PlayList, Equalizer or Control Bar code).
You can also share code between multiple specific groups by using additional parameters:
StartGroup(1,64) ... EndGroup(1,64)
Entering a negative group value would cause that part of the skin code to execute only if that
specific group is currently disabled, allowing you to simulate "if, then, else" structures. For Example:
StartGroup(1)
[Code for when Group 1 is Enabled]
EndGroup(1)
StartGroup(-1)
[Code for when Group 1 is Disabled]
EndGroup(-1)
Unlike regular groups, when using StartGroup/EndGroup with a negative group value, you shouldn't specify multiple groups.
Additional Comments:
All the dynamic settings and functions can accept SIMPLE 2 item math. Basically you
can do addition and subtraction, nothing else. This is only used so you can position
items relative to the window size.
Make sure you set all variables, otherwise when switching skins, some data will
remain from the older skin.
Double check for Typos and correct structure (as shown in the sample files shipping
with the player), when loading the skin, not a lot of error checking is performed,
and you can easily cause the player to crash!
Zoom Player Functions:
The Zoom Player function list has moved here