HomeZoom PlayerGuides › Skinning Tutorial

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.


Fullscreen Navigation interface skins:
The fullscreen navigation interface has its own independent set of skins, to learn how to tweak an existing design or create your own, visit the Fullscreen Navigation Skinning Tutorial.


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 NameDescription
<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)
<TimeLineText>Text displayed in the current timeline
<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)
<Volume>The current volume level
<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.
<PlayListPos>Playlist time based current position based on the time of the entire playlist.
<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 NameDescription
ActiveGroupsDetermines which Skin Groups are active by Default (see below for more information on skin groups)
AudioSkinSpecifies if the Skin only contains audio (see defaultaudio.skn), value can be 1 for Audio Only and 0 for regular.
SkinFileNameName of non-compressed BMP or Compressed PNG (8bit/24bit) image that contains all the skin graphics
PLSkinFileNameBMP/PNG image used for Playlist Skinning elements (if doesn't exists, "SkinFileName" is used)
EQSkinFileNameBMP/PNG image used for Equalizer Skinning elements (if doesn't exists, "SkinFileName" is used)
OSDSkinFileNameBMP/PNG image used for OSD Skinning elements (if doesn't exists, "SkinFileName" is used)
CBSkinFilenameBMP/PNG image used for drawing the control bar (if doesn't exists, "SkinFileName" is used)
MENUSkinFileNameBMP/PNG image used for right-click Context Menu elements (if doesn't exists, "SkinFileName" is used)
CWSkinFilenameBMP/PNG image used for drawing Custom Windows/Dialogs with Alpha-blended Buttons
InstallFontTemporarily load (while the skin is used) a font which isn't installed on the system
TimelineCursor Name of a Cursor file that will be used for timeline seeking
iWinWidthInitial Window Width
iWinHeightInitial Window Height
iVidWidthInitial Video Width
iVidHeightInitial Video Height
iVidLeftInitial Video Position in pixels from left position of Window
iVidTopInitial Video Position in pixels from top position of Window
iMinWidthMinimum Video Width (It's recommended keep the minimum Width/Height to a 4:3 aspect ratio)
iMinHeightMinimum 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
tLineWidthTimeLine Width
tLineHeightTimeLine Height
tLineLeftTimeLine position in pixels from left position of Window
tLineTopTimeLine position in pixels from top position of Window
tLineColorTimeLine Color (Hex RGB Value, like on web pages. Not required if a bitmap is set using TimeLineFG)
tLineFontSizeTimeLine Font Size (don't use, replaced by tLineFontHeight)
tLineFontHeightTimeLine Font Height
tLineFontYOfsTimeLine Font Y-Offset in pixels (can be negative value)
tLineFontFaceTimeLine Font Name
tLineFontColorTimeLine Font Color
tLineFontStyleBold and Italic, example : tLineFontStyle = (Bold|Italic), To disable style use (None) as value.
tLineNoTextDon't show any text on timeline (Set to 1 to show no text and 0 to show text - default)
tLineTransHex RGB Value of the coor used for Transparency on the Timeline
cBarFontSizeControl Bar Font Size (don't use, replaced by cBarFontHeight)
cBarFontHeightControl Bar Font Height
cBarFontYOfsControl Bar Font Y-Offset in pixels (can be negative value)
cBarFontFaceControl Bar Font Name
cBarFontColorControl Bar Font Color
cBarFontStyleBold and Italic, example : CBarFontStyle = (Bold|Italic), To disable style use (None) as value.
cBarNoTextDon't show any text on the control bar timeline (Set to 1 to show no text and 0 to show text - default)
cBarButWidthControl Bar Button Width (must be set before any buttons are added to the control bar)
cBarButHeightControl Bar Button Height (same as width, but also sets the height of the control bar)
cBarRightMarginNumber of pixels to save on the right side of skin
cBarTLColorControl Bar TimeLine Color (Not required if a bitmap is set using TimeLineCBarFG)
cBarTLMinWidthMinimum allowed Control Bar time line width
cBarTLWidthWidth of the Control Bar time line
cBarTLHeightHeight of the Control Bar time line
cBarTLLeftControl Bar TimeLine position in pixels from left position of Control Bar
cBarTLTopControl Bar TimeLine position in pixels from top position of Control Bar
cBarTLTransHex RGB Value of the coor used for Transparency on the Control Bar Timeline
iTransColorHex RGB Value of the color used for Window Transparency on the Main User Interface
cTransColorHex RGB Value of the color used for Window Transparency on the Control Bar
pTransColorHex RGB Value of the color used for Window Transparency on the Playlist
eTransColorHex 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).
FillMask(SrcX, SrcY, Width, Height, DestX, DestY, SrcRGBColor, DestRGBColor)
  • 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.
CopyBitmap(SrcX, SrcY, Width, Height, DestX, DestY)
  • Copy a bitmap from the skin image to the user interface.
CopyStretchedBitmap(SrcX, SrcY, SrcWidth, SrcHeight, DestX, DestY, DestWidth, DestHeight)
  • Copy a bitmap from the skin image to the user interface stretching it to fit the specified rectangle. This function is rather CPU intensive.
CopyTransBitmap(SrcX, SrcY, Width, Height, DestX, DestY, RGBColor)
  • 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.
CopyMaskedBitmap(SrcX, SrcY, Width, Height, DestX, DestY)
  • 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.
TileBitmapV(SrcX, SrcY, Width, Height, DestX, DestY, FillHeight)
  • Tile bitmap vertically to fill a specific number of pixels.
TileBitmapH(SrcX, SrcY, Width, Height, DestX, DestY, FillWidth)
  • Tile bitmap horizontally to fill a specific number of pixels.
TileBitmapA(SrcX, SrcY, Width, Height, DestX, DestY, FillWidth, FillHeight)
  • Tile bitmap to fill an area of specific number of pixels.
GradientRectH(DestX, DestY, Width, Height, RGBColor1, RGBColor2)
  • Fill a rectangle with a horizontal gradient from RGBColor1 to RGBColor2 Doing gradient fills may be CPU intensive.
GradientRectV(DestX, DestY, Width, Height, RGBColor1, RGBColor2)
  • 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.
TimeLineHighlight(StartX=Value, StartY=Value, StartW=Value, StartH=Value, MiddleX=Value, MiddleY=Value, MiddleW=Value, MiddleH=Value, EndX=Value, EndY=Value,EndW=Value,EndH=Value,YOfs=Value)
  • 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.
TimeLineChapters
  • Accepts identical parameters to the TimeLineHighlight function. Used to mark chapter points on the timeline.

  • Additional parameter:
    TickWidth : Width of the chapter point.
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.
TimeLineActive(SrcX, SrcY, Width, Height, XOffset, YOffset)
  • 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.
PlayListData(DestX=Value, DestY=Value, Width=Value, Height=Value, MinWidth=Value, MinHeight=Value, Border=RGBValue,Background=RGBValue,BackgroundGrad=RGBValue, Foreground=RGBValue, SelectBG=RGBValue, SelectFG=RGBValue, Highlight=RGBValue, ScrollBG=RGBValue, ScrollBGGrad=RGBValue, ScrollFace=RGBValue, ScrollDark=RGBValue, ScrollLight=RGBValue, BGSrcX=Value, BGSrcY=Value, BGSrcW=Value, BGSrcH=Value, ScrollWidth=Value, ScrollBGX=Value, ScrollBGY=Value, ScrollBGW=Value, ScrollBGH=Value, ScrollFGX=Value, ScrollFGY=Value, ScrollFGW=Value, ScrollFGH=Value, SearchXOfs=Value)
  • This function sets all the neccessery data to position and color the Playlist file listing.

  • Parameters:
    DestX : Destination X-Offset on the Skin.
    DestY : Destination Y-Offset on the Skin.
    Width : Width of File List area.
    Height : Height of File List area.
    Highlight : RGB Value representing the playing item color.
    Border : RGB Value representing the list border color, if no value is specified, no border is drawn.
    Background : RGB Value representing the list background color.
    Foreground : RGB Value representing the list foreground color.
    TrackNumbers : RGB Value representing the list track numbering color.
    TrackNumberSelect : RGB Value representing the list track numbering color when the item is selected (different background color).
    BackgroundGrad : RGB Value which is used to specify a vertical gradient for the background
    BackGradHorz : True/False Value which is used to specify if the background gradient is horizontal
    BGSrcX : Pixel X Offset of a Background Image (instead of a color)
    BGSrcY : Pixel Y Offset of a Background Image (instead of a color)
    BGSrcW : Pixel Width of a Background Image (instead of a color)
    BGSrcH : Pixel Height of a Background Image (instead of a color)
    SelectBG : RGB Value representing the selected item background color.
    SelectFG : RGB Value representing the selected item foreground color.
    SelectBorder : RGB Value representing the selected item border color.
    SearchFG : RGB Value representing the search box foreground (font) color.
    SearchFGA : RGB Value representing the search box foreground (font) color when Active.
    SearchBG : RGB Value representing the search box background color.
    SearchFontFace : Name of the Font ("Arial" for example) used in the search box.
    SearchFontHeight : Font Height in Pixels used in the search box.
    SearchFontStyle : Font Style (Bold/Italic), can combine, for example "Bold|Italic" used in the search box.
    SearchFontShadow : RGB Value representing the search box foreground (font) shadow. Do not specify this value to disable the font's shadow.
    SearchHeight : Height of the search box in pixels.
    SearchXOfs : X Offset (In Pixels) from the left in which to draw the Search Dialog text.
    SearchYOfs : Y Offset (In Pixels) from the top of the search box in which to draw the Search Dialog text (only applies when skinning the search box background).
    SearchBGLSrcX : Left side Pixel X Offset of the Search Box Background Image (instead of a color).
    SearchBGLSrcY : Left side Pixel Y Offset of the Search Box Background Image (instead of a color).
    SearchBGLSrcW : Left side Pixel Width of the Search Box Background Image (instead of a color).
    SearchBGMSrcX : Middle (tiling) Pixel X Offset of the Search Box Background Image (instead of a color).
    SearchBGMSrcY : Middle (tiling) Pixel Y Offset of the Search Box Background Image (instead of a color).
    SearchBGMSrcW : Middle (tiling) Pixel Width of the Search Box Background Image (instead of a color).
    SearchBGRSrcX : Right Pixel X Offset of the Search Box Background Image (instead of a color).
    SearchBGRSrcY : Right Pixel Y Offset of the Search Box Background Image (instead of a color).
    SearchBGRSrcW : Right Pixel Width of the Search Box Background Image (instead of a color).
    ScrollBGTSrcX : Top Pixel X Offset of the Scroll Box Background Image (instead of a color).
    ScrollBGTSrcY : Top Pixel Y Offset of the Scroll Box Background Image (instead of a color).
    ScrollBGTSrcH : Top Pixel Height of the Scroll Box Background Image (instead of a color).
    ScrollBGMSrcX : Middle (tiling) Pixel X Offset of the Scroll Box Background Image (instead of a color).
    ScrollBGMSrcY : Middle (tiling) Pixel Y Offset of the Scroll Box Background Image (instead of a color).
    ScrollBGMSrcH : Middle (tiling) Pixel Height of the Scroll Box Background Image (instead of a color).
    ScrollBGBSrcX : Bottom Pixel X Offset of the Scroll Box Background Image (instead of a color).
    ScrollBGBSrcY : Bottom Pixel Y Offset of the Scroll Box Background Image (instead of a color).
    ScrollBGBSrcH : Bottom Pixel Height of the Scroll Box Background Image (instead of a color).
    ScrollBG : RGB Value representing the scroll box background color.
    ScrollBGGrad : RGB Value which is used to specify a vertical gradient for the scroll box.
    ScrollGradHorz : True/False Value which is used to specify if the scroll box gradient is horizontal.
    ScrollFace : RGB Value representing the scroll widget Face color.
    ScrollDark : RGB Value representing the scroll widget Dark color.
    ScrollLight : RGB Value representing the scroll widget Light color.
    ScrollWidth : Width of the Scroll Widget.
    ScrollHeight : Height of the Scroll Widget.
    ScrollBGSrcX : Pixel X Offset of a Scroll Box Background Image (instead of a color).
    ScrollBGSrcY : Pixel Y Offset of a Scroll Box Background Image (instead of a color).
    ScrollBGSrcW : Pixel Width of a Scroll Box Background Image (instead of a color).
    ScrollBGSrcH : Pixel Height of a Scroll Box Background Image (instead of a color).
    ScrollFGSrcX : Pixel X Offset of a Scroll Box Widget Image (instead of a color).
    ScrollFGSrcY : Pixel Y Offset of a Scroll Box Widget Image (instead of a color).
    ScrollFGSrcW : Pixel Width of a Scroll Box Widget Image (instead of a color).
    ScrollFGSrcH : Pixel Height of a Scroll Box Widget Image (instead of a color).
    ScrollFGAlpha : Set value to 1 if the Scroll Box Widget contains an Alpha transparency image to its right
    FontFace : Name of the Font ("Arial" for example).
    FontHeight : Font Height in Pixels.
    FontStyle : Font Style (Bold/Italic), can combine, for example "Bold|Italic".
MenuData(params)
  • The MenuData function defines all the graphical elements used by the skinned right-click context menu.
  • Parameters:
    Since the design is somewhat complex, a screenshot that clearly lists every parameters and their visual position in the menu can be found here.
CWData(TransColor=RGBValue, yMargin=Value, HdrFontYOfs=Value, HdrFontHeight, HdrFontColor, TextXMargin, BHeight=Value, BLeftWidth=Value, BMidWidth=Value, BRightWidth=Value, BLeftUSrcX=Value, BLeftUSrcY=Value, BLeftDSrcX=Value, BLeftDSrcY=Value, BMidUSrcX=Value, BMidUSrcY=Value, BMidDSrcX=Value, BMidDSrcY=Value, BRightUSrcX=Value, BRightUSrcY=Value, BRightDSrcX=Value, BRightDSrcY=Value, BFontMargin=Value)
  • The CWData function helps define a custom skinned window with Alpha Blended widgets (Buttons, Drop-Down lists, etc) that is used by several dynamic dialogs (Error Messages for example). Each element's alpha bitmap is expected on the right side of the element's coordinates, in the same Y offset.
  • Parameters:
    TransColor  : A color-keyed transparent button, an RGB value indicating the transparent color-key used by the volume window and volume bar inside it.
    xMargin  : Number of pixels from the left/right border of the Custom Window to maintain enough margin to account for the window's frame.
    yMargin  : Number of pixels from the bottom border of the Custom Window to maintain enough margin to account for the window's frame.
    HdrFontYOfs  : Number of pixels from the top border of the Custom Window to begin drawing the Header Text.
    HdrFontXMargin : Number of pixels from the left/right border of the Custom Window to maintain enough margin to account for the window's frame and header side bitmaps
    HdrFontHeight  : Header Text font height.
    HdrFontColor  : RGB Value representing the Header Text color.
    HdrFontFace  : A string containing the font name.
    HdrFontStyle  : Header Font Style (Bold/Italic), can combine, for example "Bold|Italic".
    TextXMargin  : Number of pixels from the left/right border of the Custom Window to maintain enough margin to account for the window's frame and extra margin for the text.
    BHeight  : Button's Height in pixels.
    BLeftWidth  : Width in pixels of the Button's Left segment.
    BMidWidth  : Width in pixels of the Button's tiling Middle segment.
    BRightWidth  : Width in pixels of the Button's Right segment.
    BLeftUSrcX  : Pixel X Offset in the source image of the Button's Up Mode Left Segment.
    BLeftUSrcY  : Pixel Y Offset in the source image of the Button's Up Mode Left Segment.
    BLeftDSrcX  : Pixel X Offset in the source image of the Button's Down Mode Left Segment.
    BLeftDSrcY  : Pixel Y Offset in the source image of the Button's Down Mode Left Segment.
    BLeftASrcX  : Pixel X Offset in the source image of the Button's Active Mode Left Segment.
    BLeftASrcY  : Pixel Y Offset in the source image of the Button's Active Mode Left Segment.
    BLeftDASrcX  : Pixel X Offset in the source image of the Button's Disabled Mode Left Segment.
    BLeftDASrcY  : Pixel Y Offset in the source image of the Button's Disabled Mode Left Segment.
    BMidUSrcX  : Pixel X Offset in the source image of the Button's Up Mode tiling Middle Segment.
    BMidUSrcY  : Pixel Y Offset in the source image of the Button's Up Mode tiling Middle Segment.
    BMidDSrcX  : Pixel X Offset in the source image of the Button's Down Mode tiling Middle Segment.
    BMidDSrcY  : Pixel Y Offset in the source image of the Button's Down Mode tiling Middle Segment.
    BMidASrcX  : Pixel X Offset in the source image of the Button's Active Mode tiling Middle Segment.
    BMidASrcY  : Pixel Y Offset in the source image of the Button's Active Mode tiling Middle Segment.
    BMidDASrcX  : Pixel X Offset in the source image of the Button's Disabled Mode tiling Middle Segment.
    BMidDASrcY  : Pixel Y Offset in the source image of the Button's Disabled Mode tiling Middle Segment.
    BRightUSrcX  : Pixel X Offset in the source image of the Button's Up Mode Right Segment.
    BRightUSrcY  : Pixel Y Offset in the source image of the Button's Up Mode Right Segment.
    BRightDSrcX  : Pixel X Offset in the source image of the Button's Down Mode Right Segment.
    BRightDSrcY  : Pixel Y Offset in the source image of the Button's Down Mode Right Segment.
    BRightASrcX  : Pixel X Offset in the source image of the Button's Active Mode Right Segment.
    BRightASrcY  : Pixel Y Offset in the source image of the Button's Active Mode Right Segment.
    BRightDASrcX  : Pixel X Offset in the source image of the Button's Disabled Mode Right Segment.
    BRightDASrcY  : Pixel Y Offset in the source image of the Button's Disabled Mode Right Segment.
    BFontMargin  : The number of pixels to keep as a margin relative to the button's text position. This parameter affects button width.
    BFontHeight  : The button's font height.
    BFontOutline  : RGB Value Representing the button's font outline color. A value of -1 disables the font outline.
    BFontStyle  : Button's Font Style (Bold/Italic), can combine, for example "Bold|Italic".
    DDLHeight  : Button's Height in pixels.
    DDLLeftWidth  : Width in pixels of the Drop-Down List's Left segment.
    DDLMidWidth  : Width in pixels of the Drop-Down List's tiling Middle segment.
    DDLRightWidth  : Width in pixels of the Drop-Down List's Right segment.
    DDLLeftUSrcX  : Pixel X Offset in the source image of the Drop-Down List's Up Mode Left Segment.
    DDLLeftUSrcY  : Pixel Y Offset in the source image of the Drop-Down List's Up Mode Left Segment.
    DDLLeftDSrcX  : Pixel X Offset in the source image of the Drop-Down List's Down Mode Left Segment.
    DDLLeftDSrcY  : Pixel Y Offset in the source image of the Drop-Down List's Down Mode Left Segment.
    DDLMidUSrcX  : Pixel X Offset in the source image of the Drop-Down List's Up Mode tiling Middle Segment.
    DDLMidUSrcY  : Pixel Y Offset in the source image of the Drop-Down List's Up Mode tiling Middle Segment.
    DDLMidDSrcX  : Pixel X Offset in the source image of the Drop-Down List's Down Mode tiling Middle Segment.
    DDLMidDSrcY  : Pixel Y Offset in the source image of the Drop-Down List's Down Mode tiling Middle Segment.
    DDLRightUSrcX  : Pixel X Offset in the source image of the Drop-Down List's Up Mode Right Segment.
    DDLRightUSrcY  : Pixel Y Offset in the source image of the Drop-Down List's Up Mode Right Segment.
    DDLRightDSrcX  : Pixel X Offset in the source image of the Drop-Down List's Down Mode Right Segment.
    DDLRightDSrcY  : Pixel Y Offset in the source image of the Drop-Down List's Down Mode Right Segment.
    DDLTBTopMargin  : Drop-Down List's Text Input Box Top Margin (spacing) in Pixels.
    DDLTBLeftMargin  : Drop-Down List's Text Input Box Left Margin (spacing) in Pixels.
    DDLTBRightMargin : Drop-Down List's Text Input Box Right Margin (spacing) in Pixels.
    TBHeight  : Text Input Box Height in Pixels.
    TBBGColor  : Text Input Box Background Color.
    TBFontColor  : Text Input Box Font Color.
    TBOutlineColor  : Text Input Box Outline color. The outline is drawn outside of the text box dimensions.
    DlgFontHeight  : Confirmation dialog text font height.
    DlgFontColor  : RGB Font color used when displaying text in custom dialogs.
    DlgFontActive  : RGB Font color used to indicate the active button font color when displaying confirmation dialogs.
    DlgFontInactive  : RGB Font color used to indicate the inactive button font color when displaying confirmation dialogs.
    ERRTintRed  : A value of "-255" to "255" representing the Red tint value used by the Error dialog.
    ERRTintGreen  : A value of "-255" to "255" representing the Green tint value used by the Error dialog.
    ERRTintBlue  : A value of "-255" to "255" representing the Blue tint value used by the Error dialog.
    ERRFontColor  : RGB Font color used when displaying text in the error dialogs.
    ERRFontActive  : RGB Font color used to indicate the active button font color in error dialogs.
    ERRFontInactive  : RGB Font color used to indicate the inactive button font color in error dialogs.
    ERRHdrColor  : RGB Font color used by the header text.
SkinModes(Mode1=Type|Value, Mode2=Type|Value, Mode3=Type|Value, Mode4=Type|Value, Mode5=Type|Value, Mode6=Type|Value)
  • This function sets the Skin Mode group masks that are by default assigned to the F4-F9 keys. Each mode can be used to modify the active skin group, controlling which section of the skin script are enabled or disabled.
    Possible Type values are "Set", "Toggle", "Enable" and "Disable". A negative group number in the value field means that the player window should maintain its size when switching to the new skin mode.
  • Parameters:
    Mode1 : F4 key
    Mode2 : F5 key
    Mode3 : F6 key
    Mode4 : F7 key
    Mode5 : F8 key
    Mode6 : F9 key

    These are the default values used by Zoom Player prior to v8.1:
    SkinModes(Mode1=Set|-1, Mode2=Set|-2, Mode3=Set|-8192, Mode4=Set|64, Mode5=Set|-131072, Mode6=Set|-262144)
VolumeWindow(SrcX=Value, SrcY=Value, Width=Value, Height=Value, VSrcX=Value, VSrcY=Value, VWidth=Value, VHeight=Value, VDestX=Value, VDestY=Value, Images=Value, Vertical=True/False, TransColor=Value, XOfs=Value, YOfs=Value, Hint=Value)
  • 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 used by the volume window and volume bar inside it.
    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)
VolumeExData(SrcX=Value, SrcY=Value, DestX=Value, DestY=Value, Width=Value, Height=Value, Images=Value, Vertical=True/False, Hint=Value)
  • 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.

    Example:
    VolumeExData(SrcX=208, SrcY=0, DestX=-50, DestY=-50, Width=42, Height=14, Images=12, Vertical=False, Hint=Volume)
RateExData(SrcX=Value, SrcY=Value, DestX=Value, DestY=Value, Width=Value, Height=Value, Images=Value, Vertical=True/False, Hint=Value)
  • 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.

    Example:
    RateExData(SrcX=208, SrcY=0, DestX=-50, DestY=-50, Width=42, Height=14, Hint=Play Rate Control)
BalanceExData(SrcX=Value, SrcY=Value, DestX=Value, DestY=Value, Width=Value, Height=Value, Images=Value, Vertical=True/False, Hint=Value)
  • 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.

    Example:
    BalanceExData(SrcX=208, SrcY=0, DestX=-50, DestY=-50, Width=42, Height=14, Hint=Audio Balance)
ResizeBox(XOfs, YOfs, Width, Height, CursorType)
  • 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)
(Obsolete) DrawText
  • This function has been superseded by DrawExText.
DrawExText(Type=Value, Target=Value, DestX=Value, DestY=Value, Width=Value, Height=Value, Align=Value, Case=Value, WordWrap=Value, FontName=Value ,FontSize=Value, FontColor=Value, FontStyle=Value, Text=Value, Function=Value)
  • Parameters:
    Type : 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...

    Example:
    DrawExText(DestX=5 ,DestY=5, Width=-10, Height=20, Align=Center, Case=UpFirst, FontName=Arial, FontSize=11, FontColor=FFFFFF, FontStyle=Bold, Text=)

  • 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
CreateExButton(Type=Value, Target=Value, SrcX=Value, SrcY=Value, Width=Value, Height=Value, HoverX=Value, HoverY=Value, AlphaX=Value, AlphaY=Value, DestX=Value, DestY=Value, Function=Value, FunctionParam=Value, StringParam=Value, TransColor=Value, Hint=Value, AniSpeed=Value)
  • Parameters:
    Type : Type of Button (see below) (Default = "Normal").
    Target : 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).
    DisabledX : X-Offset from source image to the location of the Button Disabled Bitmap (Optional, by default it's SrcX+Width).
    DisabledY : Y-Offset from source image to the location of the Button Disabled 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).
    ActiveHoverX : X-Offset from source image to the location of the Activate (Special Event) Bitmap (Hover state).
    ActiveHoverY : Y-Offset from source image to the location of the Activate (Special Event) Bitmap (Hover 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 5-500, default = 50).
    AniFrames : If Animated buttons are enabled, the number of frames to generate for the button animation (value from 2-200, default = 9).
    RepeatRate : If a RepeatRate is used, holding down the button repeatedly triggers the assigned function every by the value specified in MS (value from 25-1000, default = 500).

    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. Use the "StringParam" value to assign the new skin file name (i.e. "default.skn").
    "URL" : Use this Button-type to open a URL (web address). Set the URL (http://) address in the "StringParam" value.
    "File" : Use this Button-type to open an external file. Set the file name in the "StringParam" value.

  • 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.
EQData(Width=Value, Height=Value, BarX=Value, BarY=Value, BarW=Value, BarC=Value, BarPX=Value, BarPY=Value, Bar[n]X=Value, Bar[n]Y=Value)
  • Parameters:
    Width : 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).
OSDPopUp(MinWidth=Value, MinHeight=Value, xMargin=Value, yMargin=Value, TransColor=RGBValue)
  • 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/right borders of the OSD Window to maintain enough margin to account for the window's frame.
    yMargin : Number of pixels from the top/bottom border of the OSD Window to maintain enough margin to account for the window's frame.
    TransColor : RGB Value representing the transparent color. Don't set this parameter to disable transparency.
    FontFace : The Name of the Font, i.e. Arial, Times New Romand, etc...
    FontHeight : The Font's Height
    FontStyle : Bold, Italic, Both or None, if both then separated by "|" (i.e. "Bold|Italic") (Default "None").
    FontColor : RGB Value representing the OSD's font color.
    OutlineColor : RGB Value representing the OSD font's outline color. Set to -1 to disable font outline
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.
TintSource(SrcX=Value, SrcY=Value, Width=Value, Height=Value, rTint=Value, gTint=Value, bTint=Value, cIgnore=RGBValue)
  • 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).

  • Example:
    TintSource(SrcX=85, SrcY=495, Width=56, Height=28, rTint=-50, gTint=25, bTint=25, cIgnore=FF00FF)
NoTintSource(Target=Value, SrcX=Value, SrcY=Value, Width=Value, Height=Value)
  • 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.

CopyCBarBitmap(SrcX, SrcY, Width, Height, DestX, DestY)
CopyCBarStretchedBitmap(SrcX, SrcY, SrcWidth, SrcHeight, DestX, DestY, SrcWidth, SrcHeight)
CopyCBarTransBitmap(SrcX, SrcY, Width, Height, DestX, DestY, RGBColor)
CopyCBarMaskedBitmap(SrcX, SrcY, Width, Height, DestX, DestY)
GradientCBarRectH(DestX, DestY, Width, Height, RGBColor1, RGBColor2)
GradientCBarRectV(DestX, DestY, Width, Height, RGBColor1, RGBColor2)
TileCBarBitmapV(SrcX, SrcY, Width, Height, DestX, DestY, FillHeight)
TileCBarBitmapH(SrcX, SrcY, Width, Height, DestX, DestY, FillWidth)
TileCBarBitmapA(SrcX, SrcY, Width, Height, DestX, DestY, FillWidth, FillHeight)
FillCBarRect(DestX, DestY, Width, Height, RGBColor)
TimeLineCBarBG(SrcX, SrcY, Width)
TimeLineCBarFG(SrcX, SrcY, Width)
TimeLineCBarHighlight(StartX=Value, StartY=Value, StartW=Value, StartH=Value, MiddleX=Value, MiddleY=Value, MiddleW=Value, MiddleH=Value, EndX=Value, EndY=Value,EndW=Value,EndH=Value,YOfs=Value)
TimelineCBarChapters(StartX=Value, StartY=Value, StartW=Value, StartH=Value, MiddleX=Value, MiddleY=Value, MiddleW=Value, MiddleH=Value, EndX=Value, EndY=Value,EndW=Value,EndH=Value,YOfs=Value,TickWidth=Value)
TimeLineCBarActive(SrcX, SrcY, Width, Height, XOffset, YOffset)
TimeLineCBarFontShade(Left, Right, Top, Bottom)
TimeLineCBarStart(SrcX, SrcY, Width)
TimeLineCBarEnd(SrcX, SrcY, Width)


Playlist Skinning Functions:
The following commands perform the exact function as the above, but apply to the Control Bar.

CopyPLBitmap(SrcX, SrcY, Width, Height, DestX, DestY)
CopyPLStretchedBitmap(SrcX, SrcY, SrcWidth, SrcHeight, DestX, DestY, SrcWidth, SrcHeight)
CopyPLTransBitmap(SrcX, SrcY, Width, Height, DestX, DestY, RGBColor)
CopyPLMaskedBitmap(SrcX ,SrcY, Width, Height, DestX, DestY)
TilePLBitmapV(SrcX, SrcY, Width, Height, DestX, DestY, FillHeight)
TilePLBitmapH(SrcX, SrcY, Width, Height, DestX, DestY, FillWidth)
TilePLBitmapA(SrcX, SrcY, Width, Height, DestX, DestY, FillWidth, FillHeight)
GradientPLRectH(DestX, DestY, Width, Height, RGBColor1, RGBColor2)
GradientPLRectV(DestX, DestY, Width, Height, RGBColor1, RGBColor2)
FillPLRect(DestX,DestY, Width, Height, RGBColor)
ResizePLBox(XOfs, YOfs, Width, Height, CursorType)


OSD Skinning Functions:
CopyOSDBitmap(SrcX, SrcY, Width, Height, DestX, DestY)
CopyOSDStretchedBitmap(SrcX, SrcY, SrcWidth, SrcHeight, DestX, DestY, SrcWidth, SrcHeight)
CopyOSDTransBitmap(SrcX, SrcY, Width, Height, DestX, DestY,RGBColor)
CopyOSDMaskedBitmap(SrcX, SrcY, Width, Height, DestX, DestY)
TileOSDBitmapV(SrcX, SrcY, Width, Height, DestX, DestY, FillHeight)
TileOSDBitmapH(SrcX, SrcY, Width, Height, DestX, DestY, FillWidth)
TileOSDBitmapA(SrcX, SrcY, Width, Height, DestX, DestY, FillWidth,FillHeight)
GradientOSDRectH(DestX, DestY, Width, Height, RGBColor1, RGBColor2)
GradientOSDRectV(DestX, DestY, Width, Height, RGBColor1, RGBColor2)
FillOSDRect(DestX, DestY, Width, Height, RGBColor)


Equalizer Skinning Functions:
CopyEQBitmap(SrcX, SrcY, Width, Height, DestX, DestY)
CopyEQStretchedBitmap(SrcX, SrcY, SrcWidth, SrcHeight, DestX, DestY, SrcWidth, SrcHeight)
CopyEQTransBitmap(SrcX, SrcY, Width, Height, DestX, DestY,R GBColor)
CopyEQMaskedBitmap(SrcX, SrcY, Width, Height, DestX, DestY)
TileEQBitmapV(SrcX, SrcY, Width, Height, DestX, DestY, FillHeight)
TileEQBitmapH(SrcX, SrcY, Width, Height, DestX, DestY, FillWidth)
TileEQBitmapA(SrcX, SrcY, Width, Height, DestX, DestY, FillWidth,FillHeight)
GradientEQRectH(DestX, DestY, Width, Height, RGBColor1, RGBColor2)
GradientEQRectV(DestX, DestY, Width, Height, RGBColor1, RGBColor2)
FillEQRect(DestX, DestY, Width, Height, RGBColor)


Custom Window Skinning Functions:
CopyCWBitmap(SrcX, SrcY, Width, Height, DestX, DestY)
CopyCWStretchedBitmap(SrcX, SrcY, SrcWidth, SrcHeight, DestX, DestY, SrcWidth, SrcHeight)
CopyCWTransBitmap(SrcX, SrcY, Width, Height, DestX, DestY,RGBColor)
CopyCWMaskedBitmap(SrcX, SrcY, Width, Height, DestX, DestY)
TileCWBitmapV(SrcX, SrcY, Width, Height, DestX, DestY, FillHeight)
TileCWBitmapH(SrcX, SrcY, Width, Height, DestX, DestY, FillWidth)
TileCWBitmapA(SrcX, SrcY, Width, Height, DestX, DestY, FillWidth,FillHeight)
GradientCWRectH(DestX, DestY, Width, Height, RGBColor1, RGBColor2)
GradientCWRectV(DestX, DestY, Width, Height, RGBColor1, RGBColor2)
FillCWRect(DestX, DestY, Width, Height, RGBColor)


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.

GroupValue
11
22
34
48
516
632
764
8128
9256
10512
111024
122048
134096
148192
1516384
1632768
   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 #14", 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 #14" 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.

To create a script section that only activates if two or more groups are enabled, use the following structure:

StartAndGroup(1,16)
[Code for when Groups 1 and 16 are Enabled]
EndAndGroup(1,16)





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