Theater View Skinning Tutorial: Difference between revisions

From wiki.jriver.com
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
<p ><u>Based</u> on this post by LanceD:
Based on this post by LanceD: http://yabb.jriver.com/interact/index.php?topic=34639.0
http://yabb.jriver.com/interact/index.php?topic=34639.0 </p>


==Introduction==
Theater View Skins are stored under the MEDIA CENTER install path:
FULL SKINS\<Skin Name>
If the default installation path is used (c:\Program Files\J River\Media Center\), the Noire skin would be located in:
c:\Program Files\J River\Media Center\Full Skins\Noire


Skins may either be standalone, or may use a base skin, and apply their own customization to that skin. The default skin “Noire” used a base skin named “Shared” for most of its elements, and applies only customisations to achieve its own look. Note that the “Shared” skin is defined as a base skin, and does not appear as a selectable Theater View skin within MEDIA CENTER.
<p >This is a work in progress, and is not complete!</p>


Skins support both relative and absolute paths, relative paths are highly recommended.
<p >&nbsp;</p>


<p ><b><u><span style='font-size:18.0pt'>Introduction</span></u></b></p>


==Files & Folders==
<p >Theater View Skins are stored under the MEDIA CENTER
install path:</p>


Typical Files and Folders that may be found in a Theater View skin:
<p style='text-indent:36.0pt'>FULL SKINS\&lt;Skin Name&gt;</p>


*'''Animation (Folder)'''
<p >If the default installation path is used (c:\Program
:'''Background.png''': Specifies the background animation picture for theater view. (By default, this is the bouncing MEDIA CENTER logo)
Files\J River\Media Center\), the Noire skin would be located in:</p>
*'''Background.png'''
:The skin's 'wallpaper'. It’s in all the screens and sub screens, so if you have images that you don’t want in every screen, don’t include them in the background.png. You can do that later.


*'''Buttons (Folder)'''
<p style='text-indent:36.0pt'>c:\Program Files\J River\Media
:'''Button.png''': These are the buttons on the main screen, and on the left hand side of the other screens.
Center\Full Skins\Noire</p>
:There are six images that make up Button.png. You need to alternate three ‘unselected’ buttons and three ‘selected’ buttons. I haven’t really played with them enough to know why there are three of each. Obviously there are different categories of button. Play with it, and post your findings.


*'''Dialog (Folder)'''
<p >&nbsp;</p>
:'''DialogBack.png''': The background image for the pop-up dialog boxes (e.g. The confirmation screen when exiting Theater View)
:'''DisableOverlay.png''': <<unknown>>


*'''List (Folder)'''
<p >Skins may either be standalone, or may use a base skin,
:'''BackThumb.png''' : Self explanatory, it’s the ‘back button’.
and apply their own customization to that skin. The default skin “Noire” used a
:'''Check.png''': Two images in one .png file. Unchecked is on the left, checked is on the right.
base skin named “Shared” for most of its elements, and applies only
:'''FolderThumb.png''': in ‘icon view’ it represents a folder.
customisations to achieve its own look. Note that the “Shared” skin is defined
:'''ListBackground.png''': in ‘list’ view, it’s the unselected (left) and selected (right) states of each list item.
as a ''base'' skin, and does not appear as a selectable Theater View skin
:'''NoThumb.png''': it’s what shows up when there’s no image information in the db for the specific cd or video.
within MEDIA CENTER.</p>
:'''PlayOverlay.png''': The ‘play’ triangle that tells you when something is playing.
:'''ThumbBackground.png''': This is another two-images-in-one. It’s what’s behind the CD or videos in your library in ‘icon’ view.


*'''Main.xml'''
<p >&nbsp;</p>
:Defines the layout and graphics required to make a skin.


*'''Menu (Folder)'''
<p >Skins support both relative and absolute paths, relative
:'''MenuBackground.png''': This is the submenu of ‘Buttons’ in all but the main screen. So, when you select ‘Controls’ in the audio or now playing screens, this is the background for the resulting menu. It’s safest to just fill it with a color that blends in with the background.png.
paths are highly recommended.</p>
:'''MenuItem.png''': This is the button that’s used in the submenus mentioned above. It’s just a unselected / selected image.


*'''Pictures (Folder)'''
<p >&nbsp;</p>
:'''Audio.png''': Picture for the “Audio” menu selection.
:'''CD & DVD.png''': Picture for the “CD & DVD” menu selection.
:'''Generic.png''': Picture for menu selections without a specific image.
:'''Images.png''': Picture for the “Images” menu selection.
:'''LocationBackground.png''': All of the pre-installed skins use this as a top-border. The system time and location sit inside here. YOU DON’T HAVE TO USE THIS! It’s just an image. You can include it or not.
:'''News.png''': Picture for the “News” menu selection.
:'''Playing Now.png''': Picture for the “Playing Now” menu selection.
:'''Playlist.png''': Picture for the “Playlist” menu selection.
:'''TV.png''': Picture for the “TV” menu selection.
:'''Video.png''': Picture for the “Video” menu selection.
:'''Weather.png''': Picture for the “Weather” menu selection.


*'''Player Controls (Folder)'''
<p >&nbsp;</p>
:'''Back.png, ButtonBackground.png, Fullscreen.png, Home.png, Next.png
:Play.png, Previous.png, VolumeDown.png, VolumeMute.png, VolumeUp.png'''
:Each of these images corresponds to the similarly named menu selection.


*'''Scroll (Folder)'''
<p ><b><u><span style='font-size:12.0pt'>Files &amp; Folders</span></u></b></p>
:'''Down.png''': The “more available below” indicator/button on a scroll bar.
:'''Handle.png''': The position indicator / “grab” handle on a scroll bar.
:'''Up.png''': The “more available above” indicator/button on a scroll bar.


*'''Search (Folder)'''
<p >&nbsp;</p>
:'''LetterBackground.png''': The background tile for individual letters when the search pane is selected.


*Sounds (Folder)
<p >Typical Files and Folders that may be found in a Theater
:'''Back.wav''': The sound played when you go back through the menu structure.
View skin:</p>
:'''Enter.wav''': The sound played when Enter is pressed.
:'''Forward.wav''': The sound played when going forward through the menu structure.
:'''Invalid.wav''': The sound played when an invalid action is attempted.
:'''Select.wav''': The sound played when something is selected.


<p >&nbsp;</p>


<p style='margin-left:36.0pt'><b>Animation (Folder):</b></p>


<p style='margin-left:36.0pt;text-indent:36.0pt'><b>Background.png</b>:
Specifies the background animation picture for theater view. (By default, this
is the bouncing MEDIA CENTER logo)</p>


<p style='margin-left:36.0pt'>                </p>


==Main.xml==
<p style='margin-left:36.0pt'><b>Background.png</b>: It’s
the wallpaper. It’s in all the screens and sub screens, so if you have images
that you don’t want in every screen, don’t include them in the background.png.
You can do that later.</p>


=== Header ===
<p style='margin-left:36.0pt'>&nbsp;</p>
<br>
<MJFS version="2.3" base="0" >
:MJFS Version=”2.3” : The base version of the MEDIA CENTER Theater View rendering engine required for the skin.
:Base=”0” : Is this skin a base skin (0=no, 1=yes) – used to indicate if this skin is displayed as a Theater View skin within MEDIA CENTER.


