home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 February / PCWorld_2004-02_cd.bin / software / vyzkuste / jaknavideo / jaknavideo.exe / zp320pro-trial.exe / Skin / brownish.skn < prev    next >
Text File  |  2003-11-09  |  66KB  |  1,061 lines

  1. Future Brownish Media Skin (sample) by Blight
  2. // First line must be the description... don't put any comments before it.
  3. //
  4. //
  5. // This file is file is a semi-tutorial on how to create Zoom Player skins.
  6. // It shows you the exact structure used to create the default media skin.
  7. // It is only a sample file and is not required for Zoom Player to operate.
  8. //
  9. //
  10. // Constants:
  11. //
  12. // <WinWidth>        - Width in Pixels of Window
  13. // <WinHeight>       - Height in Pixels of Window
  14. // <WinHalfWidth>    - Width in Pixels of Window divided by 2 (useful for screen-centering)
  15. // <WinHalfHeight>   - Height in Pixels of Window divided by 2 (useful for screen-centering)
  16. // <PLWinWidth>      - Width in Pixels of Play List Window
  17. // <PLWinHeight>     - Height in Pixels of Play List Window
  18. // <PLWinHalfWidth>  - Width in Pixels of Play List Window divided by 2 (useful for screen-centering)
  19. // <PLWinHalfHeight> - Height in Pixels of Play List Window divided by 2 (useful for screen-centering)
  20. // <VidWidth>        - Width in Pixels of Video Area
  21. // <VidHeight>       - Height in Pixels of Video Area
  22. // <ARWidth>         - Width in Pixels of Video Area with Aspect Ratio Adjustment
  23. // <ARHeight>        - Height in Pixels of Video Area with Aspect Ratio Adjustment
  24. // <FileName>        - Name of Currently loaded file (full path)
  25. // <FileTitle>       - Name of Currently loaded file (file name+extension)
  26. // <FileBase>        - Name of Currently loaded file (file name only, no extension or path)
  27. // <cBarWidth>       - Width in Pixels of Control Bar after deducting the space used by the buttons and Right Margin
  28. // <cBarFullWidth>   - Width in Pixels of the entire Control Bar
  29. // <cBarHeight>      - Height in Pixels of Control Bar
  30. // <cBarHalfWidth>   - Width in Pixels of Control Bar after deducting the space used by the buttons divided by 2
  31. // <cBarHalfHeight>  - Height in Pixels of Control Bar divided by 3
  32. // <ovColor>         - Overlay Color RGB (can be used for transparency with the Control Bar)
  33. // <Time>            - Current Time Display (playing media)
  34. // <TimeRemain>      - Time Remaining
  35. // <Duration>        - Total Duration of playing content
  36. // <DVDChapter>      - Current DVD Chapter
  37. // <DVDTitle>        - Current DVD Title
  38. // <DVDVolume>       - Current DVD Volume Label
  39. // <PlayListItems>   - Number of items in the current play list
  40. // <PlayListTotal>   - Total Time used by currently loaded Play List Items.
  41. // <Clock>           - The Current Time (Clock)
  42. // <Date>            - The Current Date
  43. //
  44. // Vars:
  45. //
  46. // ActiveGroups   - Determines which Skin Groups are active by Default (see below for more information on skin groups)
  47. // SkinFileName   - Name of non-compressed (8bit/24bit) BMP image that contains all the skin graphics
  48. // TimelineCursor - Name of a Cursor file that will be used for timeline seeking
  49. // iWinWidth      - Initial Window Width
  50. // iWinHeight     - Initial Window Height
  51. // iVidWidth      - Initial Video Width
  52. // iVidHeight     - Initial Video Height
  53. // iVidLeft       - Initial Video Position in pixels from left position of Window
  54. // iVidTop        - Initial Video Position in pixels from top position of Window
  55. // iMinWidth      - Minimum Video Width (It's recommended keep the minimum Width/Height to a 4:3 aspect ratio)
  56. // iMinHeight     - Minimum Video Height
  57. // iTransColor    - Hex RGB Value of the color used for Window Transparency on the main user interface
  58. // RateLeft       - Left Position of Rate bar witin window
  59. // RateTop        - Top Position of Rate bar witin window
  60. // tLineWidth     - TimeLine Width
  61. // tLineHeight    - TimeLine Height
  62. // tLineLeft      - TimeLine position in pixels from left position of Window
  63. // tLineTop       - TimeLine position in pixels from top position of Window
  64. // tLineColor     - TimeLine Color (Hex RGB Value, like on web pages.  Not required if a bitmap is set using TimeLineFG)
  65. // tLineFontSize  - TimeLine Font Size
  66. // tLineFontYOfs  - TimeLine Font Y-Offset in pixels (can be negative value)
  67. // tLineFontFace  - TimeLine Font Name
  68. // tLineFontColor - TimeLine Font Color
  69. // tLineFontStyle - Bold and Italic, example : tLineFontStyle = (Bold|Italic), To disable style use (None) as value.
  70. // cBarFontSize   - Control Bar Font Size
  71. // cBarFontYOfs   - Control Bar Font Y-Offset in pixels (can be negative value)
  72. // cBarFontFace   - Control Bar Font Name
  73. // cBarFontColor  - Control Bar Font Color
  74. // cBarFontStyle  - Bold and Italic, example : CBarFontStyle = (Bold|Italic), To disable style use (None) as value.
  75. // cBarButWidth   - Control Bar Button Width (must be set before any buttons are added to the control bar)
  76. // cBarButHeight  - Control Bar Button Height (same as width, but also sets the height of the control bar)
  77. // cBarRightMargin- Number of pixels to save on the right side of skin
  78. // cBarTLColor    - Control Bar TimeLine Color (Not required if a bitmap is set using TimeLineCBarFG)
  79. // cBarTLWidth    - Width of the Control Bar time line
  80. // cBarTLHeight   - Height of the Control Bar time line
  81. // cBarTLLeft     - Control Bar TimeLine position in pixels from left position of Control Bar
  82. // cBarTLTop      - Control Bar TimeLine position in pixels from top position of Control Bar
  83. // cTransColor    - Hex RGB Value of the color used for Window Transparency on the Control Bar
  84. // pTransColor    - Hex RGB Value of the color used for Window Transparency on the Play List
  85. //
  86. //
  87. //
  88. // Functions:
  89. //
  90. //
  91. // FillRect(DestX,DestY,Width,Height,RGBColor)
  92. // FillRectNT(DestX,DestY,Width,Height,RGBColor)
  93. //
  94. //   - Fill a rectangle with a specific Hex RGB color (The NT version prevents skin tinting which
  95. //     is important when you fill the background area of the video).
  96. //     (000000=Black, FF0000=Red, 00FF00=Green, 0000FF=Blue, FFFFFF=White, exactly like in HTML).
  97. //
  98. //
  99. // FillMask(SrcX,SrcY,Width,Height,DestX,DestY,SrcRGBColor,DestRGBColor)
  100. //
  101. //   - Fill a mask by filling any color that doesn't match the SrcRGBColor with
  102. //     the DestRGBColor.  This can be used on non-rectangular buttons that have
  103. //     a transparent background and thus should have a masked drawn behind them
  104. //     so that they don't become transparent themselves.
  105. //
  106. //
  107. // CopyBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  108. //
  109. //   - Copy a bitmap from the skin image to the user interface.
  110. //
  111. //
  112. // CopyStretchedBitmap(SrcX,SrcY,SrcWidth,SrcHeight,DestX,DestY,DestWidth,DestHeight)
  113. //
  114. //   - Copy a bitmap from the skin image to the user interface stretching it to fit the specified rectangle.
  115. //     This function is rather CPU intensive.
  116. //
  117. //
  118. // CopyTransBitmap(SrcX,SrcY,Width,Height,DestX,DestY,RGBColor)
  119. //
  120. //   - Copy a Color Keyed transparent bitmap from the skin image to the user interface.
  121. //     The color specified by the RGBColor is considered transparent and won't be copied
  122. //     This function can be CPU intensive if used extensively.
  123. //
  124. //
  125. // CopyMaskedBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  126. //
  127. //   - Copy an Alpha Masked bitmap from the skin image to the user interface.
  128. //     An Alpha mask is a gray representation of the image where black means no
  129. //     copying to be done and white means full copying.  Any gray value in between
  130. //     determines what percentage to mix between the background and foreground bitmaps.
  131. //     The Alpha mask must the aligned to the right of the source image and match it's size.
  132. //     This function can be CPU intensive if used extensively.
  133. //
  134. //
  135. // TileBitmapV(SrcX,SrcY,Width,Height,DestX,DestY,FillHeight)
  136. //
  137. //   - Tile bitmap vertically to fill a specific number of pixels.
  138. //
  139. //
  140. // TileBitmapH(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth)
  141. //
  142. //   - Tile bitmap horizontally to fill a specific number of pixels.
  143. //
  144. //
  145. // TileBitmapA(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth,FillHeight)
  146. //
  147. //   - Tile bitmap to fill an area of specific number of pixels.
  148. //
  149. //
  150. // GradientRectH(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  151. //
  152. //   - Fill a rectangle with a horizontal gradient from RGBColor1 to RGBColor2
  153. //     Doing gradient fills may be CPU intensive.
  154. //
  155. //
  156. // GradientRectV(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  157. //
  158. //   - Fill a rectangle with a vertical gradient from RGBColor1 to RGBColor2
  159. //     Doing gradient fills may be CPU intensive.
  160. //
  161. //
  162. // TimeLineBG(SrcX,SrcY,Width)
  163. //
  164. //   - Bitmap positioning used for the User Interface TimeLine background, height must be the same as tLineHeight.
  165. //
  166. //
  167. // TimeLineFG(SrcX,SrcY,Width)
  168. //
  169. //   - Bitmap positioning used for the User Interface TimeLine foreground, height must be the same as tLineHeight.
  170. //     Using this function enables the Time Line (makes it visible) on the main user interface.
  171. //     Using this function means that a bitmap will be used instead of a color for the action portion of the timeline.
  172. //
  173. //
  174. // TimeLineFontShade(Left,Right,Top,Bottom)
  175. //   - This function allows you to shade (shadow/outline) the TimeLine font.  All four parameters are RGB vlaues
  176. //     representing the shading colors around the font.  Use a value of "-1" in order for shading to be disabled
  177. //     on a particular side.
  178. //
  179. //
  180. // TimeLineActive(SrcX,SrcY,Width,Height,XOffset,YOffset)
  181. //
  182. //   - This is an optional function if bitmapped TimeLine is used.  It allows you to specify a bitmap to be drawn
  183. //     at the currently active timeline position.  SrcX, SrcY and Width are pretty self explanetory.  The XOffset
  184. //     and YOffset allows you to specify how many pixels to move the bitmap to the right and down (by default the
  185. //     bitmap is drawn at the top of the timeline and to the left of the currently active position (taking into
  186. //     account the width of the bitmap).
  187. //
  188. //
  189. // TimeLineStart(SrcX,SrcY,Width)
  190. //
  191. //   - Specify a start bitmap for the timeline, the bitmap height should match the timeline bitmap height and like
  192. //     with buttons, it should actually be comprised of two bitmaps drawn next to each other (on the right) of the
  193. //     active and inactive timeline states (highlighted/non-highlighted).  The width specified is only of the first
  194. //     image, the inactive image on the right should be the same width and height.
  195. //
  196. //
  197. // TimeLineEnd(SrcX,SrcY,Width)
  198. //
  199. //   - Same as TimeLineStart, but for the end (right side) of the timeline.
  200. //
  201. //
  202. // PlayListData(DestX=Value,DestY=Value,Width=Value,Height=Value,Border=Value,Background=Value,Foreground=Value,
  203. //              SelectBG=Value,SelectFG=Value,Highlight=Value)
  204. //
  205. //   - This function sets all the neccessery data to position and color the Play List file listing.
  206. //   - Parameters:
  207. //     DestX         : Destination X-Offset on the Skin.
  208. //     DestY         : Destination Y-Offset on the Skin.
  209. //     Width         : Width of File List area.
  210. //     Height        : Height of File List area.
  211. //     Border        : RGB Value representing the list border color.
  212. //     Background    : RGB Value representing the list background color.
  213. //     Foreground    : RGB Value representing the list foreground color.
  214. //     SelectBG      : RGB Value representing the selected item background color.
  215. //     SelectFG      : RGB Value representing the selected item foreground color.
  216. //     Highlight     : RGB Value representing the playing item color.
  217. //
  218. // VolumeExData(SrcX=Value,SrcY=Value,DestX=Value,DestY=Value,Width=Value,Height=Value,Images=Value,Vertical=True/False)
  219. //
  220. //   - This function sets all the neccessery data to enable the user-interface volume controls.
  221. //   - Parameters:
  222. //     SrcX          : X-Offset from source image to the location Bitmap data.
  223. //     SrcY          : Y-Offset from source image to the location Bitmap data.
  224. //     DestX         : Destination X-Offset on the Skin.
  225. //     DestY         : Destination Y-Offset on the Skin.
  226. //     Width         : Width of a Single Volume Image.
  227. //     Height        : Height of a Single Volume Image.
  228. //     Images        : Number of Volume Images, Image are expected to be drawn aligned to the bottom of each image.
  229. //     Vertical      : Can be either "True" or "False", determines how the volume reacts to a user click (horizontally or vertically).
  230. //
  231. //     The Parameter order isn't important, just that the values are being passed.  The Vertical
  232. //     parameter is optional, by default the volume bar is horizontal.
  233. //     Example:
  234. //     VolumeExData(SrcX=208,SrcY=0,DestX=<WinWidth>-50,DestY=<WinHeight>-50,Width=42,Height=14,Images=12,Vertical=False)
  235. //
  236. //
  237. // RateExData(SrcX=Value,SrcY=Value,DestX=Value,DestY=Value,Width=Value,Height=Value,Images=Value,Vertical=True/False)
  238. //
  239. //   - This function sets all the neccessery data to enable the user-interface play rate controls.
  240. //     Make sure you have 7 images drawn for rate positions, as seen in the brownish.bmp file.
  241. //   - Parameters:
  242. //     SrcX          : X-Offset from source image to the location Bitmap data.
  243. //     SrcY          : Y-Offset from source image to the location Bitmap data.
  244. //     DestX         : Destination X-Offset on the Skin.
  245. //     DestY         : Destination Y-Offset on the Skin.
  246. //     Width         : Width of a Single Volume Image.
  247. //     Height        : Width of a Single Volume Image.
  248. //
  249. //     The Parameter order isn't important, just that the values are being passed.  The Vertical
  250. //     parameter is optional, by default the volume bar is horizontal.
  251. //     Example:
  252. //     RateExData(SrcX=208,SrcY=0,DestX=<WinWidth>-50,DestY=<WinHeight>-50,Width=42,Height=14)
  253. //
  254. //
  255. // ResizeBox(XOfs,YOfs,Width,Height,CursorType)
  256. //   - If you have transparent skin where the edges of the window are transparent,
  257. //     you may want to define a "ResizeBox".  When the mouse moves over the
  258. //     ResizeBox designated area, the cursor will change to a resize cursor and
  259. //     allow the forum to be resized from that position.
  260. //     The Values of CursorType can be:
  261. //     0 - Bottom Right Corner
  262. //     1 - Bottom Left Corner
  263. //     2 - Top Right Corner
  264. //     3 - Top Left Corner
  265. //     4 - Left Side
  266. //     5 - Right Side
  267. //     6 - Top Side
  268. //     7 - Bottom Side
  269. //
  270. //     Example:
  271. //     ResizeBox(<WinWidth>-40,<WinHeight>-40,10,10,0)
  272. //
  273. //
  274. // DrawExText(Target=Value,DestX=Value,DestY=Value,Width=Value,Height=Value,Align=Value,Case=Value,WordWrap=Value
  275. //           ,FontName=Value,FontSize=Value,FontColor=Value,FontStyle=Value,Text=Value)
  276. //
  277. //   - Parameters:
  278. //     Target        : Target Window, Can be either "Main" or "PlayList" (Default = "Main")
  279. //     DestX         : Destination X-Offset on the Skin.
  280. //     DestY         : Destination Y-Offset on the Skin.
  281. //     Width         : Maximum Width of Text (used for clipping).
  282. //     Height        : Maximum Height of Text (used for clipping).
  283. //     Align         : Text Alignment, values can be "Left, Center or Right" (Default "Left").
  284. //     Case          : Uppercase/Lowercase Structure, values can be "None,Lower,Upper,UpFirst" (Default "None").
  285. //     WordWrap      : Value can be True or False, if True and the text doesn't fit the width, it is word wrapped (Default "False").
  286. //     FontName      : The Name of the Font, i.e. Arial, Times New Romand, etc...
  287. //     FontSize      : Size of Font (approximate height in pixels).
  288. //     FontColor     : RGB value indicating the Font Color.
  289. //     FontStyle     : Bold, Italic, Both or None, if both then separated by "|" (i.e. "Bold|Italic") (Default "None").
  290. //     ShadeLeft     : RGB value represting the shadow color on the left   side (set to -1 to disable)
  291. //     ShadeRight    : RGB value represting the shadow color on the right  side (set to -1 to disable)
  292. //     ShadeTop      : RGB value represting the shadow color on the top    side (set to -1 to disable)
  293. //     ShadeBottom   : RGB value represting the shadow color on the bottom side (set to -1 to disable)
  294. //     Text          : String that should be displayed, can including dynamic content by using Constants (see above).
  295. //
  296. //   - This function allows you to draw text anywhere on the user interface.  The Text content is
  297. //     updated every time the user interface is resized and once per second (while not in fullscreen).
  298. //     This allows you to draw dynamic text such as Time, DVD Chapter, etc...
  299. //     Example:
  300. //     DrawExText(DestX=5,DestY=5,Width=<WinWidth>-10,Height=20,Align=Center,Case=UpFirst,FontName=Arial,FontSize=11,FontColor=FFFFFF,FontStyle=Bold,Text=<FileName>)
  301. //
  302. //
  303. // CreateButton(SrcX,SrcY,Width,Height,DestX,DestY,Function,Hint,Transparent)
  304. //
  305. //   - This function has been replaced with "CreateExButton", see below.
  306. //   - Creates a button with a function assigned with the function setting,
  307. //     possible function values are:
  308. //     000 - fnPlay           - All   : Starts playback and toggles between Play & Pause states.
  309. //     001 - fnPause          - All   : Pauses video and frame advances when already paused.
  310. //     002 - fnStop           - Media : Stops playback and goes to the beginning of the video.
  311. //                              DVD   : Stops playback and closes DVD.
  312. //     003 - fnStopToFirst    - Media : Stop to First Item in a Play List.
  313. //     004 - fnNextChapter    - Media : Go to Next Chapter (Internal or OGM), if no chapters are
  314. //                                      specified, advance to the next item in the Play List.
  315. //                              DVD   : Open the Next Bookmark.
  316. //     005 - fnPrevChapter    - Media : Go to Previous Chapter (Internal or OGM), if no chapters are
  317. //                                      specified, go back to the previous item in the Play List.
  318. //                              DVD   : Open the Previous Bookmark.
  319. //     006 - fnNextTrack      - Media : Go to the Next item on the Play List
  320. //                              DVD   : Go to the Next Chapter.
  321. //     007 - fnPrevTrack      - Media : Go to the Previous item on the Play List.
  322. //                              DVD   : Go to the Next Chapter.
  323. //     008 - fnNextFrame      - All   : Frame Step Forward.
  324. //     009 - fnPrevFrame      - All   : Frame Step Backward.
  325. //     010 - fnNextVid        - Media : Play the Next Video in the current directory.
  326. //     011 - fnPrevVid        - Media : Play the Previous Video in the current directory.
  327. //     012 - fnSkipForward    - All   : Skip forward a specified number of seconds.
  328. //     013 - fnSkipBackward   - All   : Skip backward a specified number of seconds.
  329. //     014 - fnJumpForward    - All   : Jump forward a specified number of seconds.
  330. //     015 - fnJumpBackward   - All   : Jump backward a specified number of seconds.
  331. //     016 - fnSeekForward    - All   : Seek forward a specified number of seconds.
  332. //     017 - fnSeekBackward   - All   : Seek backward a specified number of seconds.
  333. //     018 - fnFastForward    - All   : Play in Fast Forward.
  334. //     019 - fnRewind         - All   : Rewind Playback.
  335. //     020 - fnSlowMotion     - All   : Play in Slow Motion.
  336. //     021 - fnHalfFF         - All   : Half Fast forward speed.
  337. //     022 - fnHalfSM         - All   : Half Slow Motion speed.
  338. //     023 - fnVolUp          - All   : Increase Volume.
  339. //     024 - fnVolDown        - All   : Decrease Volume.
  340. //     025 - fnMute           - All   : Mute Volume (ON/OFF).
  341. //     026 - fnABRepeat       - All   : Start, Stop and Cancel AB-Repeat.
  342. //     027 - fnPlayEndCycle   - All   : Cycle through the "On Play Complete" values.
  343. //     028 - fnZoomAxis       - All   : Toggles the Zoom Axis (used with Zoom-In / Zoom-Out).
  344. //     029 - fnZoomIn         - All   : Zoom into video (enlarge video area).
  345. //     030 - fnZoomOut        - All   : Zoom out of video (shrink video area).
  346. //     031 - fnZoomInWidth    - All   : Stretch the video width.
  347. //     032 - fnZoomOutWidth   - All   : Shrink the video width.
  348. //     033 - fnZoomInHeight   - All   : Stretch the video height.
  349. //     034 - fnZoomOutHeight  - All   : Shrink the video height.
  350. //     035 - fnZoom           - All   : Go into Zoom Mode.
  351. //     036 - fnFullScreen     - All   : Go Into Fullscreen Mode.
  352. //     037 - fnFitSource      - All   : Resize video area to the original video source size..
  353. //     038 - fnMax            - All   : Maximize user interface to cover work area or if in fullscreen maximize
  354. //                                      video area to cover screen.
  355. //     039 - fnMinimize       - All   : Minimize the user interface.
  356. //     040 - fnARCycle        - All   : Cycle through Aspect Ratio modes.
  357. //     041 - fnRevARCycle     - All   : Reverse Cycle through Aspect Ratio modes.
  358. //     042 - fnBar            - All   : Show / Hide the Control Bar.
  359. //     043 - fnOSD            - All   : Turn the On Screen Display ON / OFF.
  360. //     044 - fnOpen           - All   : Open File(s) for playback.
  361. //     045 - fnOpenDir        - All   : Open a Directory for playback.
  362. //     046 - fnInfo           - All   : Playback Information Dialog (some information on the playing media).
  363. //     047 - fnOptions        - All   : Open the Options Dialog.
  364. //     048 - fnPresets        - All   : Open the Video Position Preset Dialog.
  365. //     049 - fnPlayList       - All   : Show / Hide the Play List Editor.
  366. //     050 - fnChapter        - Media : Show / Hide the Chapter Editor.
  367. //                            - DVD   : Show / Hide the Bookmark Editor.
  368. //     051 - fnSkin           - All   : Show / Hide the Skin Selection dialog.
  369. //     052 - fnKeyHelp        - All   : Opens the Keyboard Hotkey Dialog (key list).
  370. //     053 - fnExit           - All   : Exit application.
  371. //     054 - fnAddChapter     - Media : Add Current Position to the Chapter Editor.
  372. //                              DVD   : Save Current Position as a Bookmark.
  373. //     055 - fnSaveChapter    - Media : Save Chapter List.
  374. //     056 - fnDVDMode        - All   : Switch between the Media and DVD Modes.
  375. //     057 - fnDVDRootMenu    - DVD   : Go to the DVD's Root Menu.
  376. //     058 - fnDVDTitleMenu   - DVD   : Go to the DVD's Title Menu.
  377. //     059 - fnDVDSubMenu     - DVD   : Go to the DVD's Subtitle Menu.
  378. //     060 - fnDVDAudioMenu   - DVD   : Go to the DVD's Audio Menu.
  379. //     061 - fnDVDAngleMenu   - DVD   : Go to the DVD's Angle Menu.
  380. //     062 - fnDVDChapterMenu - DVD   : Go to the DVD's Chapter Menu.
  381. //     063 - fnDVDMenuLeft    - DVD   : Move left on a DVD Menu.
  382. //     064 - fnDVDMenuRight   - DVD   : Move right on a DVD Menu.
  383. //     065 - fnDVDMenuUp      - DVD   : Move up on a DVD Menu.
  384. //     066 - fnDVDMenuDown    - DVD   : Move down on a DVD Menu.
  385. //     067 - fnDVDMenuSelect  - DVD   : Activate selected Menu item.
  386. //     068 - fnDVDCC          - DVD   : Closed Captions ON / OFF.
  387. //     069 - fnDVDAngle       - Media : Cycle through OGM Video Tracks.
  388. //                            - DVD   : Cycle through DVD Angles.
  389. //     070 - fnDVDSub         - Media : Cycle through VobSub/OGM Subtitle Tracks.
  390. //                              DVD   : Cycle through DVD Subtitle Tracks.
  391. //     071 - fnAudioTrack     - Media : Cycle through Media Audio Tracks.
  392. //                              DVD   : Cycle through DVD Audio Tracks.
  393. //     072 - fnStayOnTop      - All   : Stay On Top ON / OFF.
  394. //     073 - fnMPEG4          - All   : MPEG4/DivX/Video Decoder Dialog (if filter is in use).
  395. //     074 - fnSub            - All   : Opens the VobSub dialog (if filter is in use).
  396. //     075 - fnAudioFilter    - All   : TFM/DeDynamic Audio Filter Dialog (if filter is in use).
  397. //     076 - fnIncRate        - All   : Increase Play rate.
  398. //     077 - fnDecRate        - All   : Decrease Play rate.
  399. //     078 - fnPrevFilterFile - None  : Previous Manual Filter File ** disabled **
  400. //     079 - fnNextFilterFile - None  : Next Manual Filter File  ** disabled **
  401. //     080 - fnSaveDF         - All   : Save Definition File for the currently open media.
  402. //     081 - fnFrameCapture   - All   : Screenshot / Frame Capture.
  403. //     082 - fnPattern        - All   : Cycle Pattern Modes.
  404. //     083 - fnEject          - All   : Eject the specified CD drive.
  405. //     084 - fnOverlayControl - All   : Show / Hide the Overlay Color Control Interface.
  406. //     085 - fnOverlayApply   - All   : Apply the Overlay Color Controls (same as button in options).
  407. //     086 - fnOverlayReset   - All   : Reset the Overlay Color Controls back to their default settings.
  408. //     087 - fnIncBrightness  - All   : Increase Overlay Brightness.
  409. //     088 - fnDecBrightness  - All   : Decrease Overlay Brightness.
  410. //     089 - fnIncContrast    - All   : Increase Overlay Contrast.
  411. //     090 - fnDecContrast    - All   : Decrease Overlay Contrast.
  412. //     091 - fnIncGamma       - All   : Increase Overlay Gamma.
  413. //     092 - fnDecGamma       - All   : Decrease Overlay Gamma.
  414. //     093 - fnIncHue         - All   : Increase Overlay Hue.
  415. //     094 - fnDecHue         - All   : Decrease Overlay Hue.
  416. //     095 - fnIncSaturation  - All   : Increase Overlay Saturation.
  417. //     096 - fnDecSaturation  - All   : Decrease Overlay Saturation.
  418. //     097 - fnUnpause        - All   : Unpause the video (Discrete Play).
  419. //     098 - fnAddALBookmark  - DVD   : Add DVD Auto-Load Bookmark.
  420. //     099 - fnSeekToStart    - All   : Seek to start of Video.
  421. //     100 - fnAudioDecoder   - All   : Pop the property dialog of filters with "Audio Decoder" in their titles.
  422. //     101 - fnDVDMenuPrev    - DVD   : Return from DVD Sub-Menu.  If on Top Menu then Resume playback.
  423. //     102 - fnChapterNav     - Media : Show / Hide the Chapter Navigator dialog.
  424. //                            - DVD   : Show / Hide the Bookmark Navigator dialog.
  425. //     103 - fnPlayListNav    - All   : Show / Hide the Play List Navigator dialog.
  426. //     104 - fnFileNav        - All   : Show / Hide the File Navigator dialog.
  427. //     105 - fnBlankingNav    - All   : Show / Hide the Blanking Navigator dialog.
  428. //     106 - fnBlankingPreset - All   : Show / Hide the Blanking Presets dialog.
  429. //     107 - fnBlanking       - All   : Show / Hide Video Blanking.
  430. //     108 - fnRandomPlay     - Media : Turns Random (shuffle) Play ON / OFF.
  431. //     109 - fnResizeNav      - All   : Show / Hide the Resize Navigator dialog.
  432. //     110 - fnDisableDVDSub  - Media : Disable VobSub / OGG Subtitles.
  433. //                              DVD   : Disable DVD Subtitle.
  434. //     111 - fnPresetCycle    - All   : Cycle through Video Position Presets.
  435. //     112 - fnRevPresetCycle - All   : Reverse Cycle through Video Position Presets.
  436. //     113 - fnBlankCycle     - All   : Cycle through Blanking Position Presets.
  437. //     114 - fnRevBlankCycle  - All   : Reverse Cycle through Blanking Position Presets.
  438. //     115 - fnDVDPlayStart   - DVD   : Play DVD bypassing Auto-Bookmark loading features.
  439. //     116 - fnNextArrowFunc  - All   : Next Active Arrow Control function.
  440. //     117 - fnPrevArrowFunc  - All   : Previous Active Arrow Control function.
  441. //     118 - fnAutoARToggle   - DVD   : Enable / Disable Automatic DVD Aspect Ratio.
  442. //     119 - fnFrameZeroALBM  - DVD   : Attempt setting a DVD Auto-Load bookmark at frame zero.
  443. //     120 - fnPauseAtEOF     - Media : Pause Playback at end of currently playing file.
  444. //     121 - fnSceneCut       - All   : Show / Hide the Scene Cut Editor.
  445. //     122 - fnGoTo           - All   : Show / Hide the GoTo Timeline dialog.
  446. //     123 - fnGoToNav        - All   : Show / Hide the GoTo Timeline Navigator interface.
  447. //     124 - fnMWFuncNav      - All   : Show / Hide the Mouse Wheel Function Navigator interface.
  448. //     125 - fnLoop           - Media : Switch between Do Nothing and Auto Reply on Play Complete.
  449. //     126 - fnBalanceLeft    - All   : Move Audio Balance to the Left.
  450. //     127 - fnBalanceRight   - All   : Move Audio Balance to the Right.
  451. //     128 - fnOpenDrive      - All   : Open an entire drive.
  452. //     129 - fnMediaNav       - All   : Show / Hide the Media Library Navigator.
  453. //     130 - fnMediaPathEdit  - All   : Show / Hide the Media Library Path and Category Editor.
  454. //     131 - fnSrcRelStretch  - All   : Enable / Disable Source Relative User Interface Stretch.
  455. //     132 - fnZoom50         - All   : Set video to default to  50%.
  456. //     133 - fnZoom100        - All   : Set video to default to 100%.
  457. //     134 - fnZoom200        - All   : Set video to default to 200%.
  458. //     135 - fnZoom400        - All   : Set video to default to 400%.
  459. //     136 - fnZoom800        - All   : Set video to default to 800%.
  460. //     137 - fnWebNav         - All   : Show / Hide the Web URL Navigator.
  461. //     138 - fnBringToFront   - All   : Bring Player Window to Front.
  462. //     139 - fnLoopPlay       - Media : Enable / Disable looping of currently playing track.
  463. //     140 - fnPLAddFiles     - All   : Add Files to Play List.
  464. //     141 - fnPLAddDir       - All   : Add Directory to Play List.
  465. //     142 - fnPLRemove       - All   : Remove Selected Items from Play List.
  466. //     143 - fnPLClear        - All   : Clear the entire Play List.
  467. //     144 - fnPLLoadList     - All   : Load a Play List.
  468. //     145 - fnPLSaveList     - All   : Save the Play List.
  469. //     146 - fnPLSort         - All   : Sort the Play List Items.
  470. //     147 - fnPLItemUp       - All   : Move Selected Play List Items Up.
  471. //     148 - fnPLItemDown     - All   : Move Selected Play List Items Down.
  472. //     149 - fnPLMax          - All   : Maximize the Play List Window.
  473. //     150 - fnLoadDF         - All   : Load Definition File for the currently open media.
  474. //     151 - fnRadioManager   - Media : Show/Hide the Radio Station Manager Dialog.
  475. //     152 - fnContextNav     - Both  : Show/Hide the Context Navigator.
  476. //     153 - fnPlayHistory    - Media : Show/Hide the Play History Interface.
  477. //     154 - fnPLGetDuration  - Media : Get Duration of Media Files in the current Play list
  478. //     155 - fnEqualizer      - All   : Show/Hide the Internal Equalizer Window
  479. //     156 - fnEQEditor       - All   : Show/Hide the Equalizer Profile Selector/Editor
  480. //     157 - fnEQReset        - All   : Reset the current Equalizer Values
  481. //     158 - fnEQToggle       - All   : Enable/Disable the Equalizer
  482. //     159 - fnResyncAhead    - All   : Resynchronize Audio Ahead
  483. //     160 - fnResyncBack     - All   : Resynchronize Audio Back
  484. //     161 - fnFastPlay       - Media : Fast Playback with Audio
  485. //     162 - fnVobSubSelect   - All   : DirectVobSub Subtitle File Selection
  486. //     163 - fnOpenURL        - All   : Open URL
  487. //
  488. //     The numbers to the left of the function names can be used with a remote control device
  489. //     to relay the command to zoom player.  The message number is "32817", the value to the
  490. //     left should be assigned to the WParam as the function you want to execute and the LParam
  491. //     should be set to "0".  For more information on message control see the "default.key" file.
  492. //
  493. //     When specifying the source, you need to make sure that the button "up" image
  494. //     is at the specified location, and the button "down" image, is directly to it's
  495. //     right (no spacing), and of course, it must be the same width and height.
  496. //
  497. //     The Hint setting is what pop-up hint will show when the mouse is over the
  498. //     button for a few seconds.  The setting is optional but must be entered if you plan
  499. //     to use the transparency setting.
  500. //
  501. //     The transparent RGB value determines if a certain color in the button image is to
  502. //     be considered transparent.  Transparency makes for non-rectangular buttons.  The Button Up
  503. //     image is used to generate the transparent area.  This setting is optional.
  504. //
  505. //
  506. // CreateExButton(Type=Value,Target=Value,SrcX=Value,SrcY=Value,Width=Value,Height=Value,HoverX=Value,HoverY=Value,
  507. //                AlphaX=Value,AlphaY=Value,DestX=Value,DestY=Value,Function=Value,FunctionParam=Value,
  508. //                StringParam=Value,TransColor=Value,Hint=Value,AniSpeed=Value)
  509. //
  510. //   - Parameters:
  511. //     Type          : Type of Button (see below) (Default = "Normal")
  512. //     Target        : Target Window, Can be either "Main" or "PlayList" (Default = "Main")
  513. //     SrcX          : X-Offset from source image to the location Bitmap data, Button Up graphics.
  514. //     SrcY          : Y-Offset from source image to the location Bitmap data
  515. //     DownX         : X-Offset from source image to the location of the Button Down Bitmap (Optional, by default it's SrcX+Width)
  516. //     DownY         : Y-Offset from source image to the location of the Button Down Bitmap (Optional, by default it's SrcY)
  517. //     HoverX        : X-Offset from source image to the location of the Hover (mouse-over) Bitmap (also enables Hover Bitmap)
  518. //     HoverY        : Y-Offset from source image to the location of the Hover (mouse-over) Bitmap
  519. //     AlphaX        : X-Offset from source image to the location of the Alpha (Alpha Masking) Bitmap (also enables Alpha Masking)
  520. //     AlphaY        : Y-Offset from source image to the location of the Alpha (Alpha Masking) Bitmap
  521. //     ActiveX       : X-Offset from source image to the location of the Activate (Special Event) Bitmap
  522. //     ActiveY       : Y-Offset from source image to the location of the Activate (Special Event) Bitmap
  523. //     Activate      : Draws the Active Bitmap when a Special Event is called, See Below for available values.
  524. //     Width         : Width of Button
  525. //     Height        : Height of Button
  526. //     DestX         : Destination X-Offset on the Skin
  527. //     DestY         : Destination Y-Offset on the Skin
  528. //     Function      : Either "fn" function (list above) or "ex" function (see default.key file) depending on "type" parameter.
  529. //     FunctionParam : Used in combination with "ex" functions to pass a parameter to the function.
  530. //     StringParam   : A string parameter passed to certain button types.
  531. //     TransColor    : A color-keyed transparent button, an RGB value indicating the transparent colorkey.
  532. //     Hint          : A string containing the pop-up description of the button.
  533. //     AniSpeed      : If Animated buttons are enabled, the speed of animation (value from 20-1000, default = 50)
  534. //
  535. //     Also, when no image is specified:
  536. //     Color         : Background color
  537. //     Text          : A string containing a caption
  538. //     FontName      : The Name of the Font, i.e. Arial, Times New Romand, etc...
  539. //     FontSize      : Size of Font (approximate height in pixels).
  540. //     FontColor     : RGB value indicating the Font Color.
  541. //     FontStyle     : Bold, Italic, Both or None, if both then separated by "|" (i.e. "Bold|Italic") (Default "None").
  542. //
  543. //   - This function replaces the standard "CreateButton" function in newer skin.  Instead of entering
  544. //     parameters in a specific order, you can use any order but the value tag must be used, for example:
  545. //     CreateExButton(Type=Normal,Function=fnMax,Hint=Maximize Window,SrcX=20,SrcY=10,DestX=100,DestY=<WinWidth>-100,Width=25,Height=25,TransColor=FF00FF)
  546. //
  547. //     As you can see, the order of the other parameters isn't important.  Furthermore, not all parameters
  548. //     are needed, some parameters have different requirements depending on the button "Type" and some
  549. //     (like Hint and AlphaX/Y) are optional altogether.
  550. //
  551. //     Here are the possible values of the "Type" parameter:
  552. //     "Normal"   - Standard Button, accepts usual "fn" functions (see list above).
  553. //     "Filter"   - Instead of calling a function, this button opens a filter's property dialog.
  554. //                  The filter name is passed in the "StringParam" value and can contain multiple
  555. //                  sub-strings so that you could open different filters with one button (such as
  556. //                  all Video Decoders).   Example "StringParam=DIVX|XVID|MPEG4".
  557. //     "Extended" - Extended buttons are similar to the normal buttons with the exception that they
  558. //                  use the Extended functions (see default.key file for a list).  In addition to
  559. //                  the "Function" value, you must also supply the "FunctionParam" value so that it
  560. //                  could be passed on to the Function.  For example, when "Function=exSetAR", setting
  561. //                  "FunctionParam=1" will set the Aspect Ratio mode to "Source Aspect Ratio".
  562. //     "Skin"     - Use this button-type to replace the Zoom Player skin with a single button.
  563. //                  The StringParam value is assigned the new skin name (i.e. "brownish.skn").
  564. //
  565. //     Here are the possible values of the "Activate" parameter:
  566. //     "Closed"     - Draw the Active bitmap when the current play state is "Closed".
  567. //     "Stop"       - Draw the Active bitmap when the current play state is "Stopped".
  568. //     "Play"       - Draw the Active bitmap when the current play state is "Playing".
  569. //     "Pause"      - Draw the Active bitmap when the current play state is "Paused".
  570. //     "Mute"       - Draw the Active bitmap when the Audio is muted.
  571. //     "RandomPlay" - Draw the Active bitmap when Random Play is enabled.
  572. //     "LoopPlay"   - Draw the Active bitmap when playback is set to loop on the current track.
  573. //     "EQState"    - Draw the Active bitmap when the Equalizer is ON
  574. //
  575. //     Note, Alpha blending by default is disabled,  if you enable Alpha blended buttons by using the "AlphaX"
  576. //     parameter, you should make sure that the button is listed toward the end of the skin file after the
  577. //     background it should  be blended against has already been drawn!  Another thing is that Alpha Blending
  578. //     only works against the background and not against other buttons.  Using Alpha Blended icons is quite CPU
  579. //     intensive when the skin is drawn/resized.
  580. //
  581. //     See "brownish.skn" and "brownishdvd.skn" files for multiple examples of this function.  Using this
  582. //     function is slightly faster loading than "CreateButton".
  583. //
  584. //
  585. // AddBarButton(SrcX,SrcY,Function,Hint)
  586. //
  587. //   - Unlike the CreateButton function, this button adds optional buttons to the Control Bar.
  588. //     Every button you add can be turned ON/OFF by the user through the Control Bar options dialog.
  589. //     However, only buttons you skinned are accessible to the user.  Due to this, I request that
  590. //     at the very least skin the control bar buttons used by this sample skin.
  591. //     The function parameter can contain the same values as specified in the CreateButton function.
  592. //   - The Hint Value is optional, not entering a paramater means that there isn't a hint.
  593. //
  594. //
  595. // PlayListData(DestX=Value,DestY=Value,Width=Value,Height=Value,MinWidth=Value,MinHeight=Value,
  596. //              Border=RGBValue,Background=RGBValue,BackgroundGrad=RGBValue,Foreground=RGBValue,SelectBG=RGBValue,
  597. //              SelectFG=RGBValue,Highlight=RGBValue,ScrollBG=RGBValue,ScrollBGGrad=RGBValue,ScrollFace=RGBValue,
  598. //              ScrollDark=RGBValue,ScrollLight=RGBValue,BGSrcX=Value,BGSrcY=Value,BGSrcW=Value,BGSrcH=Value,
  599. //              ScrollWidth=Value,ScrollBGX=Value,ScrollBGY=Value,ScrollBGW=Value,ScrollBGH=Value,ScrollFGX=Value,
  600. //              ScrollFGY=Value,ScrollFGW=Value,ScrollFGH=Value)
  601. //
  602. //   - Parameters:
  603. //     DestX          : X Offset in which to position the Item List within the Play List Form.
  604. //     DestY          : Y Offset in which to position the Item List within the Play List Form.
  605. //     Width          : Width of Item List within the Play List Form.
  606. //     Height         : Height of Item List within the Play List Form.
  607. //     MinWidth       : Minimum Width of Play List Form as a whole.
  608. //     MinHeight      : Minimum Height of Play List Form as a whole.
  609. //     Border         : RGB Value representing the Item List Border Color.
  610. //     Background     : RGB Value representing the Item List Background Color.
  611. //     BackgroundGrad : RGB Value representing the Item List Background Gradient (only if you want gradient shading).
  612. //     BackGradHorz   : True / False Value if you want a horizontal gradient for the Background (default = False, e.g. Vertical)
  613. //     Foreground     : RGB Value representing the Item List Foreground (Text) Color.
  614. //     SelectBG       : RGB Value representing the Item List Selected Item Background Color.
  615. //     SelectBorder   : RGB Value representing the Item List Selected Item Border Color.
  616. //     SelectFG       : RGB Value representing the Item List Selected Item Foreground (Text) Color.
  617. //     SearchBG       : RGB Value representing the Item List Search Box Background Color.
  618. //     Highlight      : RGB Value representing the Item List Playing Item (Text) Color.
  619. //     ScrollBG       : RGB Value representing the Item List Scrollbar Background Color.
  620. //     ScrollBGGrad   : RGB Value representing the Item List Scrollbar Background Gradient (only if you want gradient shading).
  621. //     ScrollGradHorz : True / False Value if you want a horizontal gradient for the Scroll Background (default = False, e.g. Vertical)
  622. //     ScrollFace     : RGB Value representing the Item List Scrollbar Thumb Face Color.
  623. //     ScrollDark     : RGB Value representing the Item List Scrollbar Thumb Dark (Shadow) Color.
  624. //     ScrollLight    : RGB Value representing the Item List Scrollbar Thumb Light (Brighter) Color.
  625. //     ScrollWidth    : The Width  of the Scroll Bar in Pixels (specifying a Background image overrides this).
  626. //     ScrollHeight   : The Height of the Scroll Bar in Pixels (specifying a Thumb bitmap overrides this).
  627. //     BGSrcX         : Specifies a Source X Offset for a tiled background image to be used instead of the Background parameter.
  628. //     BGSrcY         : Specifies a Source Y Offset for a tiled background image to be used instead of the Background parameter.
  629. //     BGSrcW         : Specifies a Source Width    for a tiled background image to be used instead of the Background parameter.
  630. //     BGSrcH         : Specifies a Source Height   for a tiled background image to be used instead of the Background parameter.
  631. //     ScrollBGX      : Specifies a Source X Offset for a tiled background image to used instead of the ScrollBG parameter.
  632. //     ScrollBGY      : Specifies a Source Y Offset for a tiled background image to used instead of the ScrollBG parameter.
  633. //     ScrollBGW      : Specifies a Source Width    for a tiled background image to used instead of the ScrollBG parameter.
  634. //     ScrollBGH      : Specifies a Source Height   for a tiled background image to used instead of the ScrollBG parameter.
  635. //     ScrollFGX      : Specifies a Source X Offset for a bitmap to be used as the Scrollbar Thumb.
  636. //     ScrollFGY      : Specifies a Source Y Offset for a bitmap to be used as the Scrollbar Thumb.
  637. //     ScrollFGW      : Specifies a Source Width    for a bitmap to be used as the Scrollbar Thumb.
  638. //     ScrollFGH      : Specifies a Source Height   for a bitmap to be used as the Scrollbar Thumb.
  639. //
  640. //
  641. // EQData(Width=Value,Height=Value,BarX=Value,BarY=Value,BarW=Value,BarC=Value,
  642. //        BarPX=Value,BarPY=Value,Bar[n]X=Value,Bar[n]Y=Value)
  643. //
  644. //   - Parameters:
  645. //     Width          : Width  of the Equalizer Window (Equalizer Window has a fixed width).
  646. //     Height         : Height of the Equalizer Window (Equalizer Window has a fixed height).
  647. //     BarX           : Specifies a Source X Offset for the Equalizer Bar Graphics.
  648. //     BarY           : Specifies a Source Y Offset for the Equalizer Bar Graphics.
  649. //     BarW           : Specifies a Width (In Pixels) for the Equalizer Bar Graphics.
  650. //     BarC           : Specifies the number of Bar Stages, this needs to be an uneven number!
  651. //     BarPX          : Specifies a Destination X Offset for the PreAmp Bar.
  652. //     BarPY          : Specifies a Destination Y Offset for the PreAmp Bar.
  653. //     Bar[n]X        : The [n] is replaced by a number from 0 to 9 representing the 10 different
  654. //                      Equalizer Bars (Bands) X Positions from Left to Right (for example Bar2X=100).
  655. //     Bar[n]Y        : The [n] is replaced by a number from 0 to 9 representing the 10 different
  656. //                      Equalizer Bars (Bands) Y Positions from Left to Right (for example Bar5Y=20).
  657. //
  658. //
  659. // OSDPopUp(MinWidth=Value,MinHeight=Value,xMargin=Value,yMargin=Value,TransColor=RGBValue)
  660. //
  661. //   - This procedure enables you to skin the Pop-Up OSD Action window.
  662. //     You can do the actual skinning using the skinning functions below (similar to skinning the main window).
  663. //
  664. //   - Parameters:
  665. //     MinWidth       : Minimum width  required to draw the OSD Background
  666. //     MinHeight      : Minimum height required to draw the OSD Background
  667. //     xMargin        : Number of pixels from the left border of the OSD Window to make room for the font against the edge.
  668. //     yMargin        : Number of pixels from the top  border of the OSD Window to make room for the font against the edge.
  669. //     TransColor     : RGB Value representing the transparent color.  Don't set this parameter to disable transparency.
  670. //
  671. //
  672. // TintSource(SrcX=Value,SrcY=Value,Width=Value,Height=Value,rTint=Value,gTint=Value,bTint=Value,cIgnore=RGBValue)
  673. //
  674. //   - This procedure allows you to tint the color of regions within the source image.  Using it,
  675. //     you can create different skin files that contain different color schemes from the same
  676. //     source image.
  677. //
  678. //   - Parameters:
  679. //     SrcX           : X Offset in pixels from where to begin the color tinting.
  680. //     SrcY           : Y Offset in pixels from where to begin the color tinting.
  681. //     Width          : Width of rectangle to tint.
  682. //     Height         : Height of rectangle to tint.
  683. //     rTint          : The intensity of Red tinting (can be a negative value).
  684. //     gTint          : The intensity of Green tinting (can be a negative value).
  685. //     bTint          : The intensity of Blue tinting (can be a negative value).
  686. //     cIgnore        : A Hex RGB value containing the color that shouldn't be tinted (the transparency color usually).
  687. //
  688. //     Example:
  689. //     TintSource(SrcX=85,SrcY=495,Width=56,Height=28,rTint=-50,gTint=25,bTint=25,cIgnore=FF00FF)
  690. //
  691. //
  692. //
  693. // The following commands perform the exact function as the above, but apply to the Control Bar.
  694. //
  695. // CopyCBarBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  696. // CopyCBarStretchedBitmap(SrcX,SrcY,SrcWidth,SrcHeight,DestX,DestY,SrcWidth,SrcHeight)
  697. // CopyCBarTransBitmap(SrcX,SrcY,Width,Height,DestX,DestY,RGBColor)
  698. // CopyCBarMaskedBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  699. // GradientCBarRectH(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  700. // GradientCBarRectV(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  701. // TileCBarBitmapV(SrcX,SrcY,Width,Height,DestX,DestY,FillHeight)
  702. // TileCBarBitmapH(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth)
  703. // TileCBarBitmapA(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth,FillHeight)
  704. // FillCBarRect(DestX,DestY,Width,Height,RGBColor)
  705. // TimeLineCBarBG(SrcX,SrcY,Width)
  706. // TimeLineCBarFG(SrcX,SrcY,Width)
  707. // TimeLineCBarActive(SrcX,SrcY,Width,Height,XOffset,YOffset)
  708. // TimeLineCBarFontShade(Left,Right,Top,Bottom)
  709. // TimeLineCBarStart(SrcX,SrcY,Width)
  710. // TimeLineCBarEnd(SrcX,SrcY,Width)
  711. //
  712. //
  713. // The following commands perform the exact function as the above, but apply to the Play List.
  714. //
  715. // CopyPLBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  716. // CopyPLStretchedBitmap(SrcX,SrcY,SrcWidth,SrcHeight,DestX,DestY,SrcWidth,SrcHeight)
  717. // CopyPLTransBitmap(SrcX,SrcY,Width,Height,DestX,DestY,RGBColor)
  718. // CopyPLMaskedBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  719. // TilePLBitmapV(SrcX,SrcY,Width,Height,DestX,DestY,FillHeight)
  720. // TilePLBitmapH(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth)
  721. // TilePLBitmapA(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth,FillHeight)
  722. // GradientPLRectH(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  723. // GradientPLRectV(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  724. // FillPLRect(DestX,DestY,Width,Height,RGBColor)
  725. // ResizePLBox(XOfs,YOfs,Width,Height,CursorType)
  726. //
  727. //
  728. // The following commands perform the exact function as the above, but apply to the pop-up OSD.
  729. //
  730. // CopyOSDBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  731. // CopyOSDStretchedBitmap(SrcX,SrcY,SrcWidth,SrcHeight,DestX,DestY,SrcWidth,SrcHeight)
  732. // CopyOSDTransBitmap(SrcX,SrcY,Width,Height,DestX,DestY,RGBColor)
  733. // CopyOSDMaskedBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  734. // TileOSDBitmapV(SrcX,SrcY,Width,Height,DestX,DestY,FillHeight)
  735. // TileOSDBitmapH(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth)
  736. // TileOSDBitmapA(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth,FillHeight)
  737. // GradientOSDRectH(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  738. // GradientOSDRectV(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  739. // FillOSDRect(DestX,DestY,Width,Height,RGBColor)
  740. //
  741. // The following commands perform the exact function as the above, but apply to the Equalizer.
  742. //
  743. // CopyEQBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  744. // CopyEQStretchedBitmap(SrcX,SrcY,SrcWidth,SrcHeight,DestX,DestY,SrcWidth,SrcHeight)
  745. // CopyEQTransBitmap(SrcX,SrcY,Width,Height,DestX,DestY,RGBColor)
  746. // CopyEQMaskedBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  747. // TileEQBitmapV(SrcX,SrcY,Width,Height,DestX,DestY,FillHeight)
  748. // TileEQBitmapH(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth)
  749. // TileEQBitmapA(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth,FillHeight)
  750. // GradientEQRectH(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  751. // GradientEQRectV(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  752. // FillEQRect(DestX,DestY,Width,Height,RGBColor)
  753. //
  754. //
  755. //
  756. // Skin Groups:
  757. //
  758. // Skin Grouping is a powerful tool for creating multiple skin variations or conditional skin
  759. // behavior within the same skin file.  What it does is allow you to segment parts of the code
  760. // into a group.  Anything within the specified segement will only be used if that Group is enabled,
  761. // otherwise, that part of the skin is ignored.  Using the "exGroupToggle", "exGroupEnable",
  762. // "exGroupDisable" and "exGroupSet" functions you can modify which groups are active at any one time
  763. // and thus change the appearance of the skin.  You can see an example of this in the default skin.
  764. //
  765. // There are upto 16 skin groups you can define.  Each group has a binary bitmask value:
  766. //
  767. // | Group / Value |  Using the table to the left, if you would like to enable "Group #4" and "Group #15",
  768. // |   1         1 |  you would call the "exGroupEnable" function with a parameter value of 8192+8 = 8200.
  769. // |   2         2 |
  770. // |   3         4 |  To begin a Group within the code you use the "StartGroup" function.  For example, to
  771. // |   4         8 |  begin "Group #15" you would do "StartGroup(8192)".  After this line you would type all
  772. // |   5        16 |  the code belonging to this group and then end with the "EndGroup(8192)" command.
  773. // |   6        32 |
  774. // |   7        64 |  For ease of use, you can have multiple "Start" and "End" statements for the same group
  775. // |   8       128 |  in different parts of the code.
  776. // |   9       256 |
  777. // |  10       512 |  It is important that you specify the ActiveGroups variable (see above) to determine which
  778. // |  12      1024 |  is the active group.
  779. // |  13      2048 |
  780. // |  14      4096 |  Any code that isn't within a Group Block is considered shared between all the groups
  781. // |  15      8192 |  (for example, there may not be a need to change the PlayList,Equalizer or Control Bar code).
  782. // |  16     16384 |
  783. //
  784. //
  785. //
  786. // Comments:
  787. //
  788. // All the dynamic settings and functions can accept SIMPLE 2 item math.  Basically you
  789. // can do addition and subtraction, nothing else.  This is only used so you can position
  790. // items relative to the window size.
  791. //
  792. // Make sure you set all variables, otherwise when switching skins, some data will
  793. // remain from the older skin.
  794. //
  795. // Double check for Typos and corruct structure (as shown in the sample below), when
  796. // loading the skin, not a lot of error checking is performed, and you can easily
  797. // cause the player to crash!
  798. //
  799.  
  800. // Base Information used when loading the skin:
  801. SkinFileName    = (brownish.bmp)
  802.  
  803. // Initial settings:
  804. iWinWidth       = (430)
  805. iWinHeight      = (360)
  806. iVidWidth       = (400)
  807. iVidHeight      = (300)
  808. iVidLeft        = (4)
  809. iVidTop         = (4)
  810. iMinWidth       = (352)
  811. iMinHeight      = (264)
  812. tLineFontSize   = (10)
  813. tLineFontYOfs   = (0)
  814. tLineFontFace   = (Tahoma)
  815. tLineFontColor  = (FFFFFF)
  816. tLineFontStyle  = (Bold)
  817. cBarFontSize    = (10)
  818. cBarFontYOfs    = (0)
  819. cBarFontFace    = (Tahoma)
  820. cBarFontColor   = (FFFFFF)
  821. cBarFontStyle   = (Bold)
  822. cBarButWidth    = (25)
  823. cBarButHeight   = (24)
  824. //iTransColor     = (B5968C)
  825.  
  826. // Dynamic settings (items with window-size relative positioning):
  827. tLineWidth      = (<WinWidth>-220)
  828. tLineHeight     = (14)
  829. tLineLeft       = (21)
  830. tLineTop        = (<WinHeight>-47)
  831.  
  832. cBarTLWidth     = (<cBarWidth>-12)
  833. cBarTLHeight    = (14)
  834. cBarTLLeft      = (6)
  835. cBarTLTop       = (5)
  836.  
  837. // TimeLine background and foreground source bitmap position
  838. TimeLineBG(57,4,40)
  839. TimeLineFG(17,4,40)
  840.  
  841. // User Interface elements such as Volume and Play Rate Controls
  842. VolumeExData(SrcX=208,SrcY=0,DestX=<WinWidth>-155,DestY=<WinHeight>-47,Width=42,Height=14,Images=12)
  843. RateExData(SrcX=172,SrcY=0,DestX=<WinWidth>-87,DestY=<WinHeight>-47,Width=35,Height=14)
  844.  
  845. // Control Bar TimeLine background source bitmap position
  846. TimeLineCBarBG(113,55,40)
  847. TimeLineCBarFG(73,55,40)
  848.  
  849. // Control Bar and Integrated timeline Bitmap Separator (active/inactive areas)
  850. TimeLineActive(65,55,2,14,1,0)
  851. TimeLineCBarActive(69,55,2,14,1,0)
  852.  
  853. // Left Control Bar Side
  854. CopyCBarBitmap(115,0,6,24,0,0)
  855.  
  856. // Right Control Bar Side
  857. CopyCBarBitmap(121,0,6,24,<cBarWidth>-6,0)
  858.  
  859. // Top Control Bar Bar
  860. TileCBarBitmapH(128,0,40,5,6,0,<cBarWidth>-12)
  861.  
  862. // Bottom Control Bar Bar
  863. TileCBarBitmapH(128,5,40,5,6,<cBarHeight>-5,<cBarWidth>-12)
  864.  
  865. // Top Left corner
  866. CopyBitmap(0,23,4,4,0,0)
  867.  
  868. // Top Right corner
  869. CopyBitmap(0,72,25,1,<WinWidth>-25,0)
  870.  
  871. // Bottom Left corner
  872. CopyBitmap(0,99,1,25,0,<WinHeight>-25)
  873.  
  874. // Bottom Left corner top
  875. CopyBitmap(0,27,3,31,0,<WinHeight>-57)
  876.  
  877. // Bottom Right Corner
  878. CopyBitmap(32,28,26,26,<WinWidth>-26,<WinHeight>-26)
  879.  
  880. // Bottom Right top
  881. CopyBitmap(6,28,25,30,<WinWidth>-25,<WinHeight>-56)
  882.  
  883. // Video Bottom bar
  884. TileBitmapH(4,26,40,1,3,<WinHeight>-56,<WinWidth>-28)
  885.  
  886. // Bar background
  887. FillRect(3,<WinHeight>-55,<WinWidth>-29,29,B4968B)
  888.  
  889. // Bar Bottom Separator
  890. FillRect(0,<WinHeight>-26,<WinWidth>-26,1,9E8075)
  891.  
  892. // Bar Right Separator
  893. FillRect(<WinWidth>-26,<WinHeight>-55,1,29,9E8075)
  894.  
  895. // Left bar
  896. TileBitmapV(0,27,4,40,0,4,<WinHeight>-60)
  897.  
  898. // Right bar
  899. TileBitmapV(5,28,26,40,<WinWidth>-26,1,<WinHeight>-57)
  900.  
  901. // Top Bar
  902. TileBitmapH(4,23,40,4,4,0,<WinWidth>-29)
  903.  
  904. // Bottom Bar
  905. TileBitmapH(59,28,40,25,1,<WinHeight>-25,<WinWidth>-27)
  906.  
  907. // Timeline left side
  908. CopyBitmap(0,0,17,22,4,<WinHeight>-51)
  909. // Timeline right side
  910. CopyBitmap(97,0,17,22,<WinWidth>-199,<WinHeight>-51)
  911. // Timeline top
  912. TileBitmapH(17,0,40,4,21,<WinHeight>-51,<WinWidth>-220)
  913. // Timeline bottom
  914. TileBitmapH(17,18,40,4,21,<WinHeight>-33,<WinWidth>-220)
  915.  
  916. // Volume bar left side
  917. CopyBitmap(100,28,23,22,<WinWidth>-178,<WinHeight>-51)
  918. // Volume bar right side
  919. CopyBitmap(124,28,11,22,<WinWidth>-113,<WinHeight>-51)
  920. // Volume bar top
  921. CopyBitmap(17,0,42,4,<WinWidth>-155,<WinHeight>-51)
  922. // Volume bar bottom
  923. CopyBitmap(17,18,42,4,<WinWidth>-155,<WinHeight>-33)
  924.  
  925. // Rate bar right side
  926. CopyBitmap(148,28,23,22,<WinWidth>-52,<WinHeight>-51)
  927. // Rate bar left side
  928. CopyBitmap(136,28,11,22,<WinWidth>-98,<WinHeight>-51)
  929. // Rate bar top
  930. CopyBitmap(17,0,35,4,<WinWidth>-87,<WinHeight>-51)
  931. // Rate bar bottom
  932. CopyBitmap(17,18,35,4,<WinWidth>-87,<WinHeight>-33)
  933.  
  934. // Video Area
  935. FillRectNT(4,4,<VidWidth>,<VidHeight>,000000)
  936.  
  937. // Right Buttons
  938. CreateExButton(Type=Normal,SrcX=  0,SrcY= 72,Width=25,Height=27,DestX=<WinWidth>-25,DestY=  0,Function=fnExit,Hint=Exit Program)
  939. CreateExButton(Type=Normal,SrcX= 50,SrcY= 72,Width=25,Height=27,DestX=<WinWidth>-25,DestY= 27,Function=fnMax,Hint=Maximize Window)
  940. CreateExButton(Type=Normal,SrcX=100,SrcY= 72,Width=25,Height=27,DestX=<WinWidth>-25,DestY= 54,Function=fnMinimize,Hint=Minimize Window)
  941. CreateExButton(Type=Normal,SrcX=  0,SrcY= 99,Width=25,Height=27,DestX=<WinWidth>-25,DestY= 81,Function=fnFullScreen,Hint=FullScreen Mode)
  942. CreateExButton(Type=Normal,SrcX= 50,SrcY= 99,Width=25,Height=27,DestX=<WinWidth>-25,DestY=108,Function=fnZoom,Hint=Zoom Mode)
  943. CreateExButton(Type=Normal,SrcX=250,SrcY=125,Width=25,Height=27,DestX=<WinWidth>-25,DestY=135,Function=fnSceneCut,Hint=Scene Cut Editor)
  944. CreateExButton(Type=Normal,SrcX=150,SrcY=125,Width=25,Height=27,DestX=<WinWidth>-25,DestY=162,Function=fnBlankingPreset,Hint=Blanking Preset Editor)
  945. CreateExButton(Type=Normal,SrcX=100,SrcY=126,Width=25,Height=27,DestX=<WinWidth>-25,DestY=189,Function=fnPlayList,Hint=Play List Editor)
  946. CreateExButton(Type=Normal,SrcX=  0,SrcY=126,Width=25,Height=27,DestX=<WinWidth>-25,DestY=216,Function=fnChapter,Hint=Chapter Editor)
  947. CreateExButton(Type=Normal,SrcX= 50,SrcY=126,Width=25,Height=27,DestX=<WinWidth>-25,DestY=243,Function=fnSkin,Hint=Skin Selector)
  948. CreateExButton(Type=Normal,SrcX=100,SrcY= 99,Width=25,Height=27,DestX=<WinWidth>-25,DestY=270,Function=fnOptions,Hint=Options)
  949. // Right Button divider
  950. CopyBitmap(0,72,25,1,<WinWidth>-25,297)
  951.  
  952. // Bottom Buttons
  953. CreateExButton(Type=Normal,SrcX=  0,SrcY=203,Width=27,Height=25,DestX=  0,DestY=<WinHeight>-25,Function=fnRewind,Hint=Rewind)
  954. CreateExButton(Type=Normal,SrcX=  0,SrcY=153,Width=27,Height=25,DestX= 27,DestY=<WinHeight>-25,Function=fnPlay,Hint=Play / Pause Video)
  955. CreateExButton(Type=Normal,SrcX=  0,SrcY=178,Width=27,Height=25,DestX= 54,DestY=<WinHeight>-25,Function=fnFastForward,Hint=Fast Forward)
  956. CreateExButton(Type=Normal,SrcX= 54,SrcY=153,Width=27,Height=25,DestX= 81,DestY=<WinHeight>-25,Function=fnStop,Hint=Stop Video)
  957. CreateExButton(Type=Normal,SrcX= 54,SrcY=178,Width=27,Height=25,DestX=108,DestY=<WinHeight>-25,Function=fnPrevTrack,Hint=Previous Track)
  958. CreateExButton(Type=Normal,SrcX=162,SrcY=178,Width=27,Height=25,DestX=135,DestY=<WinHeight>-25,Function=fnPrevChapter,Hint=Previous Chapter)
  959. CreateExButton(Type=Normal,SrcX=216,SrcY=178,Width=27,Height=25,DestX=162,DestY=<WinHeight>-25,Function=fnNextChapter,Hint=Next Chapter)
  960. CreateExButton(Type=Normal,SrcX=108,SrcY=178,Width=27,Height=25,DestX=189,DestY=<WinHeight>-25,Function=fnNextTrack,Hint=Next Track)
  961. CreateExButton(Type=Normal,SrcX=270,SrcY=203,Width=27,Height=25,DestX=216,DestY=<WinHeight>-25,Function=fnAudioTrack,Hint=Next Audio Track)
  962. CreateExButton(Type=Normal,SrcX=270,SrcY=178,Width=27,Height=25,DestX=243,DestY=<WinHeight>-25,Function=fnDVDSub,Hint=Next Subtitle Track)
  963. CreateExButton(Type=Normal,SrcX=108,SrcY=153,Width=27,Height=25,DestX=270,DestY=<WinHeight>-25,Function=fnOpen,Hint=Open Media)
  964. CreateExButton(Type=Normal,SrcX=108,SrcY=203,Width=27,Height=25,DestX=297,DestY=<WinHeight>-25,Function=fnBar,Hint=Show / Hide Control Bar)
  965. // Bottom Button divider
  966. CopyBitmap(0,153,1,25,324,<WinHeight>-25)
  967.  
  968. // TimeLine Buttons
  969. CreateExButton(Type=Normal,SrcX=151,SrcY=71,Width=8,Height=12,DestX=            10,DestY=<WinHeight>-46,Function=fnSkipBackward,Hint=Skip Backwards)
  970. CreateExButton(Type=Normal,SrcX=151,SrcY=84,Width=8,Height=12,DestX=<WinWidth>-196,DestY=<WinHeight>-46,Function=fnSkipForward,Hint=Skip Forward)
  971. // Volume bar Buttons
  972. CreateExButton(Type=Normal,SrcX=154,SrcY=51,Width=9,Height= 9,DestX=<WinWidth>-112,DestY=<WinHeight>-50,Function=fnVolUp,Hint=Increase Volume)
  973. CreateExButton(Type=Normal,SrcX=154,SrcY=61,Width=9,Height= 9,DestX=<WinWidth>-112,DestY=<WinHeight>-39,Function=fnVolDown,Hint=Decrease Volume)
  974. // Rate bar Buttons
  975. CreateExButton(Type=Normal,SrcX=154,SrcY=51,Width=9,Height= 9,DestX=<WinWidth>- 97,DestY=<WinHeight>-50,Function=fnIncRate,Hint=Increase Play Rate)
  976. CreateExButton(Type=Normal,SrcX=154,SrcY=61,Width=9,Height= 9,DestX=<WinWidth>- 97,DestY=<WinHeight>-39,Function=fnDecRate,Hint=Decrease Play Rate)
  977.  
  978. // Control Bar Buttons
  979. AddBarButton(0,252,fnPlay,Play / Pause Video)
  980. AddBarButton(100,228,fnSlowMotion,Slow Motion)
  981. AddBarButton(50,228,fnFastForward,Fast Forward)
  982. AddBarButton(100,276,fnPrevChapter,Previous Chapter)
  983. AddBarButton(150,276,fnNextChapter,Next Chapter)
  984. AddBarButton(50,252,fnStop,Stop Video)
  985. AddBarButton(0,276,fnPrevTrack,Previous Track)
  986. AddBarButton(50,276,fnNextTrack,Next Track)
  987. AddBarButton(250,252,fnAudioTrack,Next Audio Track)
  988. AddBarButton(250,228,fnDVDSub,Next Subtitle Track)
  989. AddBarButton(200,252,fnZoomIn,Zoom-In)
  990. AddBarButton(200,228,fnZoomOut,Zoom-Out)
  991. AddBarButton(200,276,fnZoom,Zoom Mode)
  992. AddBarButton(150,300,fnFullScreen,FullScreen Mode)
  993. AddBarButton(100,300,fnARCycle,Cycle Aspect Ratio Modes)
  994. AddBarButton(200,300,fnBlankingNav,Blanking Navigator)
  995. AddBarButton(0,300,fnVolUp,Increase Volume)
  996. AddBarButton(50,300,fnVolDown,Decrease Volume)
  997. AddBarButton(150,228,fnEject,Eject)
  998. AddBarButton(150,252,fnOpen,Open Media)
  999. AddBarButton(100,252,fnExit,Exit Program)
  1000.  
  1001. // Example of a Biliniar streched bitmap copy
  1002. //CopyStretchedBitmap(150,98,52,27,4,4,<VidWidth>,<VidHeight>)
  1003.  
  1004. // Example of a Gradient fill of the Video Area, Red to White
  1005. //GradientRectV(4,4,<VidWidth>,<VidHeight>,FF00FF,00FF00)
  1006.  
  1007. // Example of Transparent bitmap copy
  1008. //CopyTransBitmap(251,0,32,16,10,10,ECD000)
  1009.  
  1010. // Example of Alpha Blended Mask Copy, Mask must be aligned to the right of the bitmap (and of the same size)
  1011. //CopyMaskedBitmap(267,153,16,16,<WinWidth>-24,<WinHeight>-50)
  1012.  
  1013. // Example of a button using the EX functions (see "default.key" for a list of functions).
  1014. //CreateExButton(Type=Extended,SrcX=0,SrcY=72,Width=25,Height=27,DestX=0,DestY=0,Function=exSetAR,FunctionParam=1,Hint=Set Aspect Ratio to Source Aspect Ratio)
  1015.  
  1016. // Example of a filter property opening button
  1017. //CreateExButton(Type=Filter,SrcX=0,SrcY=72,Width=25,Height=27,DestX=0,DestY=0,StringParam=DivX|XviD|MPEG4|MPEG-4,Hint=Open any MPEG4 based decoder filter)
  1018.  
  1019. // Example of a Transparent Button
  1020. //CreateExButton(Type=Normal,SrcX=32,SrcY=55,Width=16,Height=16,DestX=<WinWidth>-22,DestY=<WinHeight>-50,Function=fnInfo,TransColor=ECD000,Hint=File Information)
  1021.  
  1022. // Example of an Alpha Blended Button with Hovering (Mouse-Over)
  1023. //CreateExButton(Type=Normal,SrcX=251,SrcY=153,Width=16,Height=16,HoverX=299,HoverY=153,AlphaX=283,AlphaY=153,DestX=<WinHalfWidth>+22,DestY=<WinHeight>-50,Function=fnInfo,Hint=File Information)
  1024.  
  1025. // Example of Drawing Dynamic Text, First draw the Shadow (One Pixel lower and drawn first)
  1026. //DrawExText(DestX=5,DestY=<WinHeight>-56,Width=<WinWidth>-10,Height=20,Align=Center,Case=UpFirst,FontName=Arial,FontSize=8,FontColor=000000,FontStyle=Bold,Text=<FileName>)
  1027. // Then the Actual Text
  1028. //DrawExText(DestX=5,DestY=<WinHeight>-57,Width=<WinWidth>-10,Height=20,Align=Center,Case=UpFirst,FontName=Arial,FontSize=8,FontColor=FFFFFF,FontStyle=Bold,Text=<FileName>)
  1029.  
  1030. // Another example of Drawing Dynamic Text (Playing times)
  1031. //DrawExText(DestX=5,DestY=<WinHeight>-57,Width=<WinWidth>-10,Height=20,Align=Center,Case=UpFirst,FontName=Arial,FontSize=8,FontColor=FFFFFF,FontStyle=Bold,Text=At <Time> out of <Duration> - Remaining: <TimeRemain>)
  1032.  
  1033. // Example of using the same graphics of the Play Rate Bar for Audio Balance
  1034. //BalanceExData(SrcX=172,SrcY=0,DestX=<WinWidth>-87,DestY=<WinHeight>-47,Width=35,Height=14)
  1035.  
  1036. // Play List - Very simplistic, no bitmap is actually used
  1037. FillPLRect(0,0,<PLWinWidth>,<PLWinHeight>,6F6F6F)
  1038. FillPLRect(0,0,<PLWinWidth>-1,<PLWinHeight>-1,FFFFFF)
  1039. FillPLRect(1,1,<PLWinWidth>-2,<PLWinHeight>-2,C0C0C0)
  1040. FillPLRect(<PLWinWidth>-67,5,62,23,6F6F6F)
  1041. CreateExButton(Type=Normal,Text=Add Files,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=6,Function=fnPLAddFiles,Hint=Add Files to Play List)
  1042. FillPLRect(<PLWinWidth>-67,30,62,23,6F6F6F)
  1043. CreateExButton(Type=Normal,Text=Add Dir,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=31,Function=fnPLAddDir,Hint=Add Directory to Play List)
  1044. FillPLRect(<PLWinWidth>-67,60,62,23,6F6F6F)
  1045. CreateExButton(Type=Normal,Text=Remove,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=61,Function=fnPLRemove,Hint=Remove Selected Items)
  1046. FillPLRect(<PLWinWidth>-67,85,62,23,6F6F6F)
  1047. CreateExButton(Type=Normal,Text=Clear,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=86,Function=fnPLClear,Hint=Clear Play List)
  1048. FillPLRect(<PLWinWidth>-67,115,62,23,6F6F6F)
  1049. CreateExButton(Type=Normal,Text=Load List,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=116,Function=fnPLLoadList,Hint=Load Play List)
  1050. FillPLRect(<PLWinWidth>-67,140,62,23,6F6F6F)
  1051. CreateExButton(Type=Normal,Text=Save List,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=141,Function=fnPLSaveList,Hint=Save Play List)
  1052. FillPLRect(<PLWinWidth>-67,165,62,23,6F6F6F)
  1053. CreateExButton(Type=Normal,Text=Sort,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=166,Function=fnPLSort,Hint=Sort Play List)
  1054. FillPLRect(<PLWinWidth>-67,195,28,23,6F6F6F)
  1055. CreateExButton(Type=Normal,Text=UP,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=26,Height=21,DestX=<PLWinWidth>-66,DestY=196,Function=fnPLItemUp,Hint=Move Selected Items Up)
  1056. FillPLRect(<PLWinWidth>-33,195,28,23,6F6F6F)
  1057. CreateExButton(Type=Normal,Text=DN,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=26,Height=21,DestX=<PLWinWidth>-32,DestY=196,Function=fnPLItemDown,Hint=Move Selected Items Down)
  1058. FillPLRect(<PLWinWidth>-67,<PLWinHeight>-28,62,23,6F6F6F)
  1059. CreateExButton(Type=Normal,Text=Close,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=<PLWinHeight>-27,Function=fnPlayList,Hint=Close Play List)
  1060. PlayListData(DestX=5,DestY=5,Width=<PLWinWidth>-76,Height=<PLWinHeight>-10,Border=6F6F6F,Background=9F9F9F,Foreground=000000,SelectBorder=006FDF,SelectBG=008FFF,SelectFG=000000,Highlight=FFFFFF,ScrollBG=8F8F8F,ScrollFace=C0C0C0,ScrollDark=8F8F8F,ScrollLight=EFEFEF)
  1061.