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