===Skin Information===
<p style='margin-left:36.0pt'><b>Buttons (Folder)</b>:<b> </b></p>


<SKIN Name="Blue too" Author="jmone" WebSite="" BaseSkin="..\Shared\Base 1.xml" />
<p style='margin-left:72.0pt'><b>Button.png</b>: These are
:SKIN Name="Blue too" : The name of the skin.
the buttons on the main screen, and on the left hand side of the other screens.
:Author="jmone" : Who designed the skin
</p>
:WebSite="" : The Author’s website
:BaseSkin="..\Shared\Base 1.xml" : What this skin uses as its base skin, for elements not specified by the current skin.


===Animation===
<p style='margin-left:72.0pt'>There are six images that make
<ANIMATION>
up Button.png. You need to alternate three ‘unselected’ buttons and three
‘selected’ buttons. I haven’t really played with them enough to know why there
are three of each. Obviously there are different categories of button. Play
with it, and post your findings. </p>


:<Background Bitmap="..\Shared\Animation\Background.png" Alpha="100" Mode="1" />
<p style='margin-left:36.0pt'>&nbsp;</p>


</ANIMATION>
<p style='margin-left:36.0pt'><b>Dialog (Folder):</b></p>
:This section defines the background animation. At this point the only known option here is a background picture.
:<Background Bitmap="..\Shared\Animation\Background.png" Alpha="100" Mode="1" />
::Background Bitmap="..\Shared\Animation\Background.png": Specifies the location where the background picture can be found.
::Alpha="100" : Specifies the transparency of the background image. (0= not visible, 100= opaque)
::Mode="1" : Specifies the type of animation to be applied.


===Layout===
<p style='margin-left:36.0pt'>                <b>DialogBack.png:</b>
The background image for the pop-up dialog boxes (e.g. The confirmation screen
when exiting Theater View)</p>


<LAYOUT>
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>DisableOverlay.png:
</b>&lt;&lt;unknown&gt;&gt;</p>


::<<-- SNIPPED -->>
<p style='margin-left:36.0pt'>&nbsp;</p>


</LAYOUT>
<p style='margin-left:36.0pt'><b>List (Folder):</b></p>
:The layout section contains all the layout components required to define the layout of the skin. It does not contain information relating to images, rather it defines the structure of a skin.


===Layout Sections===
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>BackThumb.png</b>
: Self explanatory, it’s the ‘back button’.</p>


<LAYOUT>
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>Check.png</b>:
:<Layout Name="Root" Location="" >
Two images in one .png file. Unchecked is on the left, checked is on the right.</p>
::<!-- Navigation area -->
::<Item Name="Navigation" Placement="Left" Size="[Overscan Left] + 200" />
::<Item Name="Navigation" Placement="Top" Size="[Overscan Top] + 150" />
::<Item Name="Navigation" Placement="Right" Size="[Overscan Right]" />
::<Item Name="Navigation" Placement="Bottom" Size="[Overscan Bottom] + 10" />
::<Item Name="Navigation" Placement="CenterX" Size="3 * [Button Width]" Crop="5%" />
:</Layout>
</LAYOUT>
:Layout Name="Root" : The name of the particular layout component
:Location="" : The location of the component, with regard to the List areas (eg: Playing Now, Audio, Video, All,... more explanation required)
:<Item Name="Navigation" Placement="Left" Size="[Overscan Left] + 200" />


This defines the
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>FolderThumb.png</b>:
in ‘icon view’ it represents a folder.</p>


===Buttons===
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>ListBackground.png</b>:
in ‘list’ view, it’s the unselected (left) and selected (right) states of each
list item.</p>


<BUTTONS>
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>NoThumb.png</b>:
:<Position Rect="0.9,8.0,22.5,76" NoListRect="35,10,65,90" PlayingNowRect="0.9,8.0,22.5,50.0" ButtonVerticalSpacing="8" Alignment="1" NoListAlignment="0" />
it’s what shows up when there’s no image information in the db for the specific
:<Image Bitmap="Buttons\Button.png" Columns="26,?-Flex,26" Rows="15,?-Flex,19" InternalMargins="10,6,10,12" />
cd or video.</p>
:<Text TextColor="FFFFFF" SelectedTextColor="FFC32F" Capitalization="0" />
</BUTTONS>
:Rectangles: these define where and how big the buttons are displayed in each of the screens.
:The coordinates are percentages of the screen. So for the Rect property the upper left corner is 0.9% of the screen width from the left and 8.0% of the screen height from the top. The lower left corner is 22.5% of the screen width from the left and 76% of the screen height from the top.
:NoListRect : The button area on any screen that doesn’t display a list (pretty much the main screen)
:PlayingNowRect : Where and how are the buttons displayed on the Playing Now screen.
:Rect : The button area on all the other screens.
:ButtonVerticalSpacing : The space between the buttons.
:Alignment : This is how the buttons are aligned in the rectangle (same is true for NoListAlignment). It is NOT how the text is aligned in the button (text is always centered. You can’t change that at this point).
:Columns="26,?-Flex,26" : This means that the top and bottom 26 pixels of the button.png are kept as they are, and whatever is in between is stretched or shrunk to fit the rectangle. The Rows property is handled the same way.
:InternalMargins: These are the margins for the text displayed in the buttons. So, if your text is too big or small within the buttons, this is where to go.
:TextColor, SelectedTextColor: You don’t have any say over the font, but you do get to choose the color.
:Capitalization: self explanatory…


===Picture in Picture===
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>PlayOverlay.png</b>:
Yep! It’s the ‘play’ triangle that tells you when something is playing.</p>


<PIP Rect="1.2,76.5,22.2,97.5" PlayingNowRect="0.9,51.0,99.5,99.5" />
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>ThumbBackground.png</b>:
:PIP (Picture in Picture): the rectangle taken up by visualizations or video when not in full screen. You can see the difference in PlayingNowRect and Rect just by switching between the Audio screen and the Playing now screen. I don’t need a half-screen sized visualization in the Playing Now window, so I resize it to the same size as the other windows.
This is another two-images-in-one. It’s what’s behind the CD or videos in your
library in ‘icon’ view.</p>


===List===
<p style='margin-left:36.0pt'>&nbsp;</p>


<LIST>
<p style='margin-left:36.0pt'><b>Main.xml:</b></p>
:<Position Rect="23.4,8.0,99.5,99.5" PlayingNowRect="23.4,8.0,99.5,50.0" ItemsRect="0,0,100,100" ImageRect="1,1,99,99" ImageWithTextRect="1,1,99,82" TextRect="1,84,99,98" />
:<Text TextColor="FFFFFF" SelectedTextColor="FFC32F" Capitalization="0"/>
:<ThumbBackground Bitmap="List\ThumbBackground.png" Columns="10,?-Flex,10" Rows="10,?-Flex,10" InternalMargins="6,6,6,6" />
:<ListBackground Bitmap="List\ListBackground.png" Columns="10,?-Flex,10" Rows="10,?-Flex,10" InternalMargins="6,6,6,6" />
:<NoThumb Bitmap="List\NoThumb.png" />
:<BackThumb Bitmap="List\BackThumb.png" />
:<FolderThumb Bitmap="List\FolderThumb.png" />
:<Check Bitmap="List\Check.png" ThumbRect="2,59.3,34,81.6" ListRect="95.2,0,100,100" Rows="2,?-Flex,4" Colums="2,?-Flex,3" />
:<PlayOverlay Bitmap="List\PlayOverlay.png" ThumbRect="0,60,35,95" ListRect="94,0,100,100" />
</LIST>
:List: contains the items on the right hand side of the (non main menu) screen. It’s the portion of the library that you’re looking at.
:Most of this section has already been covered, apart from:
::ItemsRect: How much of the space you’ve allotted to the list it actually takes up. Play with it to control the size of thumbnails.
::ItemsWithTextRect: This is the portion of ItemsRect taken up by the actual thumbnail without text.
::TextRect: The portion of ItemsRect that’s taken up by text.


