<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.winamp.com/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.winamp.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wahdahtahdammie</id>
		<title>Winamp Developer Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.winamp.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wahdahtahdammie"/>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Special:Contributions/Wahdahtahdammie"/>
		<updated>2026-05-02T20:23:15Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.22.3</generator>

	<entry>
		<id>http://wiki.winamp.com/wiki/Submitting_Your_Skin_to_Winamp.com</id>
		<title>Submitting Your Skin to Winamp.com</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Submitting_Your_Skin_to_Winamp.com"/>
				<updated>2008-08-27T19:53:48Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Classic Skin:  [[The Base Skin]] --&amp;gt; [[Main|Paint the Main Window]] --&amp;gt; [[Equalizer|Paint the Equalizer Window]] --&amp;gt; [[Playlist|Paint the Playlist Window]] --&amp;gt; [[Mini-browser|Paint the Minibrowser Window]] --&amp;gt; [[AVS|Paint the AVS Window]] --&amp;gt; [[For_Winamp_2.9/5.x|Paint the Winamp 2.9/5.x Windows]] --&amp;gt; [[Creating Custom Cursors|Create Custom Cursors]] --&amp;gt; [[Editing the Configuration Files|Edit the Configuration Files]] --&amp;gt; [[WSZ Files|Compress to .WSZ format]] --&amp;gt; [[Submitting Your Skin to Winamp.com|Submit to Winamp.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have an appropriate .WSZ file, the ultimate step is to share your masterpiece with the world. Your skin will join thousands of others on Winamp.com. This will allow people all over the world to enjoy the fruits of your labor. To do this, just follow these steps:&lt;br /&gt;
&lt;br /&gt;
#Have a classic skin ready in [[WSZ_Files|.WSZ]] format.&lt;br /&gt;
#Go to http://www.winamp.com/user/submit&lt;br /&gt;
#Select Classic Skins for Winamp 2.x compatible skins and click the &amp;quot;Submit a classic skin&amp;quot; button.&lt;br /&gt;
#Fill in the blanks:&lt;br /&gt;
## Name: The name of your skin.&lt;br /&gt;
## Comment: The short blurb that comes up when people browse the skins page.&lt;br /&gt;
## Description: The longer blurb that is displayed when people view the skin details page.&lt;br /&gt;
## Categories: Choose Primary and/or Secondary (optional) categories to properly sort your skin.&lt;br /&gt;
## Thumbnail: Click on the &amp;quot;Browse&amp;quot; button to find the .gif, .jpg, or .png file on your computer. Note: the image file dimensions should be no larger than 178px by 75px.&lt;br /&gt;
## Screenshot: (Full-sized screenshot of your skin.) Click on the &amp;quot;Browse&amp;quot; button to find the .gif, .jpg, or .png file on your computer. Note: the image file dimensions should be no larger than 275px by 600px.&lt;br /&gt;
## Skin File: Click on the &amp;quot;Browse&amp;quot; button to find the .WSZ (classic) or .WAL (modern) file on your computer.&lt;br /&gt;
#Click the &amp;quot;Submit&amp;quot; button, and...&lt;br /&gt;
#Voila! Your skin is on its way to being displayed (after being approved) before the world.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Skin Category Descriptions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following descriptions are general guidelines. They are not intended to be taken too literally. In the end, it is up to you to decide which categories best fit your skin.&lt;br /&gt;
&lt;br /&gt;
* Animated: Inspired by cartoons, Japanese comics, or animated films.&lt;br /&gt;
* Compact/Utility: Minimalist/tiny/lightweight skins, or skins that server a special utility.&lt;br /&gt;
* Computer/OS: Inspired by an operating system's graphical user interface.&lt;br /&gt;
* Consumption: Skins inspired by food, beverages, or anything else consumed.&lt;br /&gt;
* Cool Devices: Skins made to look like... a cool... device.&lt;br /&gt;
* Games: Inspired by any segment of interactive entertainment software.&lt;br /&gt;
* Human: Skins based on humans. Aliens - down the hall to the &amp;quot;WTF&amp;quot; room.&lt;br /&gt;
* Movies/TV: Featuring screenshots, logos, or other paraphernalia connected to a feature film.&lt;br /&gt;
* Music: Inspired by a musical group, instrument or genre.&lt;br /&gt;
* Nature: Skins in tune with the natural habitat that surrounds woodland creatures, or the creatures themsevles.&lt;br /&gt;
* Retro: Conveys a sense of technologic, cultural or temporal nostalgia.&lt;br /&gt;
* Sports/University: Inspired by a sport, sports team, athlete, sporting event, or University.&lt;br /&gt;
* Stylish: Experimental skins built for aesthetics and new skinning ideas.&lt;br /&gt;
* Transportation: Skins based on cars, buses, trains, planes, camels, seagulls, etc.&lt;br /&gt;
* WTF: Skins that defy categorization. You know the type.&lt;br /&gt;
* Web Site: Inspired or sponsored by a web site.&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/WSZ_Files</id>
		<title>WSZ Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/WSZ_Files"/>
				<updated>2008-08-27T19:53:38Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Classic Skin:  [[The Base Skin]] --&amp;gt; [[Main|Paint the Main Window]] --&amp;gt; [[Equalizer|Paint the Equalizer Window]] --&amp;gt; [[Playlist|Paint the Playlist Window]] --&amp;gt; [[Mini-browser|Paint the Minibrowser Window]] --&amp;gt; [[AVS|Paint the AVS Window]] --&amp;gt; [[For_Winamp_2.9/5.x|Paint the Winamp 2.9/5.x Windows]] --&amp;gt; [[Creating Custom Cursors|Create Custom Cursors]] --&amp;gt; [[Editing the Configuration Files|Edit the Configuration Files]] --&amp;gt; [[WSZ Files|Compress to .WSZ format]] --&amp;gt; [[Submitting Your Skin to Winamp.com|Submit to Winamp.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Winamp Skin Zip Files (WSZ)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The last step you need to do before unleashing your Skin on the world is to convert it to the WSZ format. How do I do that, you ask? Just follow the following steps:&lt;br /&gt;
&lt;br /&gt;
#With your trusty zip compression tool of your choice, zip YOUR skin's folder (not the Winamp &amp;quot;Skins&amp;quot; folder) into a .zip file.&lt;br /&gt;
#Rename the new file's extension from .zip to .wsz.&lt;br /&gt;
#Test it by removing your skin folder, then placing your .WSZ into the Winamp &amp;quot;Skins&amp;quot; folder.&lt;br /&gt;
#Run Winamp, then press Alt-S to access the Skin browser. If you see your skin, then everything worked correctly.&lt;br /&gt;
#That's it! Pat yourself on the back, then take the next step and submit it to Winamp.com.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==WSZ History==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A Winamp skin is composed of 45 files. Most of the files that create a skin are .BMPs (a very common image file type) and a few text files. When skin support was originally implemented, an artist would have to create those skins and place them into a subdirectory of the Winamp Skins folder (Usually located in C:\Program Files\Winamp\Skins folder).&lt;br /&gt;
&lt;br /&gt;
This all started becoming a mess due to the fact that not all of the skin developers were creating subfolders when compressing their skins into a ZIP file for distribution. When an end-user uncompresses the files to the Winamp Skins folder, it would at times overwrite other skins. As a solution, we implemented the functionality into Winamp to read the .ZIP files directly. What would happen is an end-user would simply place the .ZIP file into their Winamp Skins folder and when using the Skin Browser in Winamp (ALT+S) the skin magically appeared and loaded if selected.&lt;br /&gt;
&lt;br /&gt;
This did clean up the mess, however, a new problem then surfaced. The .ZIP file format is a very widely used compression type and Winamp was just one of the many dozens of programs available to utilize it. We wanted users to be able to double click the Skin ZIP file and have Winamp automatically install and load the skin. How do we do that without associating Winamp as the default program for handling skins? Rename the file extension.&lt;br /&gt;
&lt;br /&gt;
We simply took all those compressed skins ending with the .ZIP and renamed them to end with .WSZ (Winamp Skin Zip). This allowed us to stay with the standard Winamp .ZIP files and not have to convert the thousands of skins available for download on the Internet. Any skins that are submitted to our site, ending with .ZIP or .WSZ, are automatically renamed to end with a .WSZ before published.&lt;br /&gt;
&lt;br /&gt;
Why do all this you ask? The answer is simple. We wanted to make it so that Winamp would automatically load the skin when a user clicked on a link to download a skin from Internet Explorer as well as Netscape Navigator. We also wanted to make it so that if a user actually had downloaded the .WSZ file, all they would have to do is double click it to install it.&lt;br /&gt;
&lt;br /&gt;
Exactly what happens at this point? Well, when a person installs a .WSZ file what happens is Winamp just copies the file to the Winamp Skins folder so that it can be handled correctly. You can also manually move the .WSZ file into your skin directory and Winamp will recognize it just as well.&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Editing_the_Configuration_Files</id>
		<title>Editing the Configuration Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Editing_the_Configuration_Files"/>
				<updated>2008-08-27T19:53:28Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Classic Skin:  [[The Base Skin]] --&amp;gt; [[Main|Paint the Main Window]] --&amp;gt; [[Equalizer|Paint the Equalizer Window]] --&amp;gt; [[Playlist|Paint the Playlist Window]] --&amp;gt; [[Mini-browser|Paint the Minibrowser Window]] --&amp;gt; [[AVS|Paint the AVS Window]] --&amp;gt; [[For_Winamp_2.9/5.x|Paint the Winamp 2.9/5.x Windows]] --&amp;gt; [[Creating Custom Cursors|Create Custom Cursors]] --&amp;gt; [[Editing the Configuration Files|Edit the Configuration Files]] --&amp;gt; [[WSZ Files|Compress to .WSZ format]] --&amp;gt; [[Submitting Your Skin to Winamp.com|Submit to Winamp.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Any skin file is not complete without first finishing up the configuration files. These configuration files control such things as the background and foreground colors of the Winamp visualizations, or areas that are designated areas to be displayed to the end user. There are three text files that allow you to change these various aspects of Winamp. The first of the three that we will cover is called VisColor.txt.&lt;br /&gt;
&lt;br /&gt;
==Configuration File | VisColor.txt==&lt;br /&gt;
&lt;br /&gt;
VisColor.txt is the file that sets the colors for the Visualization panel. It contains 24 lines. Each line is an RGB value followed by a comment. (See RGB for more Info). Here is a brief explanation of the lines:&lt;br /&gt;
&lt;br /&gt;
* Row 0 is the background color of the visualization area.&lt;br /&gt;
* Row 1 is the color of the dots that appear in the visualization area&lt;br /&gt;
* Rows 2 through 17 affect the colors of the Spectrum Analyzer. Row 2 is the peak value, the highest part of the graphical bar that is visible. This means that when you hit a high frequency, the top of the bar becomes the color specified. As you move from row to row, you can color each level of the frequency spectrum a different color to signify the peak levels of the frequencies in the file you are playing at that moment.&lt;br /&gt;
* Rows 18 to 22 pertain to the oscilloscope colors. They function in the same fashion as the Spectrum Analyzer. Row 18 controls the colors that is displayed at the troughs and the row 22 is the color that is displayed at the crest. Each row between 18 and 22 sets a different level of the whole wave.&lt;br /&gt;
* Row 23 gives the color used to mark the last peak value. Let's take a look at what this all means, here are some screenshots with example images to help you get a clearer perspective.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Vis.gif]]&lt;br /&gt;
&lt;br /&gt;
The result with row 0 set to 0,0,0 and row 1 set to 255,255,255&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration File | Pledit.txt==&lt;br /&gt;
&lt;br /&gt;
Pledit.txt gives the font colors and font face for the Playlist Editor track listing as well as the MiniBrowser URL display, located at the bottom of the MiniBrowser.&lt;br /&gt;
&lt;br /&gt;
Here are some sample settings for pledit.txt is:&lt;br /&gt;
&lt;br /&gt;
'''[Text]'''&lt;br /&gt;
&lt;br /&gt;
Normal=#FF8924&lt;br /&gt;
&lt;br /&gt;
Current=#FFFF00&lt;br /&gt;
&lt;br /&gt;
NormalBG=#1A120A&lt;br /&gt;
&lt;br /&gt;
SelectedBG=#944E11&lt;br /&gt;
&lt;br /&gt;
MbFG=#FF8924&lt;br /&gt;
&lt;br /&gt;
MbBG=#1A120A&lt;br /&gt;
&lt;br /&gt;
Font=Comic Sans MS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The funny values are Hexadecimal RBG values (see Hex RGB). Each row has a different setting:&lt;br /&gt;
&lt;br /&gt;
* Normal - Color of the regular text (Playlist).&lt;br /&gt;
* Current - Color of the current track text (Playlist).&lt;br /&gt;
* NormalBG - Background for normal text (Playlist).&lt;br /&gt;
* SelectedBG - Background for the selected text (Playlist)&lt;br /&gt;
* MbFG - Text color in the MiniBrowser status bar. (MiniBrowser)&lt;br /&gt;
* MbBG - Text background in the MiniBrowser status bar. (MiniBrowser)&lt;br /&gt;
* Font - Font face that's used in both windows&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration File | Region.txt==&lt;br /&gt;
&lt;br /&gt;
So you want a skin with areas that are simply put, transparent? Well, this is a highly tricky task. The file you need is called region.txt and the way to do it is a lot like playing connect-the-dots.&lt;br /&gt;
&lt;br /&gt;
Region.txt provides a set of names such as Normal, WindowShade and so fourth. These set points define how many points make up each window. Another set defines how to draw the picture over Winamp.&lt;br /&gt;
&lt;br /&gt;
Region.txt has 4 regions (the sets). They are delimited with the following tags:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Normal]&lt;br /&gt;
&lt;br /&gt;
[WindowShade]&lt;br /&gt;
&lt;br /&gt;
[Equalizer]&lt;br /&gt;
&lt;br /&gt;
[EqualizerWS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each of these provides a list that constist of two parts. The first gives the number of points that make up a region. The second is a list of the points used to make those regions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The lines are:&lt;br /&gt;
&lt;br /&gt;
NumPoints=&lt;br /&gt;
&lt;br /&gt;
PointList=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The NumPoints list must be on a single line with comma separated numbers.&lt;br /&gt;
&lt;br /&gt;
Example: NumPoints = 4, 4&lt;br /&gt;
&lt;br /&gt;
Each number, x, says to read the next x points of the list and plot the region they define. The points list is comma seperated pairs of x,y co-ordinates. For example:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Normal]&lt;br /&gt;
&lt;br /&gt;
NumPoints = 4, 4&lt;br /&gt;
&lt;br /&gt;
PointList = 0,1, 275,1, 275,14, 0,14,    3,15,&lt;br /&gt;
&lt;br /&gt;
272,15, 272,113, 3,113&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Defines two rectangular regions to be drawn. For more information read the comments in the region.txt file in the base skin. You will find a little more explanation in this file. The only item missing is the EqualizerWS group which is new and will be defined at a later time. &amp;quot;Normal&amp;quot; defines the regions drawn for the main window, WindowShade is the regions drawn in the windowshade mode. Equalizer and EqualizerWS are the same as above. Use the examples above to work out the other points. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration File | RGB==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RGB stands for &amp;quot;Red, Green, Blue&amp;quot;. A certain combination of each of these colors at various percentages can make millions of different colors. For example, combining 100% Blue and 100% Green will make the brightest achievable Yellow. Using this model, RGB has become a method of defining color.&lt;br /&gt;
&lt;br /&gt;
Since a computer displays light using pixels which are really three lights one Red one Green and one Blue (well close enough description for our purposes), we can define a color as the amount of red, green and blue. The ranges we use to help put into perceptive for each of the colors on a computer, we use 0 all the way to 255. Basically, that means, there are 256 different shades of each of those primary three colors, and any combination of those three shades will result in a color. For example, 128, 128, and 128 would make a gray in about the middle of the spectrum. Here are the different values of each of those colors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Skins-classic-config.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration File | Hexadecimal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hexadecimal RGB numbers are exactly the same as RGB, except the value is represented in Hexadecimal notation. Digit position has less meaning (no hundreds tens and units). And each digit can be 0-9 then A-F. To convert from Hex to Decimal use Windows Calculator in Scientific mode.&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Creating_Custom_Cursors</id>
		<title>Creating Custom Cursors</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Creating_Custom_Cursors"/>
				<updated>2008-08-27T19:53:18Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Classic Skin:  [[The Base Skin]] --&amp;gt; [[Main|Paint the Main Window]] --&amp;gt; [[Equalizer|Paint the Equalizer Window]] --&amp;gt; [[Playlist|Paint the Playlist Window]] --&amp;gt; [[Mini-browser|Paint the Minibrowser Window]] --&amp;gt; [[AVS|Paint the AVS Window]] --&amp;gt; [[For_Winamp_2.9/5.x|Paint the Winamp 2.9/5.x Windows]] --&amp;gt; [[Creating Custom Cursors|Create Custom Cursors]] --&amp;gt; [[Editing the Configuration Files|Edit the Configuration Files]] --&amp;gt; [[WSZ Files|Compress to .WSZ format]] --&amp;gt; [[Submitting Your Skin to Winamp.com|Submit to Winamp.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A commonly overlooked skinning property is Winamp cursors. That is, the little arrow that you use to navigate through Winamp doesn't necessarily have to be an arrow. There are 27 different cursor states that Winamp can be in. Wouldn't it be cool if each one had specialized art that matched your skin? All you would need is an icon editing tool, and that idea becomes reality. &lt;br /&gt;
&lt;br /&gt;
==Cursor Filenames==&lt;br /&gt;
&lt;br /&gt;
The Base skin comes with the following cursors:&lt;br /&gt;
&lt;br /&gt;
*CLOSE.CUR: (Main Menu X)&lt;br /&gt;
*EQCLOSE.CUR: (EQ Close)&lt;br /&gt;
*EQNORMAL.CUR: (EQ Normal)&lt;br /&gt;
*EQSLID.CUR: (EQ Up and Down Slides)&lt;br /&gt;
*EQTITLE.CUR: (EQ Titlebar)&lt;br /&gt;
*MAINMENU.CUR: (Main Menu Menu Button-topleft)&lt;br /&gt;
*MIN.CUR: (Main Menu Minimize Button)&lt;br /&gt;
*NORMAL.CUR: (Main Menu Normal Arrow)&lt;br /&gt;
*PCLOSE.CUR: (Playlist Close)&lt;br /&gt;
*PNORMAL.CUR: (Playlist Normal)&lt;br /&gt;
*POSBAR.CUR: (Main Menu Song Position)&lt;br /&gt;
*PSIZE.CUR: (Playlist Expansion Mode)&lt;br /&gt;
*PTBAR.CUR: (Playlist Top Bar)&lt;br /&gt;
*PVSCROLL.CUR: (Playlist vertical button)&lt;br /&gt;
*PWINBUT.CUR: (Playlist Windowshade Mode)&lt;br /&gt;
*PWSNORM.CUR: (Playlist Windowshade Normal)&lt;br /&gt;
*PWSSIZE.CUR: (Playlist Windowshade Size Explainsion)&lt;br /&gt;
*SONGNAME.CUR: (Song Name Scroll)&lt;br /&gt;
*TITLEBAR.CUR: (Main Menu Name Bar)&lt;br /&gt;
*VOLBAL.CUR: (Main Menu Volume Balance)&lt;br /&gt;
*VOLBAR.CUR: (Main Menu Volume Switch)&lt;br /&gt;
*WINBUT.CUR: (Main Menu Windowshade Mode)&lt;br /&gt;
*WSCLOSE.CUR: (Windowshade Close)&lt;br /&gt;
*WSMIN.CUR: (WindowShade Main Minimize)&lt;br /&gt;
*WSNORMAL.CUR: (Windowshade Normal)&lt;br /&gt;
*WSPOSBAR.CUR: (Windowshade Song Position)&lt;br /&gt;
*WSWINBUT.CUR: (Windowshade Exit Windowshade Mode)&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/For_Winamp_2.9/5.x</id>
		<title>For Winamp 2.9/5.x</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/For_Winamp_2.9/5.x"/>
				<updated>2008-08-27T19:53:09Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Classic Skin:  [[The Base Skin]] --&amp;gt; [[Main|Paint the Main Window]] --&amp;gt; [[Equalizer|Paint the Equalizer Window]] --&amp;gt; [[Playlist|Paint the Playlist Window]] --&amp;gt; [[Mini-browser|Paint the Minibrowser Window]] --&amp;gt; [[AVS|Paint the AVS Window]] --&amp;gt; [[For_Winamp_2.9/5.x|Paint the Winamp 2.9/5.x Windows]] --&amp;gt; [[Creating Custom Cursors|Create Custom Cursors]] --&amp;gt; [[Editing the Configuration Files|Edit the Configuration Files]] --&amp;gt; [[WSZ Files|Compress to .WSZ format]] --&amp;gt; [[Submitting Your Skin to Winamp.com|Submit to Winamp.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Skinning Additional Winamp 2.9/5.x Windows==&lt;br /&gt;
&lt;br /&gt;
===The Video Window===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Video_window.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This file is for the Video window. It is resizeable and tiled, just like the playlist window. The titlebar occupies the two top rows. It's just like the playlist titlebar without the winshade mode and missing the winshade button. The close button is in the default state, beside the little graphic that is tiled across everytime the window is scaled horizontally. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Video.gif]]&lt;br /&gt;
&lt;br /&gt;
'''video.bmp'''&lt;br /&gt;
&lt;br /&gt;
The next row of graphics contains what would appear on the bottom left corner of the window which has all the video window buttons in their unpressed states. It also contains (from left to right) the left and right borders of the window for vertical scaling, the pressed close button and all the other buttons in their pressed state. The video buttons are (from left to right) full screen, regular size, double size, TV browser and load file. The next row of graphics has the right corner of the window and the bottom tile. The right corner has the resize button. The bottom tile will be used for horizontal scaling. Along this bottom tile, there will be a box to contain the current playing filename.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Gen&amp;quot; Windows===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Gen.gif]]&lt;br /&gt;
&lt;br /&gt;
'''gen.bmp'''&lt;br /&gt;
&lt;br /&gt;
Gen.bmp is used for general purpose windows such as the media library and the AVS window in Winamp versions greater than 2.9. General purpose windows are resizeable and tiled. The first row is th active title bar and the second row is the inactive one. The title bar is divided into six parts. The first part is the top left corner of the window. The second is a fixed bitmap graphic which does not repeat in the title bar. The third section is the main title container. The fourth is another non repeating part of the title bar. The fifth section is used when the window is horizontally scaled. The last piece is the top right corner of the window and it contains the close window button. Below the title bars are the left bottom corner and the right bottom corner. The left one is placed above the right one. The right bottom corner has a resize button. To the right of these bottom corners are the sidewalls of the window. The left sidewall comes first then the right one. These sections are used during resizing. next to these is the close window button. next to this close button are the bottom corner sidewalls. These sections are used to join the sidewalls to the left and right bottom corners of the window. The left corner sidewall comes before the right one. The right one contains part of the resizer button from the bottom right corner of the window. Immediately below these corner sidewalls is a graphic for the bottom of the window. This graphic is tiled when the window is resized. Below this are the font of the titlebar. The highlighted one lies above the non highlighted font. The fonts are of variable width but not height. Both the highlighted and non highlighted fonts must be of the same width. The letters are ordered in the standard English alphabet order. There are no foreign characters. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Genex.gif]]&lt;br /&gt;
&lt;br /&gt;
'''genex.bmp'''&lt;br /&gt;
&lt;br /&gt;
Genex.bmp is used for the buttons and sliders used in the general purpose windows. It also contains the colour controls for this window. The top button is the active state button. The one right below it is the inactive or pressed state button. These buttons have a four pixel wide border around it. The borders stay 4 pixels thick, no matter the size of the buttons or window. Beside these buttons is a row of pixels used to control the various colors and background of the gen window. The coordinates of the pixels are for as follows (y=0):&lt;br /&gt;
&lt;br /&gt;
# x=48: item background (background to edits, listviews, etc.)&lt;br /&gt;
# x=50: item foreground (text colour of edits, listviews, etc.)&lt;br /&gt;
# x=52: window background (used to set the bg color for the dialog)&lt;br /&gt;
# x=54: button text colour&lt;br /&gt;
# x=56: window text colour&lt;br /&gt;
# x=58: colour of dividers and sunken borders&lt;br /&gt;
# x=60: selection colour for entries inside playlists (nothing else yet)&lt;br /&gt;
# x=62: listview header background colour&lt;br /&gt;
# x=64: listview header text colour&lt;br /&gt;
# x=66: listview header frame top and left colour&lt;br /&gt;
# x=68: listview header frame bottom and right colour&lt;br /&gt;
# x=70: listview header frame colour, when pressed&lt;br /&gt;
# x=72: listview header dead area colour&lt;br /&gt;
# x=74: scrollbar colour #1&lt;br /&gt;
# x=76: scrollbar colour #2&lt;br /&gt;
# x=78: pressed scrollbar colour #1&lt;br /&gt;
# x=80: pressed scrollbar colour #2&lt;br /&gt;
# x=82: scrollbar dead area colour &lt;br /&gt;
&lt;br /&gt;
Below these are the scroll buttons. The first four buttons are these buttons: (from left to right) the scroll up unpressed, scroll down unpressed, scroll up pressed, scroll down pressed. Immediately below these are (from left to right) the scroll left unpressed, scroll right unpressed, scroll left pressed, scroll right pressed. Beside these two rows of scroll buttons are the sliders. The first one from the left is the vertical slider unpressed, the second one is the vertical slider pressed. Beside it, on the top is the horizontal slider unpressed. Below this is the horizontal slider pressed.&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/AVS</id>
		<title>AVS</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/AVS"/>
				<updated>2008-08-27T19:53:00Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Classic Skin:  [[The Base Skin]] --&amp;gt; [[Main|Paint the Main Window]] --&amp;gt; [[Equalizer|Paint the Equalizer Window]] --&amp;gt; [[Playlist|Paint the Playlist Window]] --&amp;gt; [[Mini-browser|Paint the Minibrowser Window]] --&amp;gt; [[AVS|Paint the AVS Window]] --&amp;gt; [[For_Winamp_2.9/5.x|Paint the Winamp 2.9/5.x Windows]] --&amp;gt; [[Creating Custom Cursors|Create Custom Cursors]] --&amp;gt; [[Editing the Configuration Files|Edit the Configuration Files]] --&amp;gt; [[WSZ Files|Compress to .WSZ format]] --&amp;gt; [[Submitting Your Skin to Winamp.com|Submit to Winamp.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Skinning The AVS Window==&lt;br /&gt;
&lt;br /&gt;
This file is layed out much like the other Winamp bitmaps. Once again, the image is divided into various segments only divided by spaces between the sections. The first component in the image, in the upper left-hand corner, is the close button in a pressed state. This close button when pressed will close the AVS window as well as turn off the plug-in.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Avs.gif]]&lt;br /&gt;
&lt;br /&gt;
'''avs.bmp'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next graphic, directly to the right of it, is the upper left most section of the AVS title bar. Be sure not to allow any text to go past the end of the allowed graphic size due to the fact that it will be displayed incorrectly.&lt;br /&gt;
&lt;br /&gt;
Directly to the left of that graphic is the graphic of the title bar which is used to tile horizontally. This graphic should be symmetrical due to the fact that as the AVS window is stretched horizontally, this image is continually duplicated to give the illusion of a stretching title bar.&lt;br /&gt;
&lt;br /&gt;
At the upper rightmost section of the image is the close button for the AVS window in an un-pressed state.&lt;br /&gt;
&lt;br /&gt;
The next row of images contains two really long columns followed by three flat row graphics. The leftmost column is the left border of the AVS window followed by the right column being the right border of the AVS window. The next graphic is the leftmost section that composes the bottom of the AVS window. To the right of it is a little section which is tiled horizontally as the window stretches, just like its title bar counterpart. The final graphic, the rightmost graphic of the second row, is the rightmost section which completes the bottom of the AVS window.&lt;br /&gt;
&lt;br /&gt;
That wasn't too tough, was it? Not at all! This should probably take no more than an hour or so to skin and creates an all around fuller affect if skinned with the same &amp;quot;scheme&amp;quot; of the Winamp interface.&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Mini-browser</id>
		<title>Mini-browser</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Mini-browser"/>
				<updated>2008-08-27T19:52:52Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Classic Skin:  [[The Base Skin]] --&amp;gt; [[Main|Paint the Main Window]] --&amp;gt; [[Equalizer|Paint the Equalizer Window]] --&amp;gt; [[Playlist|Paint the Playlist Window]] --&amp;gt; [[Mini-browser|Paint the Minibrowser Window]] --&amp;gt; [[AVS|Paint the AVS Window]] --&amp;gt; [[For_Winamp_2.9/5.x|Paint the Winamp 2.9/5.x Windows]] --&amp;gt; [[Creating Custom Cursors|Create Custom Cursors]] --&amp;gt; [[Editing the Configuration Files|Edit the Configuration Files]] --&amp;gt; [[WSZ Files|Compress to .WSZ format]] --&amp;gt; [[Submitting Your Skin to Winamp.com|Submit to Winamp.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Skinning The Minibrowser Window (Not used in Winamp 5.x)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Mb.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The Minibrowser is only used pre-Winamp 2.9. But if you still want to skin it, go ahead. The Minibrowser skin is similar to the Playlist skin in many aspects. Both skins are designed to be scaleable due to the fact that most web content doesn't fit into the default viewable area.&lt;br /&gt;
&lt;br /&gt;
The file you will be working with is called mb.bmp. This file contains all the graphics you need to complete in order to skin the Minibrowser. The top two rows of graphics within mb.bmp allow you to create the titlebar of the Minibrowser. The first graphic on the page is the top left corner of the Minibrowser window. This is then followed by the graphic that generates the title of the window. NOTE: this graphic is centered within the window. We then come to the little graphic that is tiled across for every time the window is scaled horizontally. Finally we come to the graphic that completes the titlebar with the top right corner of the window with he close button in it's default state. The next row is all the same graphics, however, all the images are a little dimmed to demonstrate to the end user that the window is now inactive or the window that is not in focus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Mb2.gif]]&lt;br /&gt;
&lt;br /&gt;
'''mb.bmp'''&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Playlist</id>
		<title>Playlist</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Playlist"/>
				<updated>2008-08-27T19:52:42Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Classic Skin:  [[The Base Skin]] --&amp;gt; [[Main|Paint the Main Window]] --&amp;gt; [[Equalizer|Paint the Equalizer Window]] --&amp;gt; [[Playlist|Paint the Playlist Window]] --&amp;gt; [[Mini-browser|Paint the Minibrowser Window]] --&amp;gt; [[AVS|Paint the AVS Window]] --&amp;gt; [[For_Winamp_2.9/5.x|Paint the Winamp 2.9/5.x Windows]] --&amp;gt; [[Creating Custom Cursors|Create Custom Cursors]] --&amp;gt; [[Editing the Configuration Files|Edit the Configuration Files]] --&amp;gt; [[WSZ Files|Compress to .WSZ format]] --&amp;gt; [[Submitting Your Skin to Winamp.com|Submit to Winamp.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Skinning the Playlist Window==&lt;br /&gt;
&lt;br /&gt;
Check it out, it's the playlist window:&lt;br /&gt;
&lt;br /&gt;
[[Image:Pl.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Despite being made from only one image file, the Playlist skin is actually fairly complex due to the fact that it is a fully resizable window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Pledit.gif]]&lt;br /&gt;
&lt;br /&gt;
'''pledit.bmp'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The explanation for this window is fairly complicated due to the randomness of the various components layed out through out the image, so please bear with me.&lt;br /&gt;
&lt;br /&gt;
The top section is fairly straightforward. The upper left image is the top left corner of the Playlist window. This is then followed by the graphic that creates the title for the Playlist window, please remember that this title is always centered within the Playlist Editor window. To it's right is a little part of the titlebar which is tiled all across for every time the window is stretched more and more horizontally. Next would be the default state for the WindowShade mode and close buttons, which is then followed by a graphic which spans two rows, this is a graphic for the bottom edge of the Playlist window which is also tiled as the window is stretched horizontally. Finally to the right of that is a fairly large graphic which once again spans two rows. This graphic is the background for the secondary Visualization area. This area only comes to life when the Winamp Main Window has been disabled.&lt;br /&gt;
&lt;br /&gt;
The next row contains the same set of graphics except that they are the variation that is displayed when the Playlist editor does not have focus, or is the inactive window.&lt;br /&gt;
&lt;br /&gt;
The first two graphics in this next row are for the vertical stretching of the Playlist editor window. The leftmost graphic is for the left side of the Playlist window, and the one to its right allows the right side of the editor to stretch. To the right of those two graphics are the images for the clicked version of the close button with the clicked version of the WindowShade button to its right. Directly beneath those buttons are the un-clicked and clicked versions of the Playlist editor's vertical scrollbar button. To the right of those button images are the graphics necessary for the WindowShade mode of the Playlist Editor.&lt;br /&gt;
&lt;br /&gt;
There are two rows of images that compose the WindowShade mode. The top set of images make up the leftmost side of the WindowShaded version of the Playlist Editor, followed by the rightmost part of the editor. Directly beneath the image that makes the left side is the graphic necessary for the stretching of the WindowShaded Playlist window. To the right of that is the inactive version of the right side of the editor.&lt;br /&gt;
&lt;br /&gt;
Beneath the WindowShade mode graphics are two fairly large graphics that create the bottom side of the Playlist Editor window while in non-WindowShade mode. The left one consists of button controls for the Playlist Editor when not in use. The right graphic is the image for the right side of the Playlist with the time displays, player controls, as well as the window resizing control.&lt;br /&gt;
&lt;br /&gt;
The next set of graphics are all the buttons in both states, pressed and not pressed, that allow you to modify the Playlist. They are all self explanatory in what they do. These images are individually layed over the Playlist window. Note: transparencies are not supported.&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Equalizer</id>
		<title>Equalizer</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Equalizer"/>
				<updated>2008-08-27T19:52:26Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Classic Skin:  [[The Base Skin]] --&amp;gt; [[Main|Paint the Main Window]] --&amp;gt; [[Equalizer|Paint the Equalizer Window]] --&amp;gt; [[Playlist|Paint the Playlist Window]] --&amp;gt; [[Mini-browser|Paint the Minibrowser Window]] --&amp;gt; [[AVS|Paint the AVS Window]] --&amp;gt; [[For_Winamp_2.9/5.x|Paint the Winamp 2.9/5.x Windows]] --&amp;gt; [[Creating Custom Cursors|Create Custom Cursors]] --&amp;gt; [[Editing the Configuration Files|Edit the Configuration Files]] --&amp;gt; [[WSZ Files|Compress to .WSZ format]] --&amp;gt; [[Submitting Your Skin to Winamp.com|Submit to Winamp.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Skinning The Equalizer Window==&lt;br /&gt;
&lt;br /&gt;
Here's the finished Winamp Equalizer:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Equalizer.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Compared to what it takes to skin the main window, the Equalizer window is far simpler. The Equalizer is composed of two bitmaps, the first being Eqmain.bmp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eqmain.gif]]&lt;br /&gt;
&lt;br /&gt;
'''Eqmain.bmp'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first item in the image is the blank background of Equalizer window that, once running, will have the button graphics layered over it, just like in the case of main.bmp. Below the graphic of the Equalizer background, there is a set of buttons. The leftmost button graphics, one atop the other, is for the close button for the Equalizer window. The one on top is the normal, unlicked state, as the other is the pressed, or clicked state for the close button.&lt;br /&gt;
&lt;br /&gt;
To the right of the close buttons are the Equalizer On and Auto buttons in their four states (Off, On, Off-Pressed, On-Pressed).&lt;br /&gt;
&lt;br /&gt;
Below the graphics of the buttons, there are the title bars, in both states, selected as well as unselected. This is now followed by the slider that allows you to control EQ settings in both the selected and unselected states at the begining of the next row. To the right of the slider button, you see as set of graphics, which go from green to red. This set of graphics create one of the bands that will be placed in each part of the 10 bands of the Equalizer window, one of them is also used for the PreAmp slider.&lt;br /&gt;
&lt;br /&gt;
Next, to the right of the equalizer bars are the two states of the Preset button, both pressed and not pressed.&lt;br /&gt;
&lt;br /&gt;
The last row of images will require you to take a closer look:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eq.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This graphic provides the background for the EQ spline, which shows you what position the settings are for the equalizer bands. To the right is the rainbow strip, that graphic gives the colors palete for the equalizer spline graph.&lt;br /&gt;
&lt;br /&gt;
Towards the center of the Eqmain.bmp, there are the title bars, both active and inactive modes. if you notice, there is a button to cause the Equalizer to enter WindowShade mode, however, there is no button for when you press it down, that little graphic is within the other file that creates the EQ window called Eq_ex.bmp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Eq_ex.gif]]&lt;br /&gt;
&lt;br /&gt;
'''Eq_ex.bmp'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eq_ex.bmp was an image added to the skins later on, it is the file that illustrates to the user the controls that are present in Winamp's Equalizer while in WindowShade mode. The EQ has two controls while in WindowShade, the volume, to the left, and the balance, which is to the right.&lt;br /&gt;
&lt;br /&gt;
At the top of the Eq_ex.bmp file, there are the two title bars with Winamp's EQ in WindowShade mode. Notice that there are little tracks for which the volume and balance controls rest in.&lt;br /&gt;
&lt;br /&gt;
The next row contains the graphics for both sliders, one for the volume, and the other for the balance. This is then followed by the pressed or clicked version of the WindowShade mode graphic. To the right of that graphic, we have un-clicked version of the close button. Finally the next row contains the graphic for the clicked version of the maximize (from WindowShade) button, as well as the clicked version of the close button for the Equalizer.&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Main"/>
				<updated>2008-08-27T19:52:19Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Classic Skin:  [[The Base Skin]] --&amp;gt; [[Main|Paint the Main Window]] --&amp;gt; [[Equalizer|Paint the Equalizer Window]] --&amp;gt; [[Playlist|Paint the Playlist Window]] --&amp;gt; [[Mini-browser|Paint the Minibrowser Window]] --&amp;gt; [[AVS|Paint the AVS Window]] --&amp;gt; [[For_Winamp_2.9/5.x|Paint the Winamp 2.9/5.x Windows]] --&amp;gt; [[Creating Custom Cursors|Create Custom Cursors]] --&amp;gt; [[Editing the Configuration Files|Edit the Configuration Files]] --&amp;gt; [[WSZ Files|Compress to .WSZ format]] --&amp;gt; [[Submitting Your Skin to Winamp.com|Submit to Winamp.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Skinning The Main Window==&lt;br /&gt;
The Winamp main window is probably the most complex window, graphics wise, of all its windows. There are many things going on in that one window at all times. Each part of the main window is divided up into various bitmap images. Here is a list of the images below that actually create the main window. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Winamp.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Main.bmp&lt;br /&gt;
*Titlebar.bmp&lt;br /&gt;
*CButtons.bmp&lt;br /&gt;
*ShufRep.bmp&lt;br /&gt;
*Volume.bmp&lt;br /&gt;
*Balance.bmp&lt;br /&gt;
*MonoSter.bmp&lt;br /&gt;
*Posbar.bmp&lt;br /&gt;
*Playpaus.bmp&lt;br /&gt;
*Numbers.bmp&lt;br /&gt;
*Text.bmp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Winamp Skins | Main.bmp===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:main.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This file provides the background image for Winamp, sections of the other bitmaps are cropped and layered over this background image to create the various states of &amp;quot;on&amp;quot; and &amp;quot;off&amp;quot;, buttons, sliders, etc. Many skin artists (skinners) create their own main.bmp image as well as the other components to make their skin as unique as possible. Although the regions in which the buttons can actually be clicked, the artists have a certain amount of pixels to play with for each element. This will enable the skinner to give the illusion of making smaller more precise controls, transparent controls, or even just big silly dumb ones if they wish. The possibilities are simply endless. The skin components are all bitmaps and therefore *cannot support animation or transparencies* The only way to achieve transparency is to use the overlapping area of main.bmp as the background in the various components.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Winamp Skins | Titlebar.bmp===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:titlebar.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Titlebar.bmp provides the title bars for the all the various skinned windows of Winamp. The first of the bars are the graphics for Winamp's main window when that window has focus (the current window on your desktop is said to have the 'focus', and on that window the currently selected control also has the 'focus'). The second bar is the main window's title bar when it does not have the focus. The third and fourth bars provide the graphics for Winamp running in Window Shade mode. The fifth and sixth bars are special. They provide the graphics for the title bar when the Winamp Easter Egg is active. (Easter Eggs are usually useless aspects of a piece of software that the software developers include as a joke or to give credit to something. It's just the programmers trying to have a little fun. do not worry about these last two bars for now.)&lt;br /&gt;
&lt;br /&gt;
To the left of the title bars are a selection of graphics for the windows buttons in their various states.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:winbut.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The top row consists of the images for system menu (a.k.a. Winamp's Main Menu), the minimize button, as well as the close button in it's normal state (the way the buttons would look if they weren't clicked). The second row consists of the same set of buttons, however in the pressed state (the way the buttons would look if they were clicked). The third row is the graphics for the WindowShade button where the left image is the image of the button not pressed, and the left is the image of the button pressed. The fourth row contains the images for the button that restores Winamp or its various windows from WindowShade mode to its expanded form, the images being in the same order, the left being not pressed, and the right being the pressed state.&lt;br /&gt;
&lt;br /&gt;
The fifth and final row consists of the images that create the progress bar for Winamp when Winamp is in WindowShade mode. The first part of the row consists of the image for which the seek bar rests in, followed by the slider in various states.&lt;br /&gt;
&lt;br /&gt;
To the right of the title bars are the graphics for the CuttleBar, which is a little strip of buttons to the left of the visualization area of the Winamp main window. At the top the strip is shown in it's un-pressed state. To the right of the first strip is a version of the strip with all the labels removed, this is for the people who turn off the CuttleBar in Winamp's Preferences window. The next row of strips are simply the different states of the CuttleBar with copy of the strip in each of it's five states, one state for each button being pressed.&lt;br /&gt;
&lt;br /&gt;
When modifying the title bar it's important to remember that if you change the appearance of your buttons in the main title bar images, you should also change all the graphics that are relevant to the title bar to match so that they don't look out of place when you press them and remove the focus from the button you had just pressed. Also note that you can not add graphics for components that do not exist, for example adding a spot in WindowShade mode for track title scrolling would not make sense, due to the fact that Winamp wasn't coded with that in mind, leaving that spot you created blank.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Winamp Skins | ShufRep.bmp===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Cbuttons.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The cbuttons.bmp image provides the images for Winamp's playback control buttons. The top row displays the buttons un-pressed or in their normal state, the second row of graphics are the same buttons except in the pressed state. Remember when skinning this set of components that transparency does not exist, if the button is incorporated into the background, you will have to place the background into the cbuttons.bmp.&lt;br /&gt;
&lt;br /&gt;
===Winamp Skins | ShufRep.bmp===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Shufrep.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shufrep.bmp provides the graphics for both states of the Shuffle-Play button, Play/Loop button (Repeat), Equalizer button as well as the Playlist button. The top row is the (repeat) loop and shuffle in the off state, the second row, are the loop and shuffle button in the off, clicked state(the button being pressed while the shuffle/loop buttons were in the off state). The third row is loop and shuffle button in the on state, and the fourth row are the buttons being clicked in the on state.&lt;br /&gt;
&lt;br /&gt;
The bottom four images make up the graphics for the Equalizer and Playlist editor buttons in both two states. The first is the Equalizer button in the off state. The second button is the Playlist button in the off state. The third is the Equalizer off state and pressed at the same time. The fourth being the Playlist button in the same state. The next row is the exact same thing, however, instead of the buttons being in the off state, they are on.&lt;br /&gt;
&lt;br /&gt;
The same conditions in regards to transparency that apply for the Cbuttons.bmp image apply for this image as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Winamp Skins | Volume.bmp===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Volume.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The volume.bmp file (partial shown here enlarged at the left) contains a set of of bars and two slider graphics. Depending on how high or low the level of the volume is, Winamp selects one of the bars to demonstrate the level at which the volume is currently at. If the volume is all the way down, it displays the more green bars, if all the way up, it displays the more yellow bars. The first bar is the volume at its lowest level, the last bar is the volume at its maximum level. Fiddle with these graphics yourselves to find out which bar is which level. The bottom contains the sliders control images. The first image being the slider, which is in the clicked, the second being in the un-clicked state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Winamp Skins | Balance.bmp===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Bal.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Balance.bmp works virtually identitical to volume.bmp, however, the images in balance need to illustrate the volume coming from either the left, right, or both speakers. This is done by swaying from green to red when moving the slider from one of the sides towards center. Simply color all the bars the way you would do for the volume.bmp and the outcome should be the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Winamp Skins | MonoSter.bmp===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Monoster.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Monoster.bmp provides the indication that the audio source is running in Stereo or Mono mode. The top row shows the &amp;quot;in stereo&amp;quot; indicator as well as the &amp;quot;in mono&amp;quot;, indicator. The second row shows the &amp;quot;stereo off&amp;quot; and &amp;quot;mono off&amp;quot; indicators. When Winamp is playing in stereo sound, the &amp;quot;stereo on&amp;quot; with the &amp;quot;mono off&amp;quot; indicators are displayed. When the audio is in mono, the opposite is displayed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Winamp Skins | Posbar.bmp===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Posbar.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The posbar.bmp, shown here enlarged, provides the track for the song position slider. At the right side of the image, the song seek slider is shown in both states, pressed and not pressed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Winamp Skins | Playpaus.bmp===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:playpaus.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The playpaus.bmp file provides indicators that the file being played is playing, paused or stopped. The final item shows whether the file is synchronized or buffered or a break in transmission has been found.&lt;br /&gt;
&lt;br /&gt;
===Winamp Skins | Numbers.bmp===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Numbers.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The numbers.bmp file provides the images for displaying the numbers used in the time display, located directly above the visualizations area.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Winamp Skins | Text.bmp===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Text.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Text.bmp is performs the same job that numbers.bmp, however, this image isn't as limited in use as numbers.bmp. Text.bmp provides all the text that is used for the track area, Playlist editor, and anywhere else that Winamp uses text within the skinned interface.&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/The_Base_Skin</id>
		<title>The Base Skin</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/The_Base_Skin"/>
				<updated>2008-08-27T19:52:01Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Classic Skin:  [[The Base Skin]] --&amp;gt; [[Main|Paint the Main Window]] --&amp;gt; [[Equalizer|Paint the Equalizer Window]] --&amp;gt; [[Playlist|Paint the Playlist Window]] --&amp;gt; [[Mini-browser|Paint the Minibrowser Window]] --&amp;gt; [[AVS|Paint the AVS Window]] --&amp;gt; [[For_Winamp_2.9/5.x|Paint the Winamp 2.9/5.x Windows]] --&amp;gt; [[Creating Custom Cursors|Create Custom Cursors]] --&amp;gt; [[Editing the Configuration Files|Edit the Configuration Files]] --&amp;gt; [[WSZ Files|Compress to .WSZ format]] --&amp;gt; [[Submitting Your Skin to Winamp.com|Submit to Winamp.com]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=The Winamp Base Skin=&lt;br /&gt;
The Base Skin is a copy of the default skin built into Winamp. All you have to do to skin Winamp is paint over or replace a skin component with your own design and voila, your own personalized version of Winamp. You can replace any or all of the components in a skin. Anything you don't replace will use its Base Skin counterpart. Naturally the Base Skin components will look out of place, so we suggest changing every file.&lt;br /&gt;
&lt;br /&gt;
=The Base Skin Breakdown=&lt;br /&gt;
&lt;br /&gt;
The Base Skin can be split into 6 logical segments which consist of the following files:&lt;br /&gt;
&lt;br /&gt;
1) [[Main]]:&lt;br /&gt;
      Main.bmp: Main Frame&lt;br /&gt;
      Titlebar.bmp: Titlebar&lt;br /&gt;
      Cbuttons.bmp: Control Buttons&lt;br /&gt;
      Shufrep.bmp: Shuffle and Repeat Buttons&lt;br /&gt;
      Volume.bmp: Volume Bar&lt;br /&gt;
      Balance.bmp: Balance Bar&lt;br /&gt;
      Monoster.bmp: Mono/ Stereo Indicators&lt;br /&gt;
      Posbar.bmp: Position Bar&lt;br /&gt;
      Playpaus.bmp: Play/Paused Indicators&lt;br /&gt;
      Numbers.bmp: Digit Reference&lt;br /&gt;
      Text.bmp: Text Reference&lt;br /&gt;
2) [[Equalizer]]:&lt;br /&gt;
      Eqmain.bmp: Equalizer Main Frame&lt;br /&gt;
      Eq_ex.bmp: Equalizer Window Shade Bar&lt;br /&gt;
3) [[Playlist]]:&lt;br /&gt;
      Pledit.bmp: Playlist Editor Frame/Buttons&lt;br /&gt;
4) [[Mini-browser]]:&lt;br /&gt;
      Mb.bmp: Mini-browser Frame&lt;br /&gt;
5) [[AVS]]:&lt;br /&gt;
      Avs.bmp: AVS Frame&lt;br /&gt;
6) [[For Winamp 2.9/5.x]]: (Thanks to Jellby)&lt;br /&gt;
      Video.bmp: Video Window&lt;br /&gt;
      Gen.bmp: General Purpose Window&lt;br /&gt;
      Genex.bmp: General Purpose Buttons and Sliders&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Maki_Overview</id>
		<title>Modern Skin: Maki Overview</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Maki_Overview"/>
				<updated>2008-08-27T19:38:16Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is Maki==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Maki is a user interface and event management scripting system and more. The primary purpose of Maki is to handle all of the user interface behavior. Maki is used to insert functionality in Winamp3. The inserted functionality can range from a new user interface behavior to an alarm clock to a seperate EQ control system. You must not forget that Maki is part of Wasabi, which is used to build Winamp3. It's therefor safe to assume that Wasabi based applications (other than Winamp3) support Maki also. Well, when there are others that is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What does Maki mean?==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''M'''ake '''A''' '''K'''iller '''I'''nterface&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What can Maki do?==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Maki as a language can do pretty much everything most scripting languages do. It supports user functions, user classes. It also has a full fledged pre-processor that allows you to include other Maki source files. Maki scripts are actually compiled using the Maki Compiler (MC.EXE, look for it in your Winamp3 directory. Don't worry about the compiler, we'll explain how it works later on).&lt;br /&gt;
&lt;br /&gt;
So here's a list of what Maki can do, just remember, it might change, but always in a good way, at least, we hope so.&lt;br /&gt;
&lt;br /&gt;
*Trap and hook events (onClick() do something...)&lt;br /&gt;
*Move user interface elements (take button A and move it to position x,y)&lt;br /&gt;
*Move and change images (button A has image A, set button A's image to image B)&lt;br /&gt;
*Show and Hide Windows.&lt;br /&gt;
*Control Winamp3 playback (play, stop, next, etc.)&lt;br /&gt;
*Control Winamp3 volume (set the volume to 100%)&lt;br /&gt;
*Control Winamp3 equalizer levels (set 60hz to +20db, for you bass addicts.)&lt;br /&gt;
*Make an Alarm&lt;br /&gt;
*Make a Clock&lt;br /&gt;
*etc.&lt;br /&gt;
&lt;br /&gt;
Now, you might not realise it, but the fact it can trap events and hook events and create new GUI objects on the fly means it can pretty much do anything. Something very important to remember is that some GUI objects need to be &amp;quot;binded&amp;quot; before being able to be used to trap events. The best way to go about this is to remember that objects need to be binded before being used. Here's a short example: &lt;br /&gt;
&lt;br /&gt;
 Global Timer myTimer;&lt;br /&gt;
 System.onScriptLoaded() {&lt;br /&gt;
 myTimer = new Timer;&lt;br /&gt;
 }&lt;br /&gt;
 myTimer.onTimer() {&lt;br /&gt;
 //Do cool stuff here.&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==When should I use Maki?==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 It's always hard to decide if you want to implement something via scripting or component. Always remember that many things can be done with Maki and that implementing something via scripting is also much faster than using a component. This is super true when it comes to user interface behavior in skins. Literaly ANYTHING that has to do with how the user interface (skin) behaves and changes because of user input is pretty darn quick to write in scripting, but you can still do it in a component if you wish.&lt;br /&gt;
&lt;br /&gt;
Mainly, you have to look at the potential level of complexity of what you're trying to do. You don't want to implement something very complex in script because it will definitely be slower than straight C++ code. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Maki Syntax==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Here's where the fun ends for me and I have to start being all serious and actually explain important stuff. Ugh. So, first I'm going to explain general syntax, like what constitutes an instruction, how you terminate lines, etc. Then we'll jump into variables, functions, classes and class members. Here we gooooooooo!&lt;br /&gt;
&lt;br /&gt;
First off, Maki is NOT case sensitive, so a function named llama can also be called by using Llama. I'd also like to point out the difference between pre-processor statements and actual code statement. Pre-processor statements are read and processed FIRST, before even ONE shred of code is actually compiled. They start with # and end with a carriage return. Actual code starts pretty much with anything but # and ends with a ;. This excludes flow control statements (like if(..) {... ). Now I know it's a bit odd to just read things and not see it, so, how about a little example? *nod*&lt;br /&gt;
&lt;br /&gt;
First, pre-processor statements:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;../../lib/std.mi&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define ACTIVEALPHA   (230)&lt;br /&gt;
 #define INACTIVEALPHA (150)&lt;br /&gt;
&lt;br /&gt;
The pre-processor statements are pretty self explainatory. I'll explain what they actually mean really soon, just observe the syntax for now.&lt;br /&gt;
&lt;br /&gt;
Now, a code snippet:&lt;br /&gt;
&lt;br /&gt;
 if (isactive != prev_active) {&lt;br /&gt;
 prev_active = isactive;&lt;br /&gt;
 fader.start();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Since if is a control statement and marks the beginning of a code block ( a code block is something in between { .. } ), it doesn't require a ;, the line below it however, isn't a control statement and requires the line to end with a ;. Again, I will explain what everything means later, for now, just observe the syntax.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Maki Datatypes==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 In this section, we'll go thru all the different datatypes available in Maki and how to use them (And also, a quick overview of what exactly is a variable in Maki). Currently in Maki there are 6 basic types you can use:&lt;br /&gt;
&lt;br /&gt;
*Boolean&lt;br /&gt;
*Int&lt;br /&gt;
*Float&lt;br /&gt;
*Double&lt;br /&gt;
*String&lt;br /&gt;
*Object&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Object is a compound type, we'll see what it means later.&lt;br /&gt;
&lt;br /&gt;
Now for a description of each of the types. Please note that the variable types aren't case sensitive.&lt;br /&gt;
&lt;br /&gt;
===Boolean===&lt;br /&gt;
&lt;br /&gt;
Boolean is a boolean value that can have two states. For us, these states are true (1) and false (0). Here's how you create a Boolean variable and assign a value to it:&lt;br /&gt;
&lt;br /&gt;
 //Create a bool type variable and assign 0 (false) to it.&lt;br /&gt;
 Boolean state = 0;&lt;br /&gt;
&lt;br /&gt;
 //Assign 1 (true) to our bool variable named state.&lt;br /&gt;
 state = 1;&lt;br /&gt;
&lt;br /&gt;
 //Assign false (0) to our bool variable named state.&lt;br /&gt;
 state = false;&lt;br /&gt;
&lt;br /&gt;
 //Assign true (1) to our bool variable named state.&lt;br /&gt;
 state = true;&lt;br /&gt;
&lt;br /&gt;
===Int===&lt;br /&gt;
&lt;br /&gt;
Int is a signed* round integer value from -2 147 483 647 to +2 147 483 648 (this means no decimal values, ever). Here's how you create an Int variable and assign a value to it:&lt;br /&gt;
&lt;br /&gt;
 //Create an int type variable and assign 255 to it.&lt;br /&gt;
 Int alpha = 255;&lt;br /&gt;
&lt;br /&gt;
 //Assign the value 1000 to our int variable named alpha.&lt;br /&gt;
 alpha = 1000;&lt;br /&gt;
&lt;br /&gt;
 //Assign the value -1000 to our int variable named alpha.&lt;br /&gt;
 alpha = -1000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Float===&lt;br /&gt;
&lt;br /&gt;
Float is a signed floating point number. Here's how you create a Float variable and assign a value to it:&lt;br /&gt;
&lt;br /&gt;
 //Create a float type variable and assign 0.25 to it.&lt;br /&gt;
 Float fraction = 0.25;&lt;br /&gt;
&lt;br /&gt;
 //Assign the value 0.5 to our float variable named fraction.&lt;br /&gt;
 fraction = 0.5;&lt;br /&gt;
&lt;br /&gt;
 //Assign the value -3.5566 to our float variable named fraction.&lt;br /&gt;
 fraction = -3.5566;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Double===&lt;br /&gt;
&lt;br /&gt;
Double is a signed floating point number with double precision.&lt;br /&gt;
&lt;br /&gt;
 //Create a float type variable and assign 0.000000125 to it.&lt;br /&gt;
 Double fraction = 0.000000125;&lt;br /&gt;
&lt;br /&gt;
 //Assign the value 0.5 to our double variable named fraction.&lt;br /&gt;
 fraction = 0.5;&lt;br /&gt;
&lt;br /&gt;
 //Assign the value -3.5566 to our double variable named fraction.&lt;br /&gt;
 fraction = -3.5566;&lt;br /&gt;
&lt;br /&gt;
===String===&lt;br /&gt;
&lt;br /&gt;
String is a string, it can be of any length. Here's how you create a String variable and assign a value to it:&lt;br /&gt;
&lt;br /&gt;
 //Create a string type variable and assign a sentence to it.&lt;br /&gt;
 String name = &amp;quot;My real name is not Aus.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 //Assign the value &amp;quot;Guru&amp;quot; to our string variable named name.&lt;br /&gt;
 name = &amp;quot;Guru&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 //Assign the value &amp;quot;Francis&amp;quot; to our string variable named name.&lt;br /&gt;
 name = &amp;quot;Francis&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
===Object===&lt;br /&gt;
&lt;br /&gt;
Object is a compound type. This means it can have more than just one value associated with it. Infact, you can even attach values to it, and even other objects.&lt;br /&gt;
&lt;br /&gt;
===Null===&lt;br /&gt;
&lt;br /&gt;
Null is a special case. You can't create a variable of this type, it is ONLY used in comparaisons and can compare to any type variable and object. You can use it to see if a variable contains something or exists.&lt;br /&gt;
&lt;br /&gt;
==Maki Operators==&lt;br /&gt;
&lt;br /&gt;
===Mathematical===&lt;br /&gt;
&lt;br /&gt;
All basic math operators are available, here's a list of them and what they do.&lt;br /&gt;
&lt;br /&gt;
[[Image:Table1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Logical===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Table2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Bit===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Table1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Assignment===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Table1.png]]&lt;br /&gt;
&lt;br /&gt;
==Maki Control Structures==&lt;br /&gt;
&lt;br /&gt;
Control structures are what influence the flow of the code, certain parts are executed only in certain cases, some a fixed amount of times, some a variable amount of times, etc. Most of the basic control structures found in modern languages are available in Maki. Here's a list of them:&lt;br /&gt;
&lt;br /&gt;
===if===&lt;br /&gt;
&lt;br /&gt;
 if(state == true) {&lt;br /&gt;
 	state = false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===if else===&lt;br /&gt;
&lt;br /&gt;
 if(state == true) {&lt;br /&gt;
 	state = false;&lt;br /&gt;
 } else {&lt;br /&gt;
 state = true;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===while loop===&lt;br /&gt;
&lt;br /&gt;
 while(state == true) {&lt;br /&gt;
 ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===do while loop===&lt;br /&gt;
&lt;br /&gt;
 do {&lt;br /&gt;
 	...&lt;br /&gt;
 } while(state == true);&lt;br /&gt;
&lt;br /&gt;
===for loop===&lt;br /&gt;
&lt;br /&gt;
 for(int i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;
 	...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Maki Functions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===How do I create my own Maki functions===&lt;br /&gt;
&lt;br /&gt;
Functions in Maki need to be declared before they can be used (you can declare and define it if you want also). When declaring a function you need to use the proper prototype line for the function you wish to create. This includes the return value type and the parameters it takes.&lt;br /&gt;
&lt;br /&gt;
There are two ways you can go about creating functions.&lt;br /&gt;
&lt;br /&gt;
1) You can group all your function declarations (called prototypes) at the top of your script and then define (write the actual code associated with the functions) them anywhere in the file. Like so:&lt;br /&gt;
&lt;br /&gt;
 #include &lt;br /&gt;
 &lt;br /&gt;
 Function Boolean CheckLevel(int Threshold);&lt;br /&gt;
 Function Int CheckPlaystring(String _Playstring);&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
 Boolean CheckLevel(int Threshold) {&lt;br /&gt;
 ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Int CheckPlaystring(String _Playstring) {&lt;br /&gt;
 ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
2) You can declare the function just before defining it. Like so:&lt;br /&gt;
&lt;br /&gt;
 #include &lt;br /&gt;
 ...&lt;br /&gt;
 Function Boolean CheckLevel(int Threshold);&lt;br /&gt;
 Boolean CheckLevel(int Threshold) {&lt;br /&gt;
 ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The preferred method is the first because it's just much easier to organize things, but, you can do it the other way if you want to.&lt;br /&gt;
&lt;br /&gt;
===How to read function prototypes===&lt;br /&gt;
&lt;br /&gt;
Function RETURN_VALUE_TYPE FUNCTION_NAME(PARAM_TYPE PARAM_NAME, ...);&lt;br /&gt;
&lt;br /&gt;
*RETURN_VALUE_TYPE is the type of the return value, it can be any type supported by Maki, including user classes.&lt;br /&gt;
*FUNCTION_NAME is the name of the function you are declaring. It can be any combination of letters and numbers but it MUST start with a letter.&lt;br /&gt;
*PARAM_TYPE is the type of the parameter you will be passing to the function, it can be any type supported by Maki, including user classes.&lt;br /&gt;
*PARAM_NAME is the name the parameter will have inside the function, it can be any combination of letters and numbers but it MUST start with a letter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The function's name and parameter names CAN NOT use any of the existing Maki keywords.&lt;br /&gt;
&lt;br /&gt;
==Maki Classes==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The already existing Maki classes usually consist of two things: member data and methods. It's very important to remember that user classes do not support methods yet. (needs improvement)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Maki User Classes==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(needs improvement)&lt;br /&gt;
&lt;br /&gt;
==Gerneral Scripting Rules==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These are just general things you want to keep in mind when writing Maki scripts and when writing code in general too! :)&lt;br /&gt;
&lt;br /&gt;
*As a rule of thumb, all uppercase is reserved for constants. So please avoid naming anything that's not a constant all in uppercase.&lt;br /&gt;
&lt;br /&gt;
==STD.MI Reference==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you'd like to know more about STD.MI simply open it in your favorite text editor and check out the spiffy comments. If you need more help, [http://forums.winamp.com/ check out the forums!]&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Animating_a_Skin</id>
		<title>Modern Skin: Animating a Skin</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Animating_a_Skin"/>
				<updated>2008-08-27T19:37:52Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An animated layer does not move. However, an animating skin does move. To actually move a graphical element you must write a MAKI script. In this section, we will show you how to do a sequence of animation that you see in this skin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Flash2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MAKI Script - anim.m==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Couple things you need to notice in your XML:&lt;br /&gt;
&lt;br /&gt;
*Both animated layer and animating skin are &amp;quot;AnimatedLayer&amp;quot; type.&lt;br /&gt;
*Both use the same graphical element.&lt;br /&gt;
*The difference lies that animating skin uses a MAKI script to move the arrow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:scripting_animxml.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Lets break down the script:'''&lt;br /&gt;
&lt;br /&gt;
==Introduction Comments:==&lt;br /&gt;
&lt;br /&gt;
The first part of the script should be a brief introduction to the script. It should talk about the purpose and the functionality of the script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:scripting_animmaki1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==#include Section:==&lt;br /&gt;
&lt;br /&gt;
The second part is the #include section. Use &amp;quot;#include&amp;quot; to include any file you need. If you need to call or use another function that is defined in another file, make sure you include that file in your script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:scripting_animmaki2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Variable Declaration Section==&lt;br /&gt;
&lt;br /&gt;
Any variable that you'll use in your script, declare them in this section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:scripting_animmaki3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==System.onScriptUnloading() Section==&lt;br /&gt;
&lt;br /&gt;
When the script is unloaded, this part of the script will run. Typically, you do your clean up in this section. Our triangle script is simple and therefore doesn't need anything in this section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:scripting_animmaki4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==System.onScriptLoaded() Section==&lt;br /&gt;
&lt;br /&gt;
When the script is first loaded, this part of the script will run. Typically, if anything you want to make happen when the script first start, you do that here. In our example, we initialized some objects and set the initial state for those objects. Just like the previous section, it is perfectly fine to leave this section empty. If you do that, nothing will happen when the script is loaded.&lt;br /&gt;
&lt;br /&gt;
In this script, we set the initial state for several variables and call &amp;quot;move_arrow()&amp;quot; function when the script is loaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:scripting_animmaki5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==You own functions==&lt;br /&gt;
&lt;br /&gt;
To move the arrow, we use two functions. The first function, &amp;quot;move_arrow()&amp;quot;, is called by &amp;quot;system.onScriptLoaded()&amp;quot; when the script is loaded. The function of &amp;quot;move_arrow()&amp;quot; is to move the arrow down from its initial location. To do this, it sets the x and y coordinate and the speed for that movement. When the arrow reaches the target location, an event is fired telling the system that the arrow has reached the target location.&lt;br /&gt;
&lt;br /&gt;
Winamp3 is an event driven system. The second function is designed to handle the event when the arrow reaches its destination. Depending on its state, it will direct the arrow to move to a new location. This function is called over and over again every time the arrow reaches its destination. This simple function directs the movement of the arrow that you see in the skin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:scripting_animmaki6.png]]&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Drawer_Scripting</id>
		<title>Modern Skin: Drawer Scripting</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Drawer_Scripting"/>
				<updated>2008-08-27T19:37:42Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is a MAKI Script?==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
What is MAKI? MAKI stands for Make A Killer Interface. It is the scripting language for modern Winamp skins. Scripting is used to produce the animations you see in the skin. Scripting is simple. It's easy! Anyone can do it! You'll love it.... Trust me.&lt;br /&gt;
&lt;br /&gt;
==So how does a MAKI script work?==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MAKI scripts are event based. In other word, your functions are used to define behaviors when an event occurs. If you don't define action for that event, the default behavior will be used and the default behavior is defined by Winamp. Scripts are used to override an existing behavior. For example, when you click on the PL button, the playlist container appears. You can override that functionality so that the Media Library also appears. (However, we don't recommend you to do this)&lt;br /&gt;
&lt;br /&gt;
==What about elements I define in my own skins?==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you define new elements in your skin such as new buttons or sliders (elements that is not in the Default skin), essentially what you're doing is creating new objects. The behavior for that object is nothing.... nada until you specify an action in you XML or in your scripts.&lt;br /&gt;
&lt;br /&gt;
The script to implement the animation you see below is short and simple. But it demonstrates the power of modern skins: with little programming, you can add functionalities to your skin or user interface. For more about MAKI, please read MAKI Overview.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Flash3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling a MAKI script==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting dir.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are the basic concepts that you should know before starting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Directory hierarchy===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All your scripts for your skin should be together in a subdirectory. Usually that subdirectory is called &amp;quot;scripts&amp;quot;. In terms of hierarchy, that subdirectory is placed under your skin directory. In our example, &amp;quot;scripts&amp;quot; subdirectory is under the &amp;quot;ComplexTutorial&amp;quot; skin directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===.m and .maki files===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A sourcecode file is a text file that you can read and understand with a text program like Notepad or Editplus. The sourcecode file for your script has the .m extension. A compiled file is the result after being compiled by the compiler. It has been optimized (therefore unreadable for you) for the computer to run. The compiled script has the .maki extension.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Compiling a MAKI file===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To compile a MAKI scripting, you must use the MAKI Compiler (mc.exe) in your Winamp directory. It is located in the same directory as your Winamp player. Chances are that it is located in &amp;quot;C:\Program Files\Winamp\Studio.exe&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
#Open a DOS Prompt: &amp;quot;Start Menu&amp;quot; =&amp;gt; &amp;quot;Run...&amp;quot; =&amp;gt; type &amp;quot;command&amp;quot;&lt;br /&gt;
#Change path to script directory for your skin. For this example, the path is &amp;quot;C:\Program Files\Winamp\Skins\ComplexTutorial\Scripts&amp;quot;&lt;br /&gt;
#Run mc.exe on your script. Because mc.exe is not located in the same directory as your script, you need to type &amp;quot;..\..\..\mc&amp;quot; in order to run it. For our example, it is &amp;quot;..\..\..\mc triangle.m&amp;quot; to compile triangle.m into triangle.maki.&lt;br /&gt;
&lt;br /&gt;
You can set an environment variable to your Winamp directory so you don't have to type &amp;quot;..\..\..\&amp;quot; to access mc.exe. You can just type &amp;quot;mc triangle.m&amp;quot; instead. (To set an environment variable: Right on &amp;quot;My Computer&amp;quot; =&amp;gt; &amp;quot;Advanced&amp;quot; tab =&amp;gt; Environment Variables.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting dos.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MAKI Script - triangle.m==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The drawer animation is done through MAKI Scripting. The script is short and simple but it demonstrates the power of modern skins: with little programming, you can add functionalities to your skin or user interface. In your XML, you need to specify which MAKI script you want to use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting drawerxml.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lets break down the script:&lt;br /&gt;
&lt;br /&gt;
===Introduction Comments:===&lt;br /&gt;
&lt;br /&gt;
The first part of the script should be a brief introduction to the script. It should talk about the purpose and the functionality of the script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting trianglemaki1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===#include Section:===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second part is the #include section. Use &amp;quot;#include&amp;quot; to include any file you need. If you need to call or use another function that is defined in another file, make sure you include that file in your script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting trianglemaki2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Variable Declaration Section===&lt;br /&gt;
&lt;br /&gt;
Any variable that you'll use in your script, declare them in this section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting trianglemaki3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===System.onScriptUnloading() Section===&lt;br /&gt;
&lt;br /&gt;
When the script is unloaded, this part of the script will run. Typically, you do your clean up in this section. Our triangle script is simple and therefore doesn't need anything in this section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting trianglemaki4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===System.onScriptLoaded() Section===&lt;br /&gt;
&lt;br /&gt;
When the script is first loaded, this part of the script will run. Typically, if anything you want to make happen when the script first start, you do that here. In our example, we initialized some objects and set the initial state for those objects. Just like the previous section, it is perfectly fine to leave this section empty. If you do that, nothing will happen when the script is loaded.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting trianglemaki5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Your own functions===&lt;br /&gt;
&lt;br /&gt;
This section is where you put all your own functions that will define the behavior of your script. Make sure that any variable you use in this function is decared and their initial state has been initialized. For our example, we have two functions.&lt;br /&gt;
&lt;br /&gt;
*button_triangle.onleftbuttonup(int x,int y) function&lt;br /&gt;
&lt;br /&gt;
This function responds to the event when the triangle button is pressed. The triangle buttons has two states: open or closed. Depending on the current state, its position is changed so that it is moved.&lt;br /&gt;
&lt;br /&gt;
*button_triangle.ontargetreached() function&lt;br /&gt;
&lt;br /&gt;
This function responds to the event when the triangle has reached its destination. What event occurs, the state of the button is changed to its new state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting trianglemaki6.png]]&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Skin_Scripting</id>
		<title>Modern Skin: Skin Scripting</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Skin_Scripting"/>
				<updated>2008-08-27T19:37:31Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some quick notes on Winamp's modern skins scripting engine (called MAKI) to get you started:&lt;br /&gt;
&lt;br /&gt;
*MAKI stands for Make A Killer Interface.&lt;br /&gt;
*MAKI is a scripting engine for creating custom behavior from a Wasabi skin and set of components.&lt;br /&gt;
*MAKI scripts are precompiled into cross-platform bytecode. This means that the set of skin XML, elements and compiled scripts are completely cross-platform.&lt;br /&gt;
*Scripts can attach to any event of any object in the UI. Scripts can be loaded and unloaded in any order. &lt;br /&gt;
&lt;br /&gt;
For more about MAKI, please read the MAKI Overview.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''MAKI Script Organization'''&lt;br /&gt;
&lt;br /&gt;
Before we go over MAKI code, I'd like to go over the overall flow of a MAKI script. Please refer to the picture below. It shows what a typical MAKI script should look like.&lt;br /&gt;
&lt;br /&gt;
*Part 1: Script Comments&lt;br /&gt;
*Part 2: #include Section&lt;br /&gt;
*Part 3: Variable Declaration&lt;br /&gt;
*Part 4: system.onUnloading() Section&lt;br /&gt;
*Part 5: system.onScriptLoaded() Section&lt;br /&gt;
*Part 6: Your own functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:MAKI Script Organization.png]]&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Drawers</id>
		<title>Modern Skin: Drawers</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Drawers"/>
				<updated>2008-08-27T19:37:19Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A Drawer is an animated layer that is normally hidden but can be shown when triggered by a user event (often a mouse click).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Flash3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Complex Tutorial Modern Skin'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In Complex Tutorial, Group #3 shows a triangle that slides out when you click on it. This group demonstrates the concept of a drawer. We will go over the XML code in this section. The script explaination is covered in the next section. Here's the process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lets go through in detail how do to each step&lt;br /&gt;
&lt;br /&gt;
==Make the Graphics: Rotating Arrow==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
red-circle.png &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [[Image:Red-circle.png]]&lt;br /&gt;
&lt;br /&gt;
triangle-clickme.png &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  [[Image:Triangle-clickme.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Define the Elements in the XML Code==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Drawer xml1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Define Layers using those Elements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Drawer xml1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Making MAKI Script==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Two MAKI scripts function together to create the animations you see. Triangle.maki animates the sliding effect of the drawer. Anim.maki animates the moving arrow. We will go over the MAKI script for drawer in the next section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting trianglemaki1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting trianglemaki2.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting trianglemaki3.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting trianglemaki4.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting trianglemaki5.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting trianglemaki6.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Triangle.m MAKI file for Complex Tutorial Skin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting animmaki1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting animmaki2.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting animmaki3.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting animmaki4.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting animmaki5.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting animmaki6.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Anim.m MAKI file for Complex Tutorial Skin&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Snap_Points</id>
		<title>Modern Skin: Snap Points</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Snap_Points"/>
				<updated>2008-08-27T19:37:09Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A snap point is a point that windows will snap on to. When you move that window close in proximity to that point, the window will &amp;quot;latch&amp;quot; on to that point. You can drag it out of that point later. Take a look at these two examples.&lt;br /&gt;
&lt;br /&gt;
==Boxor Example==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Snap point is a useful tool that adds more functionalities to your skin. Take a look at the Boxor example. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Snappoint boxor.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Default Player Example==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Snappoint default.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Snap points defined along the Main Window&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Winamp3 mainpl.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; The Playlist Editor snaps to the Main Window when you move it close in proximity of the Main Window &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==XML Example==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lets take a look at the XML code to define a snappoint. To get two components to snap together when they're close, you need to define snappoints in their XML. The XML itself is simple. The important part is the id: components with the same snappoint id will snap together whereas components with different ids will not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Snappoint xml1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Snappoint xml2.png]]&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Animatedlayer</id>
		<title>Modern Skin: Animatedlayer</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Animatedlayer"/>
				<updated>2008-08-27T19:36:56Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An animated layer is a layer that displays a series of graphics by cycling through parts of a graphics file. A simple example is the rotating arrow that you see below.&lt;br /&gt;
&lt;br /&gt;
An animated layer does not move. However, an animating skin does move. To move a graphical element in animating layer, you must write a MAKI script. Scripting is covered in the next section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Flash2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Complex Tutorial Modern Skin'''&lt;br /&gt;
&lt;br /&gt;
In Complex Tutorial, Group #4 shows a spinning arrow inside a yellow circle. This is done through Animated Layer. Here's the process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lets go through in detail how do to each step:&lt;br /&gt;
*Make the graphics: rotating arrow&lt;br /&gt;
*Define the elements in the XML code.&lt;br /&gt;
*Define layers using those elements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Make the Graphics: Rotating Arrow==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you make the graphics for this layer, make the graphics for each frame separately. Then put the frames together vertically in a single file as shown below. This example has a short animation. If you plan to show more complicated animation, make more frames.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Animlayer graphics.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; yellowcircle-arrow.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Define the Elements in the XML Code==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The definition for the element is the same as any bitmap definition. The thing that is different is the next step.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Animlayer xml1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Define Layers Using those Elements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Take a look at line 70. The width and height tells Winamp3 how big each frame is. It will cycle through each frame automatically.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Animlayer xml2.png]]&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Alpha_Channels</id>
		<title>Modern Skin: Alpha Channels</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Alpha_Channels"/>
				<updated>2008-08-27T19:36:46Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alpha channel controls the transparency value of an element. By adjusting the alpha value of an element, you can make the element totally transparent or not transparent at all. Winamp3 blends that element with the background image if the transparency of that element is increased.&lt;br /&gt;
&lt;br /&gt;
Take a look at the two images below. Both images have a red rectangle layer on top of the Boxer skin. The red rectangle in the first image has no transparency: the result is an overlap of images. The second image uses alpha channel to create some transparency: the result is the blending of the red rectangle and the Boxer skin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Layer-notblend.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; No transparency: images overlap.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Layer-blend.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Some transparency: images blend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Complex Tutorial'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Complexskin diag alpha.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In Complex Tutorial, Group #2 (the second circle from the left), has blue triangle blended with the red circle. This is done through Alpha Channel. Note that the graphical asset for this group is the same as the ones used to demonstrate Layer Composition. The only difference is that we adjusted the alpha value for the triangle in this section. Here's the process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lets go through in detail how do to each step:&lt;br /&gt;
&lt;br /&gt;
==Make the Graphics: The Red Circle and Blue Triangle==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
red-circle.png &amp;amp;nbsp;&amp;amp;nbsp; [[Image:Red-circle.png]]&lt;br /&gt;
&lt;br /&gt;
triangle.png &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  [[Image:Triangle.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Define the Elements in the XML Code==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Layercomp xml.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Define Layers Using those Elements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Alpha xml1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Alpha xml2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Place the Layers in the Same Area==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Alpha xml3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Change the Alpha Value for the Triangle==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Alpha xml4.png]]&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Layer_Composition</id>
		<title>Modern Skin: Layer Composition</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Layer_Composition"/>
				<updated>2008-08-27T19:36:29Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Layer composition is the process by which several images lay on top of each other to produce a complex graphical visualization. It is similar to layers in Photoshop.&lt;br /&gt;
&lt;br /&gt;
The process is:&lt;br /&gt;
&lt;br /&gt;
#produce the images and save them in a file&lt;br /&gt;
#define an element to represent that image in your XML&lt;br /&gt;
#make a layer using that element&lt;br /&gt;
#if you put layers in same area, they will lay on top of each other based on the ordering of the xml code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Complex Tutorial'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Complexskin diag layercomp.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In Complex Tutorial, Group #1 (the first circle from the left), has blue triangle on top of the red circle. This is done through layer composition. Here's the process.&lt;br /&gt;
&lt;br /&gt;
*Make the graphics: the red circle and blue triangle.&lt;br /&gt;
*Define the elements in the XML code.&lt;br /&gt;
*Define layers using those elements.&lt;br /&gt;
*Place the layers in the same area.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lets go through in detail how do to each step:&lt;br /&gt;
&lt;br /&gt;
==Make the graphics: The Red Circle and Blue Triangle.==&lt;br /&gt;
&lt;br /&gt;
red-circle.png &amp;amp;nbsp;&amp;amp;nbsp; [[Image:Red-circle.png]]&lt;br /&gt;
&lt;br /&gt;
triangle.png &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  [[Image:Triangle.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Define the Elements in the XML Code==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Layercomp xml.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Define Layers Using those Elements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Layercomp xml2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Layercomp xml3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Place the Layers in the Same Area==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Layercomp xml4.png]]&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Non-Rect_Player</id>
		<title>Modern Skin: Non-Rect Player</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Non-Rect_Player"/>
				<updated>2008-08-27T19:36:19Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Modern Winamp skins bring forth unprecedented flexibility and power to skinning. You are no longer confined to simple rectangular shapes; in fact any shape is possible. Just take a look at these awesome examples. In addition, Winamp3 has been revamped so that any part of the user interface is skinnable.&lt;br /&gt;
&lt;br /&gt;
You should notice that while the shapes are different, the X and Y coordinate system still applies. The (0,0) coordiante starts at the upper-left corner. The x-coordinate increases at you move to the right and the y-coordinate increases as you move down.&lt;br /&gt;
&lt;br /&gt;
While the shape of the image can be anything you want, the image itself remains in rectangular form. What happens is that the back ground of the image is transparent; therefore all you see is the shape that you intend to show. To produce the complex designs that you see below, you must overlay many images on top of the each other. To do this, you must use layers. Layer composition is covered in the next section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Non-rect mad.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Non-rect boxer.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Complex Tutorial Modern Skin - The Break Down==&lt;br /&gt;
&lt;br /&gt;
Complex Tutorial Skin is composed of these parts:&lt;br /&gt;
&lt;br /&gt;
Everything from Simple Tutorial Modern Skin&lt;br /&gt;
A second container: &amp;quot;complex&amp;quot;&lt;br /&gt;
Within the &amp;quot;complex&amp;quot; container, a layout called &amp;quot;normal&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Group #1: &amp;quot;complex.circle&amp;quot; - to illustrate Layer Composition (Section 3.2)&lt;br /&gt;
* Group #2: &amp;quot;complex.circle2&amp;quot; - to illustrate Alpha Channel (Section 3.3)&lt;br /&gt;
* Group #3: &amp;quot;complex.circle3&amp;quot; - to illustrate Drawer (Section 3.6 and 4.1)&lt;br /&gt;
* Group #4: &amp;quot;complex.circle4&amp;quot; - to illustrate Animated Layer (Section 3.4)&lt;br /&gt;
* Group #5: &amp;quot;complex.circle5&amp;quot; - to illustrate Animating Skin (Section 4.2) &lt;br /&gt;
&lt;br /&gt;
Concepts such as container, layout and group were explained in Section 2. Please refer to them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Complexskin_diag.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Player.XML - Part 1: SimpleTutorialXML.xml==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you open player.xml file for the &amp;quot;Complex Tutorial&amp;quot; skin, you noticed that it has been changed from the one from &amp;quot;Simple Tutorial&amp;quot; skin. We have made changes to it to illustrate new concepts for this section. Part one of the file (line 1-7) gives a brief description of the file and tells you that the components from Simple Tutorial has been moved into a different file: SimpleTutorialXML.xml. We used an  &amp;lt;include  &amp;gt; tag to incorporate all of the Simple Tutorial's functionalities into our current skin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Complex playerxml 1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Player.XML - Part 2: Graphic Elements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Triangle-clickme.png]] [[Image:Blue-vis-layer.png]] [[Image:Yellowcircle-arrow.png]] [[Image:Background.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Blue-circle.png]] [[Image:Red-circle.png]] [[Image:Triangle.png]] [[Image:Numfont1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This are the graphics that I've used in creating complex Tutorial skin. One thing to notice is that we like to use PNG file format. Please also use that format too. The graphics files are the parts that we're going to use for our skin. The following are XML code linking graphics to elements. Element definition was covered in last section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Complex playerxml 2.png]]&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Complex_Skin</id>
		<title>Modern Skin: Complex Skin</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Complex_Skin"/>
				<updated>2008-08-27T19:36:10Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In section 3, I will show how to make a more complicated skin and teach you advanced Modern Winamp skin concepts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Complexskin diag.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Complex Tutorial Modern Skin'''&lt;br /&gt;
&lt;br /&gt;
We're going to show you how to make a simple skin like the one shown below. Download the &amp;quot;[http://media.winamp.com/5541/main/downloads/development/skinsmodern/ComplexTutorial.wal Complex Tutorial Modern Skin]&amp;quot; example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Flash.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you save the file, make sure that the type of the file is selected to &amp;quot;All Type&amp;quot; and NOT &amp;quot;Winzip&amp;quot; filetype. You should save the file into your skin subdirectory in your Winamp directory. For most people, that path is &amp;quot;C:\Program Files\Winamp\Skins&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Simpletutsave.png]]&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Relative_Positioning</id>
		<title>Modern Skin: Relative Positioning</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Relative_Positioning"/>
				<updated>2008-08-27T19:35:58Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is Relative Positioning?==&lt;br /&gt;
&lt;br /&gt;
===A. Introduction===&lt;br /&gt;
Modern Winamp skinning offers unparalleled flexibility in element placement. You're no longer restricted to specifying X&amp;amp;Y coordinates for an element. Instead, you can define the position of the element relative to your component. When the component resizes, the element will stretch or move with the component. This flexibility frees the skin designer from the hassel of retooling or redrawing the graphic assets over and over again to different size and width. Winamp will do that for you. =)&lt;br /&gt;
&lt;br /&gt;
===B. Add relativepos.xml to your SimpleTutorial ===&lt;br /&gt;
&lt;br /&gt;
For this section, I have made another XML file called &amp;quot;relativepos.xml&amp;quot; that you need to include in your SimpleTutorial skin. Download the relativepos.xml here.(Please right-click on the link and choose 'Save As...' or 'Save Link Target As...')&lt;br /&gt;
&lt;br /&gt;
Place this file in the same directory as your SimpleTutorial skin directory. For most people, the path is &amp;quot;C:\Program Files\Winamp\Skins\SimpleTutorial&amp;quot;. Add this line to your Skin.xml in SimpleTutorial:&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos_include.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is what your skin.xml should look like after the change: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos_skinxml.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RelativePos.xml==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:rpos_xmlcode1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Relativepos.xml uses elements from the SimpleTutorial skin. I am using the &amp;quot;blue-vis-layer.png&amp;quot; and &amp;quot;red-vis-layer.png&amp;quot; in the Player directory. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos xmlcode2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Blue-vis-layer.png]]&lt;br /&gt;
[[Image:Red-vis-layer.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Relative Position 1: Defining X&amp;amp;Y Coordinates==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos xmlcode3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===A. Register_autopopup=&amp;quot;1&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Before we delve into the code, I want to go over one feature. Take a look at this tag: [[Image:Rpos autopopup.png]]. When you add this tag to a groupdef, Winamp automatically wraps a container and layout around it and allow you to see the group in a separate window. This is particularly useful when you want to test the behavior of that group separate from everything else. To open that window, right click on the Main Player to bring up the menu. Go to the &amp;quot;Windows&amp;quot; submenu and you'll see the extra windows relativepos.xml has created. Open them up and try them out.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos menu.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===B. Defining X&amp;amp;Y Coordinates===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Line 11-19 defines a group with a &amp;quot;blue-vis&amp;quot; layer at the coordinate of (20,30). This is probably what you've been doing all along. As you can see, that the blue-vis layer's location doesn't change if you resize the window. The position is fixed. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos1 small.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Small size window&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos1 big.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Large size window; Blue-vis layer position did not change&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I encourage you to play with this XML file. If you change the X&amp;amp;Y coordinates on line 14 to (-20, -30), your blue-vis layer will disappear. The reason is that the coordinate specified will be outside the context of your component window and therefore will not be rendered. &lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos1 left.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Relative Position 2: Specify the Height and Width==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos xmlcode4.png]]&lt;br /&gt;
&lt;br /&gt;
In group 2, we're defining the height and width of the blus-vis layer that is larger than the image. When you do that, Winamp will stretch the image to that size. Likewise, if you specify height or width that is smaller than the image, Winamp will shrink the image to fit to that size. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos2 1.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; RPOS1 window: Height and Width not specified&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos2 2.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;* RPOS2 window: Height and Width defined&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Relative Position 3: RelatX &amp;amp; Negative X Coordinate==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos xmlcode5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Line 30-39 defines a group with a &amp;quot;blue-vis&amp;quot; layer at the coordinate of (-120,30). Notice that we have an extra line on line 34: &amp;quot;relatx=1&amp;quot;. By setting relatx to 1, you're telling Winamp to start the x-coordinate from the right edge of the window. Note that the X-Coordinate should be negative; otherwise the blue-vis layer will not show up.&lt;br /&gt;
&lt;br /&gt;
This is a convenient feature if you want an element stick to a specific distance relative to the right edge of the window. Notice that when I resize the window, the blue-vis layer stays fixed distance relative to the right edge of the window. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos3 small.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; RPOS3 window with relatx=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos3 big.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; RPOS3 window with relatx=1: window resized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos3 right.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; RPOS3 window with relatx=1; coordinate (20,20)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Relative Position 4: RelatY &amp;amp; Negative Y Coordinate==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos xmlcode6.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Line 40-49 defines a group with a &amp;quot;blue-vis&amp;quot; layer at the coordinate of (20,-80). Notice theline on line 44: &amp;quot;relaty=1&amp;quot;. By setting relaty to 1, you're telling Winamp to start the y-coordinate from the bottom edge of the window. Note that the Y-Coordinate should be negative; otherwise the blue-vis layer will not show up.&lt;br /&gt;
&lt;br /&gt;
This is a convenient feature if you want an element stick to a specific distance relative to the bottom edge of the window. Notice that when I resize the window, the blue-vis layer stays fixed distance relative to the bottom edge of the window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos4 small.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; RPOS4 window with relaty=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos4 big.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; RPOS4 window with relaty=1: window resized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos4 bottom.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; RPOS4 window with relaty=1: coordinate (20,50)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Relative Position 5: Relatw and RelatH==&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos xmlcode7.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Line 50-72 demonstrate the use of relath and relatw. From the beginning of this section we know that by defining height and width different from the original image size, Winamp will automatically stretch or shrink the image to fit that size constraint. What is powerful (and awesome) about modern skins is that you can also tell Winamp to adjust the height and width of an element with respect to the right and bottom edge of the window. This is accomplished through &amp;quot;relath&amp;quot; and &amp;quot;relatw&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In our example, we defined a blue-vis group (lines 52-60) and a red-vis group that encompasses the blue-vis group (lines 63-72). The blue-vis group is defined with no preset x, y, h or w because we will define them on line 71.&lt;br /&gt;
&lt;br /&gt;
The magic happens on line 71. With relath set to 1 and relatw set to 1, we're telling Winamp to stretch or shrink the blue-vis layer so that it is 50 pixels away from the right and bottom edge of the window. The blue-vis layer is stretched and the distance is maintained as I expanded the size of the window. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos5 small.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; RPOS5 window with relath=1 and relatw=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Rpos5 big.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;RPOS5 window with relath=1 and relatw=1; window resized; Blue-vis layer stretched&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Group</id>
		<title>Modern Skin: Group</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Group"/>
				<updated>2008-08-27T19:35:44Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is a Group?==&lt;br /&gt;
&lt;br /&gt;
A group is a set of objects that can be referred to and manipulated as a whole. First must defined by a &amp;lt;groupdef&amp;gt; tag, then located with a &amp;lt;group&amp;gt; tag. Group is an important concept to understand because a group is such a versatile object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Tutorial: Using groups==&lt;br /&gt;
&lt;br /&gt;
Let's go back to our &amp;quot;Simple Tutorial&amp;quot; example. As you recall, we have two groups defined: &amp;quot;player.normal.playbuttons&amp;quot; and &amp;quot;play.normal&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Simpleskin_diag.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let's take a look at the code: (player.xml)&lt;br /&gt;
&lt;br /&gt;
[[Image:Playerxmlcode6.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If we change line 113 and 114: change the x and y coordinates of the group objects, their positions are reversed. This is a simple change and much more convinient than changing the position of each element independently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Simpleskin_reversedxml.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Simpleskin_reversed.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Tutorial: Playback Buttons Group Definition==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:playerxmlcode4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:playbackgroup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On lines 19-64 you'll see our group definition of the playback buttons. This section contains only the definition of the group or, in another words, it defines which objects are in the group. Once the group is defined, you can use it later as we will see later. Let's go over the elements inside the group.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:playbackexpl.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Tutorial: Song File Info &amp;amp; Visualization Group Definition==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:playerxmlcode5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SongInfo group is another group definition just like the Playback Buttons group. As you can see that the elements defined inside this group is different from the previous one. In this example, we're using elements other than buttons. We're using the layer to set the background color of two areas. A layer is basically an image. Layers can overlay on top of each other. It is similar to a layer in Adobe Photoshop. &amp;quot;Songinfo&amp;quot; and &amp;quot;infoline&amp;quot; are text objects displaying information stored within Winamp3 runtime variables.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:songinfogroup.png]]&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Simple_Skin_Tutorial_(Continued)</id>
		<title>Modern Skin: Simple Skin Tutorial (Continued)</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Simple_Skin_Tutorial_(Continued)"/>
				<updated>2008-08-27T19:35:23Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Simple Skin Example'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Simpleskin_diag.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We will begin with a simple skin example. I'll give you the essential parts of the skin. In the next section, I'll demonstrate important Winamp3 concepts using this skin. The topics that I'll go over are:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Winamp3 Skin Directory Hierarchy==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Dirhierarchy.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''a) Skin Hierarchy'''&lt;br /&gt;
&lt;br /&gt;
Before you start playing with a skin, you have to know where everything is. Above is a picture of the Winamp directory. If you open that directory (&amp;quot;C:\Program Files\Winamp&amp;quot;) with Windows Explorer, it should look pretty similar. The section in blue is the &amp;quot;Skin&amp;quot; directory and the directory that we care about. Within the &amp;quot;Skin&amp;quot; directory, there are sub-directories and files. Each sub-directory and WAL files are a skin. WAL is Winamp3 skin format. Next section talks about how to manipulate it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''b) .WAL files'''&lt;br /&gt;
&lt;br /&gt;
Instead of a directory for a skin, you may see only one file with a .WAL extension. Don't worry. WAL (Winamp Abstraction Layer) is Winamp3 skin format. It is basically a zipped file of the skin directory. We do this to save space and to make it easier to distribute the skins. To make changes to that skin, do the following:&lt;br /&gt;
&lt;br /&gt;
#Rename the .WAL file to .ZIP&lt;br /&gt;
#Open that file with Winzip. If you don't have it, you can get it here. [www.winzip.com]&lt;br /&gt;
#Unzip the content into a directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''c) Required file'''&lt;br /&gt;
&lt;br /&gt;
Lets take a look at what's in a skin directory. We'll use the &amp;quot;Simple Tutorial&amp;quot; as an example. Keep in mind that other skins may contain other files and directories that are not shown. What we're showing here is the bare minimum example.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Simple Tutorial&amp;quot; skin directory, there are three items: 1) Skin.xml file, 2) &amp;quot;Player&amp;quot; directory, 3) &amp;quot;XML&amp;quot; directory. The only required file for a skin is the Skin.xml file. It is the file that the Winamp3 skin engine looks for. You can say that it is the entry point for the skin. From that file, all the fun starts. =) I will dissect that file later on.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Player&amp;quot; directory contains all the graphics files for the skin. The files are in .PNG (Portable Network Graphics) format. The &amp;quot;XML&amp;quot; directory is usually where all the XML files are located. Because our skin is relatively simple, there is only one file in that directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''d) #include in XML files'''&lt;br /&gt;
One more thing I want to go over is the '''&amp;lt;include file=&amp;quot;xml/player.xml&amp;quot;/ &amp;gt;''' tag. When the Winamp skinning engine parses this XML file and encounters that tag, it grabs the file specified within that tag and pastes whatever code is inside that file into the current file. So in this example, we're looking at the skin.xml file. The skinning engine will grab player.xml file in the xml subdirectory and paste whatever code that is inside player.xml into skin.xml. This process is recursive. This means that if there's any include file tag inside player.xml, it will get those code also.&lt;br /&gt;
&lt;br /&gt;
==Simple Tutorial Skin - Graphics Files==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These are the graphics that I've used in creating Simple Tutorial skin. One thing to notice is that we like to use PNG file format. Please also use that format too. The graphics files are the parts that we're going to use for our skin. We will define them as elements and link them into our XML code later in order to use them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Tutorial Skin - skin.xml==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Skinxmlcode.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The required file for any skin is the Skin.xml file. You can locate this file in your &amp;quot;C:\Program Files\Winamp\Skins\Simple Tutorial&amp;quot; directory. The content of that file is posted above. I'll go over all the parts. I have listed line numbers on the left and code on the right. You can open your version and follow along.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''a) &amp;lt;?XML&amp;gt;''' (line 1)&lt;br /&gt;
&lt;br /&gt;
[[Image:Xml_version.png]]&lt;br /&gt;
&lt;br /&gt;
The first line of the Skin.xml file should be the line shown above. The line identifies Skin.xml as an XML file. It is important to remember that you need that line only once in Skin.xml. If you divide your xml into several files, do not include that line in other xml files. Subsequent xml files will be pasted into Skin.xml file by the skin engine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''b) &amp;lt;WinampAbstractionLayer&amp;gt;''' (line 3)&lt;br /&gt;
&lt;br /&gt;
[[Image:Winampabstraction.png]]&lt;br /&gt;
&lt;br /&gt;
The WinampAbstractionLayer tag is used to specify which skin version you're following. The version that &amp;quot;Simple Tutorial&amp;quot; skin is made for is 0.8. This tag is used to track compatability. We will keep compatability as long as possible. But sometimes when we introduce a new funcitonality and change an existing one, compatability is broken and we will increment the version number. You will need to update the skin to conform to the new standard. If the skin engine finds your version number is different than the current version, you will see the warning below. However, this does not mean that your skin will no longer work. If functionality that has been changed is not implemented in your skin, you skin will continue to function.&lt;br /&gt;
&lt;br /&gt;
[[Image:Skinswitch_warning.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''c) &amp;lt;skininfo&amp;gt;''' section (line 4-12)&lt;br /&gt;
&lt;br /&gt;
[[Image:Skininfo.png]]&lt;br /&gt;
&lt;br /&gt;
The tags are all pretty self-explanatory. But lets go over them anyway for fun.&lt;br /&gt;
&lt;br /&gt;
[[Image:Skininfoexpl.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''d) &amp;lt;include&amp;gt; section''' (line 13-20) &lt;br /&gt;
&lt;br /&gt;
I have discussed &amp;lt;include&amp;gt; functionality above. Note that we're borrowing skins from the Default skin. The only component's appearance we're overriding is the main player. The specification for that is in player.xml (line 14). We'll go over that file next.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Tutorial Skin - player.xml==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''a) Name and comments''' (line 1-3)&lt;br /&gt;
&lt;br /&gt;
[[Image:Playerxmlcode1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first section of your XML should be a comment section that briefly explains the functionalities of the file. This way it will be easy for others to read and understand your code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''b) Elements definition''' (line 4-18)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Playerxmlcode3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This section defines all the elements in your skin. This is the part that links the graphics to a &amp;quot;bitmap id&amp;quot; that other XML code can refer to. For example, line 11 links a bitmap id, &amp;quot;'''blue-player.button.previous'''&amp;quot;, to a graphics component in &amp;quot;'''player/blue/blue-previous.png'''&amp;quot; file. That bitmap id is also linked to a gamma group called &amp;quot;'''Buttons'''&amp;quot;. After linking that object to a gamma group, user can adjust the color variance of that object in the preference menu. Therefore, even if that object is blue right now, you can change it so that it'll appear to be a different color.&lt;br /&gt;
&lt;br /&gt;
As your skin becomes more complex, you will have many elements defined in your skin. It will be useful to break the &amp;lt;Elements&amp;gt; definitions into different files. Typically, one would define all the elements in each component in separate files. For example, elements in the main player will be in &amp;quot;'''player-elements.xml'''&amp;quot; and elements in the playlist will be in &amp;quot;'''pledit-elements.xml'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''c) Playback Buttons Group Definition''' (line 19-64)&lt;br /&gt;
&lt;br /&gt;
[[Image:Playerxmlcode4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sometime a group of objects naturally belong together or are located next to each other. If you move one of them, chances are that you'll be moving the rest of them. The playback buttons is an excellent example. If you want to change the location of those button, rather than moving each element independently, you can define a group and move the group together. A group is a set of objects that can be referred to and manipulated as a whole. It is a like a bag to throw your stuff into. It first must be defined by a &amp;lt;groupdef&amp;gt; tag, then can be located with a &amp;lt;group&amp;gt; tag. In section 2.5, we're going to dissect it even more.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Playbackgroup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''d) Song File Information and Visualization Group Definition''' (line 65-107)&lt;br /&gt;
&lt;br /&gt;
[[Image:Playerxmlcode5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SongInfo group is another group definition just like the Playback Buttons group. As you can see that the elements defined inside this group is different from the previous one. In this example, we're using elements other than buttons. We're using the layer to set the background color of two areas. A layer is basically an image. Layers can overlay on top of each other. It is similar to a layer in Adobe Photoshop. &amp;quot;Songinfo&amp;quot; and &amp;quot;infoline&amp;quot; are text objects displaying information stored within Winamp3 runtime variables.&lt;br /&gt;
&lt;br /&gt;
[[Image:Songinfogroup.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''e) Main Window: Container and Layout''' (line 1-3)&lt;br /&gt;
&lt;br /&gt;
[[Image:Playerxmlcode6.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous sections are all about defining objects. Now we get to start using them. If you read the code, you'll see that there is a container object, a layout object and two group objects. Container is at the top of hierarchy because everything else &amp;quot;lives&amp;quot; in it. Within the container, we have defined a layout and, within the layout, we're using the groups we defined earlier.&lt;br /&gt;
&lt;br /&gt;
Container, layout and group are important concepts and we will go more in depth in subsequent sections. [[Modern_Skin:_Container|Read on...]]&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_XML_Intro</id>
		<title>Modern Skin: XML Intro</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_XML_Intro"/>
				<updated>2008-08-27T19:35:11Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this section, I will give a short introduction to XML. You may ask: what does XML have to do with Winamp? Well, XML is fully implemented in Winamp. From the skinning files to the playlist, it's all XML based. I will go over XML basics in this section. If you know XML, go ahead and skip to the [[Modern_Skin:_Simple_Skin_Tutorial_(Continued)|next section]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==So What is XML?==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XML stands for ''e'''X'''tensible '''M'''arkup '''L'''anguage'' ('''XML'''). You hear about XML everywhere. We're going to give you a quick and dirty guide to XML and its relevance to Winamp. XML is just like HTML. If you know HTML, you can pick up XML very quickly. So don't be afraid.&lt;br /&gt;
&lt;br /&gt;
HTML and XML are from the same family of what is called '''SGML''' ('''''S'''tandard '''G'''eneralized '''M'''arkup '''L'''anguage''). SGML was invented as a text-based language that can be used to '''mark up''' data - that is, add metadata - in a way that is '''self describing'''. What does this mean? Basically SGML is a way for programmers to transfer and display information. The best known application of SGML is ''HyperText Markup Language'', or '''HTML'''. HTML is a universal markup language for the display of information and the linking of different pieces of information. The idea was that any HTML document (or web page) would be presentable in any application that was capable understanding HTML (namely a '''web browser''').&lt;br /&gt;
&lt;br /&gt;
Although HTML has been incredbly successful, it's also limited in its scope: it is only intended for displaying documents in a browser. It is not particularly useful as a medium to convey information to other programs. Don't understand? Here let me give you an example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''For example'', if I want to tell everyone my name, there are many ways I can do this:&lt;br /&gt;
&lt;br /&gt;
'''a)''' I can create a text file on a computer that look like this. When I send you this text file, you can read it or write a program to parse it. By reading &amp;quot;Ken Chen&amp;quot; in the text file, you can guess that it's my name. But then again, are you sure? It's not really clear, right? Lets look at the next example.&lt;br /&gt;
&lt;br /&gt;
Ken Chen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''b)''' For the web, I can create an HTML file like this. I can put it on a web site and you can see the page in your browser. Once again, by just reading &amp;quot;Ken Chen&amp;quot; you're not really sure that it's my name.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;HTML&amp;gt;&lt;br /&gt;
   &amp;lt;HEAD&amp;gt;&amp;lt;TITLE&amp;gt;Name&amp;lt;/TITLE&amp;gt;&amp;lt;/HEAD&amp;gt;&lt;br /&gt;
   &amp;lt;BODY&amp;gt;&lt;br /&gt;
     &amp;lt;nowiki&amp;gt;&amp;lt;P&amp;gt;Ken Chen&amp;lt;/P&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
   &amp;lt;/BODY&amp;gt;&lt;br /&gt;
 &amp;lt;/HTML&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''c)''' XML is a standard for conveying information. I might create an XML file like this. Looking at this file, you can see that it looks very much like an HTML file. The style is very similar. The difference is that in XML, you can design or come up with any tag you want to convey the information you want. Reading this simple example, you can tell that my first name is Ken and my last name is Chen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Name&amp;gt;&lt;br /&gt;
   &amp;lt;First&amp;gt;Ken&amp;lt;/First&amp;gt;&lt;br /&gt;
   &amp;lt;Last&amp;gt;Chen&amp;lt;/Last&amp;gt;&lt;br /&gt;
 &amp;lt;/Name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this simple example you can see why markup language like SGML and XML are called self-describing. Looking at the data, you can easily tell that this is information about a &amp;lt;'''name'''&amp;gt; and you can see that there is data called &amp;lt;'''first'''&amp;gt; and another data called &amp;lt;'''last'''&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''d)''' You could write a shorter version of the previous XML by using element attributes. like so:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Name First=&amp;quot;Ken&amp;quot; Last=&amp;quot;Chen&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and it could equate to the one in C, if the Name element had those attributes (first and last). The reason for this is that you get tired of typing open and closing tags. Once you open a tag, you can have attributes for that tag. Many Winamp3 skin XML files are in this style. Here's an example from the Default skin.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;button&lt;br /&gt;
   id=&amp;quot;Previous&amp;quot;&lt;br /&gt;
   action=&amp;quot;prev&amp;quot;&lt;br /&gt;
   x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;&lt;br /&gt;
   image=&amp;quot;player.button.previous&amp;quot;&lt;br /&gt;
   downImage=&amp;quot;player.button.previous.pressed&amp;quot;&lt;br /&gt;
   tooltip=&amp;quot;Previous&amp;quot;&lt;br /&gt;
 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==XML Hierarchy==&lt;br /&gt;
&lt;br /&gt;
The beauty of XML is that you can design whatever format you want to describe your data. The key is that you follow the XML hierarchy (we'll describe in the next section. Other than that, make sure you close the tag when you open one. (ie: make sure you have &amp;lt;/'''name'''&amp;gt; if you open a &amp;lt;'''name'''&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
XML has a hierarchy that you need to follow. This is much like the HTML code where you embed a tag within a tag. By doing that, you're creating another level in the hierarchy. Make sure you close your tags correctly. Check out this example.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Winamp Employee&amp;gt;&lt;br /&gt;
   &amp;lt;Name&amp;gt;&lt;br /&gt;
     &amp;lt;First&amp;gt;Ken&amp;lt;/First&amp;gt;&lt;br /&gt;
     &amp;lt;Last&amp;gt;Chen&amp;lt;/Last&amp;gt;&lt;br /&gt;
   &amp;lt;/Name&amp;gt;&lt;br /&gt;
   &amp;lt;Email&amp;gt;Ken@Winamp.com&amp;lt;/Email&amp;gt;&lt;br /&gt;
   &amp;lt;Location&amp;gt;San Francisco, CA&amp;lt;/Location&amp;gt;&lt;br /&gt;
 &amp;lt;/Winamp Employee&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Xml.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this example, we have &amp;lt;'''Name'''&amp;gt;, &amp;lt;'''Email'''&amp;gt; and &amp;lt;'''Location'''&amp;gt; as level 1 tags. Within the &amp;lt;'''Name'''&amp;gt; tag, we have two level 2 tags: &amp;lt;'''First'''&amp;gt; and &amp;lt;'''Last'''&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==XML &amp;amp; Winamp==&lt;br /&gt;
&lt;br /&gt;
XML is basically a way to store data. Now we've shown you what XML is, you may ask: what does that have to do with Winamp? Well, XML is fully implemented in Winamp. From the skinning files to the playlist, it's all XML based. I've gone over the basics of XML. I'll go over Winamp XML elements and dissect apart a simple skin example in the [[Modern_Skin:_Simple_Skin_Tutorial_(Continued)|next section]].&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Simple_Skin_Tutorial</id>
		<title>Modern Skin: Simple Skin Tutorial</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Simple_Skin_Tutorial"/>
				<updated>2008-08-27T19:35:01Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the next section, we will show how to make a simple skin and teach you the basic modern skinning terminologies.&lt;br /&gt;
&lt;br /&gt;
Before you start, you will need these items.&lt;br /&gt;
&lt;br /&gt;
==Simple Tutorial Skin File==&lt;br /&gt;
&lt;br /&gt;
We're going to show you how to make a simaple skin like the one shown below.  Download the [http://media.winamp.com/5541/main/downloads/development/skinsmodern/SimpleTutorial.wal &amp;quot;Simple Tutorial Skin&amp;quot; example].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Simpleskin_blue.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you save the file, make sure that the type of the file is selected to &amp;quot;All Type&amp;quot; and NOT &amp;quot;Winzip&amp;quot; filetype. You should save the file into your skin subdirectory in your Winamp 5 directory. for most people, that path is &amp;quot;C:\Program Files\Winamp\Skins&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Simpletutsave.png]]&lt;br /&gt;
&lt;br /&gt;
==Text Editing Programs==&lt;br /&gt;
You can use any text editing program to write XML and MAKI script files.&lt;br /&gt;
&lt;br /&gt;
1) The plain Windows Notepad will do. It is under &amp;quot;Start Menu&amp;quot; =&amp;gt; &amp;quot;Programs =&amp;gt; &amp;quot;Accessories =&amp;gt; &amp;quot;Notepad&amp;quot;. Here's what it looks like.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Notepad.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) However, if you intend to do alot of coding rather a quick editing, we recommed you to use something like [http://www.editplus.com/ EditPlus]. EditPlus will automatically color your HTML and XML code. The coloring makes it easier for you to see your code and find missing closing tags. Here's what it looks like.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Editplus.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can select the type of coloring by going to &amp;quot;Document&amp;quot; menu =&amp;gt; &amp;quot;Change File Type...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Editplus_changetype.png]]&lt;br /&gt;
&lt;br /&gt;
==A Graphics program==&lt;br /&gt;
We recommend [http://www.adobe.com/ Adobe Photoshop] or [http://www.corel.com/servlet/Satellite/us/en/Product/1184951547051#tabview=tab0 Paintshop Pro]. Here're some [http://forums.winamp.com/showthread.php?s=&amp;amp;threadid=93803 graphic design tutorials] if you're new to graphics.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adobe.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Psp.png]]&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Winamp_2_to_W3%2B</id>
		<title>Modern Skin: Winamp 2 to W3+</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Winamp_2_to_W3%2B"/>
				<updated>2008-08-27T19:34:45Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Transitioning from Winamp 2 and venturing into the new world of modern skinning with Winamp 3+!&lt;br /&gt;
&lt;br /&gt;
*Basically a quick start for Winamp 2 Pros&lt;br /&gt;
*Purpose&lt;br /&gt;
**Explain how has the skinning process fundamentally changed from Winamp 2&lt;br /&gt;
**Difference in the engine and philosophy&lt;br /&gt;
*Highlighting the key areas to consider and emphasizing the new dynamic nature of the player.&lt;br /&gt;
*Include/Link to: an overview of new components with the new Winamp3. Maybe doing a comprehensive list of all the Components (top to bottom) would be helpful.&lt;br /&gt;
*Maybe even a definition/glossary of all the components along with a detailed outline of the functionality of each component would also come in handy. Perhaps a FAQ. An example would be a definition of what the &amp;quot;Thinger&amp;quot; is and what it functionality is and maybe even to go so far as to what it's limitations are.&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/Modern_Skin:_Intro</id>
		<title>Modern Skin: Intro</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/Modern_Skin:_Intro"/>
				<updated>2008-08-27T19:34:05Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating a Modern Skin --&amp;gt; [[Modern Skin: Intro|Intro]] --&amp;gt; [[Modern Skin: Winamp 2 to W3+|Winamp 2 to Winamp 3+]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial|Simple Skin Tutorial]] --&amp;gt; [[Modern Skin: XML Intro|XML Intro]] --&amp;gt; [[Modern Skin: Simple Skin Tutorial (Continued)|Simple Skin Tutorial (Continued)]] --&amp;gt; [[Modern Skin: Container| Container]] --&amp;gt; [[Modern Skin: Group|Group]] --&amp;gt; [[Modern Skin: Relative Positioning| Relative Positioning]] --&amp;gt; [[Modern Skin: Complex Skin|Complex Skin]] --&amp;gt; [[Modern Skin: Non-Rect Player| Non-Rect Player]] --&amp;gt; [[Modern Skin: Layer Composition| Layer Composition]] --&amp;gt; [[Modern Skin: Alpha Channels| Alpha Channels]] --&amp;gt; [[Modern Skin: Animatedlayer|Animatedlayer]] --&amp;gt; [[Modern Skin: Snap Points|Snap Points]] --&amp;gt; [[Modern Skin: Drawers|Drawers]] --&amp;gt; [[Modern Skin: Skin Scripting| Skin Scripting]] --&amp;gt; [[Modern Skin: Drawer Scripting| Drawer Scripting]] --&amp;gt; [[Modern Skin: Animating a Skin|Animating a Skin]] --&amp;gt; [[Modern Skin: Maki Overview| Maki Overview]] --&amp;gt; [[Main_Page#Glossary_of_Terms|Glossary]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Making Modern Skins==&lt;br /&gt;
Modern skins are skins that adhere to the Winamp 3+ skin model. Modern (aka freeform) skins offer authors a tremendous amount of flexibility by allowing authors to change the player's shape, size, layout, and function. Learn how to create a modern skin for Winamp! We'll show you the pipeline from beginning to end. To get started, use the links to the left to navigate, or download the PDF at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Why Winamp 3/Winamp5?==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Skins only consist of static bitmap replacement. The app cannot be deployed with radically different interfaces or behaviors.&lt;br /&gt;
&lt;br /&gt;
Plugins cannot publish interfaces to each other, thereby limiting their ability to leverage one another. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Winamp3.png]]&lt;br /&gt;
&lt;br /&gt;
Winamp 2.x was not built with portability in mind.&lt;br /&gt;
&lt;br /&gt;
'''Features of Winamp 3+'''&lt;br /&gt;
&lt;br /&gt;
Skin engine:&lt;br /&gt;
*XML-based format&lt;br /&gt;
*freeform&lt;br /&gt;
*scripting&lt;br /&gt;
*emulation of Winamp 2.x skins&lt;br /&gt;
*on-the-fly bilinear filtered scaling of any winamp piece&lt;br /&gt;
*animations, realtime transformations&lt;br /&gt;
*alpha transparency&lt;br /&gt;
*color correction of any skin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Component architecture:&lt;br /&gt;
*allows any kind of plugin you can think of&lt;br /&gt;
*components become part of the system and extend it&lt;br /&gt;
*components can interoperate without even knowing who they are talking to&lt;br /&gt;
*component windows and interfaces are skinnable&lt;br /&gt;
*components are built with the same C++ library as the main product for consistency and to enable developers to quickly create powerful addons&lt;br /&gt;
*using a dispatchable interface to make interaction of multiple plugin versions easier&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New audio playback system:&lt;br /&gt;
*corssfading&lt;br /&gt;
*&amp;quot;dsp&amp;quot; plugins can be stacked&lt;br /&gt;
*gapless output (even for cd playback)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Playlist:&lt;br /&gt;
*XML-based format&lt;br /&gt;
*ability to queue up files in playlist out of order (hold down alt)&lt;br /&gt;
*Media library&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Database:&lt;br /&gt;
*caching&lt;br /&gt;
*queries&lt;br /&gt;
*multiple indexes and views on tables&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Table4.png</id>
		<title>File:Table4.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Table4.png"/>
				<updated>2008-08-27T19:17:48Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Table3.png</id>
		<title>File:Table3.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Table3.png"/>
				<updated>2008-08-27T19:17:41Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Table2.png</id>
		<title>File:Table2.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Table2.png"/>
				<updated>2008-08-27T19:17:34Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Table1.png</id>
		<title>File:Table1.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Table1.png"/>
				<updated>2008-08-27T19:17:23Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_animxml.png</id>
		<title>File:Scripting animxml.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_animxml.png"/>
				<updated>2008-08-27T18:47:23Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_drawerxml.png</id>
		<title>File:Scripting drawerxml.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_drawerxml.png"/>
				<updated>2008-08-27T18:31:58Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_dos.png</id>
		<title>File:Scripting dos.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_dos.png"/>
				<updated>2008-08-27T18:31:10Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_dir.png</id>
		<title>File:Scripting dir.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_dir.png"/>
				<updated>2008-08-27T18:24:48Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:MAKI_Script_Organization.png</id>
		<title>File:MAKI Script Organization.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:MAKI_Script_Organization.png"/>
				<updated>2008-08-27T18:17:22Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_animmaki6.png</id>
		<title>File:Scripting animmaki6.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_animmaki6.png"/>
				<updated>2008-08-27T18:12:13Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_animmaki5.png</id>
		<title>File:Scripting animmaki5.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_animmaki5.png"/>
				<updated>2008-08-27T18:12:05Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_animmaki4.png</id>
		<title>File:Scripting animmaki4.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_animmaki4.png"/>
				<updated>2008-08-27T18:11:58Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_animmaki3.png</id>
		<title>File:Scripting animmaki3.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_animmaki3.png"/>
				<updated>2008-08-27T18:11:37Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_animmaki2.png</id>
		<title>File:Scripting animmaki2.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_animmaki2.png"/>
				<updated>2008-08-27T18:09:13Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_animmaki1.png</id>
		<title>File:Scripting animmaki1.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_animmaki1.png"/>
				<updated>2008-08-27T18:09:07Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_trianglemaki6.png</id>
		<title>File:Scripting trianglemaki6.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_trianglemaki6.png"/>
				<updated>2008-08-27T18:07:54Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_trianglemaki5.png</id>
		<title>File:Scripting trianglemaki5.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_trianglemaki5.png"/>
				<updated>2008-08-27T18:07:46Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_trianglemaki4.png</id>
		<title>File:Scripting trianglemaki4.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_trianglemaki4.png"/>
				<updated>2008-08-27T18:07:39Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_trianglemaki3.png</id>
		<title>File:Scripting trianglemaki3.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_trianglemaki3.png"/>
				<updated>2008-08-27T18:07:32Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_trianglemaki2.png</id>
		<title>File:Scripting trianglemaki2.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_trianglemaki2.png"/>
				<updated>2008-08-27T18:07:24Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Scripting_trianglemaki1.png</id>
		<title>File:Scripting trianglemaki1.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Scripting_trianglemaki1.png"/>
				<updated>2008-08-27T18:07:10Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	<entry>
		<id>http://wiki.winamp.com/wiki/File:Drawer_xml1.png</id>
		<title>File:Drawer xml1.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.winamp.com/wiki/File:Drawer_xml1.png"/>
				<updated>2008-08-27T18:04:47Z</updated>
		
		<summary type="html">&lt;p&gt;Wahdahtahdammie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wahdahtahdammie</name></author>	</entry>

	</feed>