===Sounds===
<p style='margin-left:36.0pt'>                Defines the layout
and graphics required to make a skin.</p>


<SOUNDS Select="..\Shared\Sounds\Select.wav" Enter="..\Shared\Sounds\Enter.wav" Invalid="..\Shared\Sounds\Invalid.wav" Back="..\Shared\Sounds\Back.wav" Forward="..\Shared\Sounds\Forward.wav" />
<p style='margin-left:36.0pt'>&nbsp;</p>
:What sound is played for each event (Select, enter, invalid selection, back, forward).


===Picture===
<p style='margin-left:36.0pt'><b>Menu (Folder):</b></p>


<PICTURE>
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>MenuBackground.png</b>:
:<Item Bitmap="..\Shared\Pictures\Setup.png" Location="Setup\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
This is the submenu of ‘Buttons’ in all but the main screen. So, when you
:<Item Bitmap="..\Shared\Pictures\Playlist.png" Location="Playlists\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
select ‘Controls’ in the audio or now playing screens, this is the background
:<Item Bitmap="..\Shared\Pictures\TV.png" Location="TV\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
for the resulting menu. It’s safest to just fill it with a color that blends in
:<Item Bitmap="..\Shared\Pictures\Audio.png" Location="Audio\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
with the background.png.</p>
:<Item Bitmap="..\Shared\Pictures\Images.png" Location="Images\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
:<Item Bitmap="..\Shared\Pictures\Video.png" Location="Video\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
:<Item Bitmap="..\Shared\Pictures\CD &amp; DVD.png" Location="CD &amp; DVD\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
:<Item Bitmap="..\Shared\Pictures\Playing Now.png" Location="Playing Now\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
:<Item Bitmap="Pictures\LocationBackground.png" Location="***" Rect="0.0,0.0,100,7.2" Alpha="100" Alignment="-1" />
</PICTURE>


:Pictures! Here’s where you get to display images on the skin. You can display them anywhere on any screen you want. We’ve discussed what Rect does (placement on the screen). The fun thing to play with here is Location. An asterisk ‘*’ in the path is a level in the tree. Eg:
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>MenuItem.png</b>:
This is the button that’s used in the submenus mentioned above. It’s just a
unselected / selected image. </p>


::Location="Audio\***" : This image will show up on the main screen when Audio is selected, and on each sub-level of the Audio button.
<p style='margin-left:36.0pt'>&nbsp;</p>
::Location="Audio" : This image will show up ONLY on the main screen when the Audio button is selected and on NO subsequent level.
::Location="Audio\*" : This image will show up in the audio screen, but NOT on the main screen even when the audio button is selected.
::Location="Audio\HOME" : This image will show up ONLY in the Audio menu when the HOME button is selected.


:Play with the Location property. It’s a great way to customize what images are shown in your skin.
<p style='margin-left:36.0pt'><b>Pictures (Folder)</b>:</p>


===Text===
<p style='margin-left:72.0pt'><b>Audio.png</b>: Picture for
the “Audio” menu selection.</p>


<TEXT>
<p style='margin-left:72.0pt'><b>CD &amp; DVD.png</b>:
:<Item Text="[Location]" Location="***" TextColor="FFFFFF" Rect="2.5,0.2,89.0,5.4" Capitalization="0" Alignment="0" />
Picture for the “CD &amp; DVD” menu selection.</p>
:<Item Text="[Time]" Location="***" TextColor="FFFFFF" Rect="90.0,0.2,99.0,5.4" Capitalization="0" Alignment="1" />
</TEXT>
:These two items put the location in the navigation tree and the system time on the top of the screen. At this point these are the only known fields ([Location] and [Time]) that can be used in this manner. Once again, the Rect, and Location properties can help customize your skin.


<p style='margin-left:72.0pt'><b>Generic.png</b>: Picture
for menu selections without a specific image.</p>


===Menu===
<p style='margin-left:72.0pt'><b>Images.png</b>: Picture for
<MENU>
the “Images” menu selection.</p>
:<Text TextColor="FFFFFF" SelectedTextColor="FFC32F" />
: <Background Bitmap="Menu\MenuBackground.png" Columns="8,?-Flex,8" Rows="8,?-Flex,8" />
: <Item Bitmap="Menu\MenuItem.png" Columns="36,?-Flex,36" Rows="10,?-Flex,10" />
</MENU>
:Once again, MENU is the sub-menu on some screens. You can customize everything but RECT.


<p style='margin-left:36.0pt;text-indent:36.0pt'><b>LocationBackground.png</b>:
All of the pre-installed skins use this as a top-border. The system time and
location sit inside here. YOU DON’T HAVE TO USE THIS! It’s just an image. You
can include it or not. </p>


<p style='margin-left:72.0pt'><b>News.png</b>: Picture for
the “News” menu selection.</p>


That’s pretty much the long and the short of creating a Theater View skin. A little experimentation will get you pretty familiar with the main.xml The hardest part of making a skin is creating the graphics. If you don’t have Photoshop, I’d recommend downloading the GIMP. It’s free and cross-platform. And with sites like www.gimptalk.com and www.wingimp.org, you won’t run short of tutorials.
<p style='margin-left:72.0pt'><b>Playing Now.png</b>:
Picture for the “Playing Now” menu selection.</p>

<p style='margin-left:72.0pt'><b>Playlist.png</b>: Picture
for the “Playlist” menu selection.</p>

<p style='margin-left:72.0pt'><b>TV.png</b>: Picture for the
“TV” menu selection.</p>

<p style='margin-left:72.0pt'><b>Video.png</b>: Picture for
the “Video” menu selection.</p>

<p style='margin-left:72.0pt'><b>Weather.png</b>: Picture
for the “Weather” menu selection.</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'><b>Player Controls (Folder):</b></p>

<p style='margin-left:72.0pt'><b>Back.png, ButtonBackground.png,
Fullscreen.png, Home.png, Next.png</b></p>

<p style='margin-left:72.0pt'><b>Play.png, Previous.png, VolumeDown.png,
VolumeMute.png, VolumeUp.png</b></p>

<p style='margin-left:72.0pt;text-indent:36.0pt'>Each of
these images corresponds to the similarly named menu selection.</p>

<p style='margin-left:72.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'><b>Scroll (Folder):</b></p>

<p style='margin-left:36.0pt'><b>                Down.png:</b>
The “more available below” indicator/button on a scroll bar.</p>

<p style='margin-left:36.0pt'><b>                Handle.png:</b>
The position indicator / “grab” handle on a scroll bar.</p>

<p style='margin-left:36.0pt'><b>                Up.png:</b>
The “more available above” indicator/button on a scroll bar.</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'><b>Search (Folder):</b></p>

<p style='margin-left:36.0pt'><b>                LetterBackground.png:</b>
The background tile for individual letters when the search pane is selected.</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'><b>Sounds (Folder):</b></p>

<p style='margin-left:36.0pt'>                <b>Back.wav:</b>
The sound played when you go back through the menu structure.</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>Enter.wav:</b>
The sound played when Enter is pressed.</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>Forward.wav:</b>
The sound played when going forward through the menu structure.</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>Invalid.wav:</b>
The sound played when an invalid action is attempted.</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>Select.wav:</b>
The sound played when something is selected.</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p >I put anything in the pictures folder that doesn’t belong
anywhere else. You use relative locations in the main.xml, so any image can
really go anywhere. </p>

<p >If you really wanted to, you could just replace the
existing images in a skin folder (keeping the same filenames of course) to
change the look of a skin.</p>

<p >&nbsp;</p>

<p >&nbsp;</p>

<p >Ok, so now that you know what all of the default pictures
are… Let’s take a look at the file that tells Media Center where and how to
display them.</p>

<p >&nbsp;</p>

<p ><b><u><span style='font-size:16.0pt'>Main.xml</span></u></b></p>

<p >&nbsp;</p>

<p ><b><span style='font-size:14.0pt'>''Header''</span></b></p>

<p style='margin-left:36.0pt'>''&lt;MJFS
version=&quot;2.3&quot; base=&quot;0&quot; &gt;''</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>&nbsp;</b></p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>MJFS
Version=”2.3”</b> : The base version of the MEDIA CENTER Theater View rendering
engine required for the skin.</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>Base=”0”</b>
: Is this skin a base skin (0=no, 1=yes) – used to indicate if this skin is
displayed as a Theater View skin within MEDIA CENTER.</p>

<p style='text-indent:36.0pt'>&nbsp;</p>

<p style='text-indent:36.0pt'>&nbsp;</p>

<p ><b><span style='font-size:14.0pt'>''Skin Information''</span></b></p>

<p style='margin-left:36.0pt'>''&lt;SKIN Name=&quot;Blue too&quot;
Author=&quot;jmone&quot; WebSite=&quot;&quot; BaseSkin=&quot;..\Shared\Base
1.xml&quot; /&gt;''</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>&nbsp;</b></p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>SKIN
Name=&quot;Blue too&quot;</b> : The name of the skin.</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>Author=&quot;jmone&quot;</b>
: Who designed the skin</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>WebSite=&quot;&quot;</b>
: The Author’s website</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>BaseSkin=&quot;..\Shared\Base
1.xml&quot;</b> : What this skin uses as its base skin</p>

<p >&nbsp;</p>

<p >&nbsp;</p>

<p ><b><span style='font-size:14.0pt'>''Animation''</span></b></p>

<p style='margin-left:36.0pt'>''&lt;ANIMATION&gt;''</p>

<p style='margin-left:36.0pt'>''              &lt;Background
Bitmap=&quot;..\Shared\Animation\Background.png&quot; Alpha=&quot;100&quot;
Mode=&quot;1&quot; /&gt;''</p>

<p style='margin-left:36.0pt'>''&lt;/ANIMATION&gt;''</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'>                This section
defines the background animation. At this point the only known option here is a
background picture.</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'>                ''&lt;Background
Bitmap=&quot;..\Shared\Animation\Background.png&quot; Alpha=&quot;100&quot;
Mode=&quot;1&quot; /&gt;''</p>

<p style='margin-left:36.0pt'><b>                </b></p>

<p style='margin-left:36.0pt'><b>                                Background
Bitmap=&quot;..\Shared\Animation\Background.png&quot;</b>: Specifies the
location where the background picture can be found. </p>

<p style='margin-left:36.0pt'>                                <b>Alpha=&quot;100&quot;</b>
: Specifies the transparency of the background image. (0= not visible, 100=
opaque)</p>

<p style='margin-left:72.0pt;text-indent:36.0pt'><b>Mode=&quot;1&quot;</b>
: Specifies the type of animation to be applied.</p>

<p >&nbsp;</p>

<p >&nbsp;</p>

<p ><b><span style='font-size:14.0pt'>''Layout''</span></b></p>

<p style='margin-left:36.0pt'>''&lt;LAYOUT&gt;''</p>

<p style='margin-left:36.0pt'>''              ''&lt;&lt;-- 
SNIPPED  --&gt;&gt;</p>

<p style='margin-left:36.0pt'>''&lt;/LAYOUT&gt;''</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'>The layout
section contains all the layout components required to define the <u>layout</u>
of the skin. It does not contain information relating to images, rather it
defines the structure of a skin.</p>

<p >&nbsp;</p>

<p ><b><span style='font-size:14.0pt'>''Layout Sections''</span></b></p>

<p style='margin-left:36.0pt'>&lt;LAYOUT&gt;</p>

<p style='margin-left:36.0pt'>''              &lt;Layout
Name=&quot;Root&quot; Location=&quot;&quot; &gt;''</p>

<p style='margin-left:36.0pt'>''                              &lt;!--
Navigation area --&gt;''</p>

<p style='margin-left:36.0pt'>''                              &lt;Item
Name=&quot;Navigation&quot; Placement=&quot;Left&quot; Size=&quot;[Overscan
Left] + 200&quot; /&gt;''</p>

<p style='margin-left:36.0pt'>''                              &lt;Item
Name=&quot;Navigation&quot; Placement=&quot;Top&quot; Size=&quot;[Overscan Top]
+ 150&quot; /&gt;''</p>

<p style='margin-left:36.0pt'>''                              &lt;Item
Name=&quot;Navigation&quot; Placement=&quot;Right&quot; Size=&quot;[Overscan
Right]&quot; /&gt;''</p>

<p style='margin-left:36.0pt'>''                              &lt;Item
Name=&quot;Navigation&quot; Placement=&quot;Bottom&quot; Size=&quot;[Overscan
Bottom] + 10&quot; /&gt;        ''</p>

<p style='margin-left:36.0pt'>''                              &lt;Item
Name=&quot;Navigation&quot; Placement=&quot;CenterX&quot; Size=&quot;3 *
[Button Width]&quot; Crop=&quot;5%&quot; /&gt;''</p>

<p style='margin-left:36.0pt'>''              &lt;/Layout&gt;''</p>

<p style='margin-left:36.0pt'>&lt;/LAYOUT&gt;</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'>                <b>Layout
Name=&quot;Root&quot;</b> : The name of the particular layout component</p>

<p style='margin-left:36.0pt'>                <b>Location=&quot;&quot;</b>
: The location of the component, with regard to the List areas (eg: Playing
Now, Audio, Video, ''All'',... <b>more explanation required</b>)</p>

<p style='margin-left:36.0pt'>''                              ''</p>

<p style='margin-left:72.0pt;text-indent:36.0pt'>''&lt;Item
Name=&quot;Navigation&quot; Placement=&quot;Left&quot; Size=&quot;[Overscan
Left] + 200&quot; /&gt;''</p>

<p style='margin-left:72.0pt;text-indent:36.0pt'>This
defines the </p>

<p style='margin-left:36.0pt;text-indent:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'>&nbsp;</p>

<p ><b><span style='font-size:14.0pt'>''Buttons''</span></b></p>

<p style='margin-left:36.0pt'>''&lt;BUTTONS&gt;''</p>

<p style='margin-left:36.0pt'>''   &lt;Position
Rect=&quot;0.9,8.0,22.5,76&quot; NoListRect=&quot;35,10,65,90&quot;
PlayingNowRect=&quot;0.9,8.0,22.5,50.0&quot;  ButtonVerticalSpacing=&quot;8&quot;
Alignment=&quot;1&quot; NoListAlignment=&quot;0&quot; /&gt;''</p>

<p style='margin-left:36.0pt'>''   &lt;Image
Bitmap=&quot;Buttons\Button.png&quot; Columns=&quot;26,?-Flex,26&quot;
Rows=&quot;15,?-Flex,19&quot; InternalMargins=&quot;10,6,10,12&quot; /&gt;''</p>

<p style='margin-left:36.0pt'>''   &lt;Text
TextColor=&quot;FFFFFF&quot; SelectedTextColor=&quot;FFC32F&quot;
Capitalization=&quot;0&quot; /&gt;''</p>

<p style='margin-left:36.0pt'>''&lt;/BUTTONS&gt;''</p>

<p >&nbsp;</p>

<p style='margin-left:72.0pt'><b>Rectangles</b>: these
define where and how big the buttons are displayed in each of the screens. </p>

<p style='margin-left:72.0pt;text-indent:36.0pt'>&nbsp;</p>

<p style='margin-left:72.0pt'>The coordinates are
percentages of the screen. So for the <b>Rect</b> property the upper left
corner is 0.9% of the screen width from the left and 8.0% of the screen height
from the top. The lower left corner is 22.5% of the screen width from the left
and 76% of the screen height from the top.</p>

<p style='margin-left:72.0pt'>&nbsp;</p>

<p style='margin-left:108.0pt'><b>NoListRect</b> : The button
area on any screen that doesn’t display a list (pretty much the main screen)</p>

<p style='margin-left:108.0pt'><b>PlayingNowRect</b> : Where
and how are the buttons displayed on the Playing Now screen.</p>

<p style='margin-left:108.0pt'><b>Rect</b> : The button area
on all the other screens.</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>ButtonVerticalSpacing
</b>: The space between the buttons.</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>Alignment
</b>: This is how the buttons are aligned in the rectangle (same is true for
NoListAlignment). It is NOT how the text is aligned in the button (text is
always centered. You can’t change that at this point).</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>Columns=&quot;26,?-Flex,26&quot;</b>
: This means that the top and bottom 26 pixels of the button.png are kept as
they are, and whatever is in between is stretched or shrunk to fit the
rectangle. The Rows property is handled the same way.</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>InternalMargins:</b>
These are the margins for the text displayed in the buttons. So, if your text
is too big or small within the buttons, this is where to go.</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>TextColor,
SelectedTextColor:</b> You don’t have any say over the font, but you do get to
choose the color.</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'><b>Capitalization:</b>
self explanatory…</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'>&nbsp;</p>

<p ><b><span style='font-size:14.0pt'>''Picture in Picture''</span></b></p>

<p style='margin-left:36.0pt'>''&lt;PIP
Rect=&quot;1.2,76.5,22.2,97.5&quot;
PlayingNowRect=&quot;0.9,51.0,99.5,99.5&quot; /&gt;''</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:72.0pt'><b>PIP (Picture in Picture):</b>
the rectangle taken up by visualizations or video when not in full screen. You
can see the difference in PlayingNowRect and Rect just by switching between the
Audio screen and the Playing now screen. I don’t need a half-screen sized
visualization in the Playing Now window, so I resize it to the same size as the
other windows.</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p ><b><span style='font-size:14.0pt'>''List''</span></b></p>

<p style='margin-left:36.0pt'>''&lt;LIST&gt;''</p>

<p style='margin-left:72.0pt'>'' &lt;Position
Rect=&quot;23.4,8.0,99.5,99.5&quot;
PlayingNowRect=&quot;23.4,8.0,99.5,50.0&quot; ItemsRect=&quot;0,0,100,100&quot;
 ImageRect=&quot;1,1,99,99&quot; ImageWithTextRect=&quot;1,1,99,82&quot;
TextRect=&quot;1,84,99,98&quot; /&gt;''</p>

<p style='margin-left:72.0pt'>'' &lt;Text
TextColor=&quot;FFFFFF&quot; SelectedTextColor=&quot;FFC32F&quot;
Capitalization=&quot;0&quot;/&gt;''</p>

<p style='margin-left:72.0pt'>'' &lt;ThumbBackground
Bitmap=&quot;List\ThumbBackground.png&quot; Columns=&quot;10,?-Flex,10&quot;
Rows=&quot;10,?-Flex,10&quot; InternalMargins=&quot;6,6,6,6&quot; /&gt;''</p>

<p style='margin-left:72.0pt'>'' &lt;ListBackground
Bitmap=&quot;List\ListBackground.png&quot; Columns=&quot;10,?-Flex,10&quot;
Rows=&quot;10,?-Flex,10&quot; InternalMargins=&quot;6,6,6,6&quot; /&gt;''</p>

<p style='margin-left:72.0pt'>'' &lt;NoThumb
Bitmap=&quot;List\NoThumb.png&quot; /&gt;''</p>

<p style='margin-left:72.0pt'>'' &lt;BackThumb
Bitmap=&quot;List\BackThumb.png&quot; /&gt;''</p>

<p style='margin-left:72.0pt'>'' &lt;FolderThumb
Bitmap=&quot;List\FolderThumb.png&quot; /&gt;''</p>

<p style='margin-left:72.0pt'>'' &lt;Check
Bitmap=&quot;List\Check.png&quot; ThumbRect=&quot;2,59.3,34,81.6&quot;
ListRect=&quot;95.2,0,100,100&quot; Rows=&quot;2,?-Flex,4&quot;
Colums=&quot;2,?-Flex,3&quot; /&gt;''</p>

<p style='margin-left:72.0pt'>'' &lt;PlayOverlay
Bitmap=&quot;List\PlayOverlay.png&quot; ThumbRect=&quot;0,60,35,95&quot;
ListRect=&quot;94,0,100,100&quot; /&gt;''</p>

<p style='margin-left:36.0pt'>''&lt;/LIST&gt;''</p>

<p style='margin-left:72.0pt'>&nbsp;</p>

<p style='margin-left:72.0pt'><b>List</b>: contains the
items on the right hand side of the (non main menu) screen. It’s the portion of
the library that you’re looking at. </p>

<p style='margin-left:36.0pt;text-indent:36.0pt'>Most of
this section has already been covered, apart from:</p>

<p style='margin-left:108.0pt'><b>ItemsRect</b>: How much of
the space you’ve allotted to the list it actually takes up. Play with it to
control the size of thumbnails.</p>

<p style='margin-left:108.0pt'><b>ItemsWithTextRect</b>:
This is the portion of ItemsRect taken up by the actual thumbnail without text.
</p>

<p style='margin-left:108.0pt'><b>TextRect</b>: The portion
of <b>ItemsRect</b> that’s taken up by text.</p>

<p style='margin-left:72.0pt'>&nbsp;</p>

<p ><b><span style='font-size:14.0pt'>''Sounds''</span></b></p>

<p style='margin-left:36.0pt'>''&lt;SOUNDS   Select=&quot;..\Shared\Sounds\Select.wav&quot;
Enter=&quot;..\Shared\Sounds\Enter.wav&quot;
Invalid=&quot;..\Shared\Sounds\Invalid.wav&quot;
Back=&quot;..\Shared\Sounds\Back.wav&quot;
Forward=&quot;..\Shared\Sounds\Forward.wav&quot; /&gt;''</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'>What sound
is played for each event (Select, enter, invalid selection, back, forward).</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p ><b><span style='font-size:14.0pt'>''Picture''</span></b></p>

<p style='margin-left:36.0pt'>''&lt;PICTURE&gt;''</p>

<p style='margin-left:72.0pt'>''   &lt;Item
Bitmap=&quot;..\Shared\Pictures\Setup.png&quot; Location=&quot;Setup\***&quot;
Rect=&quot;70.7,5.3,100,44.4&quot; Alpha=&quot;20&quot; Alignment=&quot;3&quot;
/&gt;''</p>

<p style='margin-left:72.0pt'>''   &lt;Item
Bitmap=&quot;..\Shared\Pictures\Playlist.png&quot; Location=&quot;Playlists\***&quot;
Rect=&quot;70.7,5.3,100,44.4&quot; Alpha=&quot;20&quot; Alignment=&quot;3&quot;
/&gt;''</p>

<p style='margin-left:72.0pt'>''   &lt;Item
Bitmap=&quot;..\Shared\Pictures\TV.png&quot; Location=&quot;TV\***&quot;
Rect=&quot;70.7,5.3,100,44.4&quot; Alpha=&quot;20&quot; Alignment=&quot;3&quot;
/&gt;''</p>

<p style='margin-left:72.0pt'>''   &lt;Item
Bitmap=&quot;..\Shared\Pictures\Audio.png&quot; Location=&quot;Audio\***&quot;
Rect=&quot;70.7,5.3,100,44.4&quot; Alpha=&quot;20&quot; Alignment=&quot;3&quot;
/&gt;''</p>

<p style='margin-left:72.0pt'>''   &lt;Item
Bitmap=&quot;..\Shared\Pictures\Images.png&quot;
Location=&quot;Images\***&quot; Rect=&quot;70.7,5.3,100,44.4&quot;
Alpha=&quot;20&quot; Alignment=&quot;3&quot; /&gt;''</p>

<p style='margin-left:72.0pt'>''   &lt;Item
Bitmap=&quot;..\Shared\Pictures\Video.png&quot; Location=&quot;Video\***&quot;
Rect=&quot;70.7,5.3,100,44.4&quot; Alpha=&quot;20&quot; Alignment=&quot;3&quot;
/&gt;''</p>

<p style='margin-left:72.0pt'>''   &lt;Item
Bitmap=&quot;..\Shared\Pictures\CD &amp;amp; DVD.png&quot; Location=&quot;CD
&amp;amp; DVD\***&quot; Rect=&quot;70.7,5.3,100,44.4&quot; Alpha=&quot;20&quot;
Alignment=&quot;3&quot; /&gt;''</p>

<p style='margin-left:72.0pt'>''   &lt;Item
Bitmap=&quot;..\Shared\Pictures\Playing Now.png&quot; Location=&quot;Playing
Now\***&quot; Rect=&quot;70.7,5.3,100,44.4&quot; Alpha=&quot;20&quot;
Alignment=&quot;3&quot; /&gt;''</p>

<p style='margin-left:36.0pt;text-indent:36.0pt'>''  
&lt;Item Bitmap=&quot;Pictures\LocationBackground.png&quot;
Location=&quot;***&quot; Rect=&quot;0.0,0.0,100,7.2&quot; Alpha=&quot;100&quot;
Alignment=&quot;-1&quot; /&gt;''</p>

<p style='margin-left:36.0pt'>''&lt;/PICTURE&gt;''</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'>Pictures! Here’s where you get
to display images on the skin. You can display them anywhere on any screen you
want. We’ve discussed what Rect does (placement on the screen). The fun thing
to play with here is Location. An asterisk ‘*’ in the path is a level in the
tree. Eg:</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'><b>Location=&quot;Audio\***&quot;</b></p>

<p style='margin-left:36.0pt;text-indent:36.0pt'>This image
will show up on the main screen when Audio is selected, and on each sub-level
of the Audio button.</p>

<p style='margin-left:36.0pt'><b>Location=&quot;Audio&quot;</b></p>

<p style='margin-left:36.0pt;text-indent:36.0pt'>This image
will show up ONLY on the main screen when the Audio button is selected and on
NO subsequent level.</p>

<p style='margin-left:36.0pt'><b>Location=&quot;Audio\*&quot;</b></p>

<p style='margin-left:36.0pt;text-indent:36.0pt'>This image
will show up in the audio screen, but NOT on the main screen even when the
audio button is selected.</p>

<p style='margin-left:36.0pt'><b>Location=&quot;Audio\HOME&quot;</b></p>

<p style='margin-left:36.0pt;text-indent:36.0pt'>This image
will show up ONLY in the Audio menu when the HOME button is selected.</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'>Play with the Location
property. It’s a great way to customize what images are shown in your skin.</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'>''&lt;TEXT&gt;''</p>

<p style='margin-left:36.0pt'>''   &lt;Item
Text=&quot;[Location]&quot; Location=&quot;***&quot;
TextColor=&quot;FFFFFF&quot; Rect=&quot;2.5,0.2,89.0,5.4&quot;
Capitalization=&quot;0&quot; Alignment=&quot;0&quot; /&gt;''</p>

<p style='margin-left:36.0pt'>''   &lt;Item
Text=&quot;[Time]&quot; Location=&quot;***&quot; TextColor=&quot;FFFFFF&quot;
Rect=&quot;90.0,0.2,99.0,5.4&quot; Capitalization=&quot;0&quot;
Alignment=&quot;1&quot; /&gt;''</p>

<p style='margin-left:36.0pt'>''&lt;/TEXT&gt;''</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'>These two items put the
location in the navigation tree and the system time on the top of the screen. At
this point these are the only known fields ([Location] and [Time]) that can be
used in this manner. Once again, the Rect, and Location properties can help
customize your skin.</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'>''&lt;MENU&gt;''</p>

<p style='margin-left:36.0pt'>''   &lt;Text
TextColor=&quot;FFFFFF&quot; SelectedTextColor=&quot;FFC32F&quot; /&gt;''</p>

<p style='margin-left:36.0pt'>''   &lt;Background
Bitmap=&quot;Menu\MenuBackground.png&quot; Columns=&quot;8,?-Flex,8&quot;
Rows=&quot;8,?-Flex,8&quot; /&gt;''</p>

<p style='margin-left:36.0pt'>''   &lt;Item
Bitmap=&quot;Menu\MenuItem.png&quot; Columns=&quot;36,?-Flex,36&quot; Rows=&quot;10,?-Flex,10&quot;
/&gt;''</p>

<p style='margin-left:36.0pt'>''&lt;/MENU&gt;''</p>

<p style='margin-left:36.0pt'>&nbsp;</p>

<p style='margin-left:36.0pt'>Once again, <b>MENU</b> is the
sub-menu on some screens. You can customize everything but <b>RECT</b>.</p>

<p >&nbsp;</p>

<p >That’s pretty much the long and the short of creating a
Theater View skin. A little experimentation will get you pretty familiar with
the main.xml The hardest part of making a skin is creating the graphics. If you
don’t have Photoshop, I’d recommend downloading the GIMP. It’s free and
cross-platform. And with sites like www.gimptalk.com and www.wingimp.org, you
won’t run short of tutorials.</p>

<p >&nbsp;</p>

<p >&nbsp;</p>

<p ><b><u><span style='font-size:16.0pt'>VARIABLES</span></u></b></p>

Revision as of 07:08, 23 November 2007

Based on this post by LanceD: http://yabb.jriver.com/interact/index.php?topic=34639.0

Introduction

Theater View Skins are stored under the MEDIA CENTER install path: FULL SKINS\<Skin Name> If the default installation path is used (c:\Program Files\J River\Media Center\), the Noire skin would be located in: c:\Program Files\J River\Media Center\Full Skins\Noire

Skins may either be standalone, or may use a base skin, and apply their own customization to that skin. The default skin “Noire” used a base skin named “Shared” for most of its elements, and applies only customisations to achieve its own look. Note that the “Shared” skin is defined as a base skin, and does not appear as a selectable Theater View skin within MEDIA CENTER.

Skins support both relative and absolute paths, relative paths are highly recommended.


Files & Folders

Typical Files and Folders that may be found in a Theater View skin:

  • Animation (Folder)
Background.png: Specifies the background animation picture for theater view. (By default, this is the bouncing MEDIA CENTER logo)
  • Background.png
The skin's 'wallpaper'. It’s in all the screens and sub screens, so if you have images that you don’t want in every screen, don’t include them in the background.png. You can do that later.
  • Buttons (Folder)
Button.png: These are the buttons on the main screen, and on the left hand side of the other screens.
There are six images that make up Button.png. You need to alternate three ‘unselected’ buttons and three ‘selected’ buttons. I haven’t really played with them enough to know why there are three of each. Obviously there are different categories of button. Play with it, and post your findings.
  • Dialog (Folder)
DialogBack.png: The background image for the pop-up dialog boxes (e.g. The confirmation screen when exiting Theater View)
DisableOverlay.png: <<unknown>>
  • List (Folder)
BackThumb.png : Self explanatory, it’s the ‘back button’.
Check.png: Two images in one .png file. Unchecked is on the left, checked is on the right.
FolderThumb.png: in ‘icon view’ it represents a folder.
ListBackground.png: in ‘list’ view, it’s the unselected (left) and selected (right) states of each list item.
NoThumb.png: it’s what shows up when there’s no image information in the db for the specific cd or video.
PlayOverlay.png: The ‘play’ triangle that tells you when something is playing.
ThumbBackground.png: This is another two-images-in-one. It’s what’s behind the CD or videos in your library in ‘icon’ view.
  • Main.xml
Defines the layout and graphics required to make a skin.
  • Menu (Folder)
MenuBackground.png: This is the submenu of ‘Buttons’ in all but the main screen. So, when you select ‘Controls’ in the audio or now playing screens, this is the background for the resulting menu. It’s safest to just fill it with a color that blends in with the background.png.
MenuItem.png: This is the button that’s used in the submenus mentioned above. It’s just a unselected / selected image.
  • Pictures (Folder)
Audio.png: Picture for the “Audio” menu selection.
CD & DVD.png: Picture for the “CD & DVD” menu selection.
Generic.png: Picture for menu selections without a specific image.
Images.png: Picture for the “Images” menu selection.
LocationBackground.png: All of the pre-installed skins use this as a top-border. The system time and location sit inside here. YOU DON’T HAVE TO USE THIS! It’s just an image. You can include it or not.
News.png: Picture for the “News” menu selection.
Playing Now.png: Picture for the “Playing Now” menu selection.
Playlist.png: Picture for the “Playlist” menu selection.
TV.png: Picture for the “TV” menu selection.
Video.png: Picture for the “Video” menu selection.
Weather.png: Picture for the “Weather” menu selection.
  • Player Controls (Folder)
Back.png, ButtonBackground.png, Fullscreen.png, Home.png, Next.png
Play.png, Previous.png, VolumeDown.png, VolumeMute.png, VolumeUp.png
Each of these images corresponds to the similarly named menu selection.
  • Scroll (Folder)
Down.png: The “more available below” indicator/button on a scroll bar.
Handle.png: The position indicator / “grab” handle on a scroll bar.
Up.png: The “more available above” indicator/button on a scroll bar.
  • Search (Folder)
LetterBackground.png: The background tile for individual letters when the search pane is selected.
  • Sounds (Folder)
Back.wav: The sound played when you go back through the menu structure.
Enter.wav: The sound played when Enter is pressed.
Forward.wav: The sound played when going forward through the menu structure.
Invalid.wav: The sound played when an invalid action is attempted.
Select.wav: The sound played when something is selected.



Main.xml

Header


<MJFS version="2.3" base="0" >

MJFS Version=”2.3” : The base version of the MEDIA CENTER Theater View rendering engine required for the skin.
Base=”0” : Is this skin a base skin (0=no, 1=yes) – used to indicate if this skin is displayed as a Theater View skin within MEDIA CENTER.

Skin Information

<SKIN Name="Blue too" Author="jmone" WebSite="" BaseSkin="..\Shared\Base 1.xml" />

SKIN Name="Blue too" : The name of the skin.
Author="jmone" : Who designed the skin
WebSite="" : The Author’s website
BaseSkin="..\Shared\Base 1.xml" : What this skin uses as its base skin, for elements not specified by the current skin.

Animation

<ANIMATION>

<Background Bitmap="..\Shared\Animation\Background.png" Alpha="100" Mode="1" />

</ANIMATION>

This section defines the background animation. At this point the only known option here is a background picture.
<Background Bitmap="..\Shared\Animation\Background.png" Alpha="100" Mode="1" />
Background Bitmap="..\Shared\Animation\Background.png": Specifies the location where the background picture can be found.
Alpha="100" : Specifies the transparency of the background image. (0= not visible, 100= opaque)
Mode="1" : Specifies the type of animation to be applied.

Layout

<LAYOUT>

<<-- SNIPPED -->>

</LAYOUT>

The layout section contains all the layout components required to define the layout of the skin. It does not contain information relating to images, rather it defines the structure of a skin.

Layout Sections

<LAYOUT>

<Layout Name="Root" Location="" >
<Item Name="Navigation" Placement="Left" Size="[Overscan Left] + 200" />
<Item Name="Navigation" Placement="Top" Size="[Overscan Top] + 150" />
<Item Name="Navigation" Placement="Right" Size="[Overscan Right]" />
<Item Name="Navigation" Placement="Bottom" Size="[Overscan Bottom] + 10" />
<Item Name="Navigation" Placement="CenterX" Size="3 * [Button Width]" Crop="5%" />
</Layout>

</LAYOUT>

Layout Name="Root" : The name of the particular layout component
Location="" : The location of the component, with regard to the List areas (eg: Playing Now, Audio, Video, All,... more explanation required)
<Item Name="Navigation" Placement="Left" Size="[Overscan Left] + 200" />

This defines the

Buttons

<BUTTONS>

<Position Rect="0.9,8.0,22.5,76" NoListRect="35,10,65,90" PlayingNowRect="0.9,8.0,22.5,50.0" ButtonVerticalSpacing="8" Alignment="1" NoListAlignment="0" />
<Image Bitmap="Buttons\Button.png" Columns="26,?-Flex,26" Rows="15,?-Flex,19" InternalMargins="10,6,10,12" />
<Text TextColor="FFFFFF" SelectedTextColor="FFC32F" Capitalization="0" />

</BUTTONS>

Rectangles: these define where and how big the buttons are displayed in each of the screens.
The coordinates are percentages of the screen. So for the Rect property the upper left corner is 0.9% of the screen width from the left and 8.0% of the screen height from the top. The lower left corner is 22.5% of the screen width from the left and 76% of the screen height from the top.
NoListRect : The button area on any screen that doesn’t display a list (pretty much the main screen)
PlayingNowRect : Where and how are the buttons displayed on the Playing Now screen.
Rect : The button area on all the other screens.
ButtonVerticalSpacing : The space between the buttons.
Alignment : This is how the buttons are aligned in the rectangle (same is true for NoListAlignment). It is NOT how the text is aligned in the button (text is always centered. You can’t change that at this point).
Columns="26,?-Flex,26" : This means that the top and bottom 26 pixels of the button.png are kept as they are, and whatever is in between is stretched or shrunk to fit the rectangle. The Rows property is handled the same way.
InternalMargins: These are the margins for the text displayed in the buttons. So, if your text is too big or small within the buttons, this is where to go.
TextColor, SelectedTextColor: You don’t have any say over the font, but you do get to choose the color.
Capitalization: self explanatory…

Picture in Picture

<PIP Rect="1.2,76.5,22.2,97.5" PlayingNowRect="0.9,51.0,99.5,99.5" />

PIP (Picture in Picture): the rectangle taken up by visualizations or video when not in full screen. You can see the difference in PlayingNowRect and Rect just by switching between the Audio screen and the Playing now screen. I don’t need a half-screen sized visualization in the Playing Now window, so I resize it to the same size as the other windows.

List

<LIST>

<Position Rect="23.4,8.0,99.5,99.5" PlayingNowRect="23.4,8.0,99.5,50.0" ItemsRect="0,0,100,100" ImageRect="1,1,99,99" ImageWithTextRect="1,1,99,82" TextRect="1,84,99,98" />
<Text TextColor="FFFFFF" SelectedTextColor="FFC32F" Capitalization="0"/>
<ThumbBackground Bitmap="List\ThumbBackground.png" Columns="10,?-Flex,10" Rows="10,?-Flex,10" InternalMargins="6,6,6,6" />
<ListBackground Bitmap="List\ListBackground.png" Columns="10,?-Flex,10" Rows="10,?-Flex,10" InternalMargins="6,6,6,6" />
<NoThumb Bitmap="List\NoThumb.png" />
<BackThumb Bitmap="List\BackThumb.png" />
<FolderThumb Bitmap="List\FolderThumb.png" />
<Check Bitmap="List\Check.png" ThumbRect="2,59.3,34,81.6" ListRect="95.2,0,100,100" Rows="2,?-Flex,4" Colums="2,?-Flex,3" />
<PlayOverlay Bitmap="List\PlayOverlay.png" ThumbRect="0,60,35,95" ListRect="94,0,100,100" />

</LIST>

List: contains the items on the right hand side of the (non main menu) screen. It’s the portion of the library that you’re looking at.
Most of this section has already been covered, apart from:
ItemsRect: How much of the space you’ve allotted to the list it actually takes up. Play with it to control the size of thumbnails.
ItemsWithTextRect: This is the portion of ItemsRect taken up by the actual thumbnail without text.
TextRect: The portion of ItemsRect that’s taken up by text.

Sounds

<SOUNDS Select="..\Shared\Sounds\Select.wav" Enter="..\Shared\Sounds\Enter.wav" Invalid="..\Shared\Sounds\Invalid.wav" Back="..\Shared\Sounds\Back.wav" Forward="..\Shared\Sounds\Forward.wav" />

What sound is played for each event (Select, enter, invalid selection, back, forward).

Picture

<PICTURE>

<Item Bitmap="..\Shared\Pictures\Setup.png" Location="Setup\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
<Item Bitmap="..\Shared\Pictures\Playlist.png" Location="Playlists\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
<Item Bitmap="..\Shared\Pictures\TV.png" Location="TV\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
<Item Bitmap="..\Shared\Pictures\Audio.png" Location="Audio\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
<Item Bitmap="..\Shared\Pictures\Images.png" Location="Images\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
<Item Bitmap="..\Shared\Pictures\Video.png" Location="Video\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
<Item Bitmap="..\Shared\Pictures\CD & DVD.png" Location="CD & DVD\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
<Item Bitmap="..\Shared\Pictures\Playing Now.png" Location="Playing Now\***" Rect="70.7,5.3,100,44.4" Alpha="20" Alignment="3" />
<Item Bitmap="Pictures\LocationBackground.png" Location="***" Rect="0.0,0.0,100,7.2" Alpha="100" Alignment="-1" />

</PICTURE>

Pictures! Here’s where you get to display images on the skin. You can display them anywhere on any screen you want. We’ve discussed what Rect does (placement on the screen). The fun thing to play with here is Location. An asterisk ‘*’ in the path is a level in the tree. Eg:
Location="Audio\***" : This image will show up on the main screen when Audio is selected, and on each sub-level of the Audio button.
Location="Audio" : This image will show up ONLY on the main screen when the Audio button is selected and on NO subsequent level.
Location="Audio\*" : This image will show up in the audio screen, but NOT on the main screen even when the audio button is selected.
Location="Audio\HOME" : This image will show up ONLY in the Audio menu when the HOME button is selected.
Play with the Location property. It’s a great way to customize what images are shown in your skin.

Text

<TEXT>

<Item Text="[Location]" Location="***" TextColor="FFFFFF" Rect="2.5,0.2,89.0,5.4" Capitalization="0" Alignment="0" />
<Item Text="[Time]" Location="***" TextColor="FFFFFF" Rect="90.0,0.2,99.0,5.4" Capitalization="0" Alignment="1" />

</TEXT>

These two items put the location in the navigation tree and the system time on the top of the screen. At this point these are the only known fields ([Location] and [Time]) that can be used in this manner. Once again, the Rect, and Location properties can help customize your skin.


Menu

<MENU>

<Text TextColor="FFFFFF" SelectedTextColor="FFC32F" />
<Background Bitmap="Menu\MenuBackground.png" Columns="8,?-Flex,8" Rows="8,?-Flex,8" />
<Item Bitmap="Menu\MenuItem.png" Columns="36,?-Flex,36" Rows="10,?-Flex,10" />

</MENU>

Once again, MENU is the sub-menu on some screens. You can customize everything but RECT.


That’s pretty much the long and the short of creating a Theater View skin. A little experimentation will get you pretty familiar with the main.xml The hardest part of making a skin is creating the graphics. If you don’t have Photoshop, I’d recommend downloading the GIMP. It’s free and cross-platform. And with sites like www.gimptalk.com and www.wingimp.org, you won’t run short of tutorials.