Theater View Skinning Tutorial: Difference between revisions

From wiki.jriver.com
Jump to navigation Jump to search
No edit summary
 
No edit summary
 
(15 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Theater View Skins are stored under the MEDIA CENTER install path:
<p ><u>Based</u> on this post by LanceD:
http://yabb.jriver.com/interact/index.php?topic=34639.0 </p>


::Skins\Theater View\<Skin Name>


<p >This is a work in progress, and is not complete!</p>


If the default installation path is used (C:\Program Files\J River\Media Center\), the Obsidian skin would be located in:
<p >&nbsp;</p>


::C:\Program Files\J River\Media Center\Skins\Theater View\Obsidian
<p ><b><u><span style='font-size:18.0pt'>Introduction</span></u></b></p>


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


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 customizations 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 style='text-indent:36.0pt'>FULL SKINS\&lt;Skin Name&gt;</p>


Skins support both relative and absolute paths, relative paths are highly recommended.
<p >If the default installation path is used (c:\Program
Files\J River\Media Center\), the Noire skin would be located in:</p>


==Files & Folders==
<p style='text-indent:36.0pt'>c:\Program Files\J River\Media
Center\Full Skins\Noire</p>


Typical Files and Folders that may be found in a Theater View skin:
<p >&nbsp;</p>


<p >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>


*'''Animation (Folder)'''
<p >&nbsp;</p>
::'''Background.png''': Specifies the background animation picture for theater view. (By default, this is the bouncing MEDIA CENTER logo)


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


*'''Background.png'''
<p >&nbsp;</p>
::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.


<p >&nbsp;</p>


*'''Buttons (Folder)'''
<p ><b><u><span style='font-size:12.0pt'>Files &amp; Folders</span></u></b></p>
::'''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.


<p >&nbsp;</p>


*'''Dialog (Folder)'''
<p >Typical Files and Folders that may be found in a Theater
::'''DialogBack.png''': The background image for the pop-up dialog boxes (e.g. The confirmation screen when exiting Theater View)
View skin:</p>
::'''DisableOverlay.png''': <<unknown>>


<p >&nbsp;</p>


*'''List (Folder)'''
<p style='margin-left:36.0pt'><b>Animation (Folder):</b></p>
::'''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.


<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>


*'''Main.xml'''
<p style='margin-left:36.0pt'>                </p>
::'''REQUIRED:''' Defines the layout and graphics required to make a skin. This is ''the'' file that defines the skin.


<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>


*'''Menu (Folder)'''
<p style='margin-left:36.0pt'>&nbsp;</p>
::'''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.


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


*'''Pictures (Folder)'''
<p style='margin-left:72.0pt'><b>Button.png</b>: These are
::'''Audio.png''': Picture for the “Audio” menu selection.
the buttons on the main screen, and on the left hand side of the other screens.
::'''CD & DVD.png''': Picture for the “CD & DVD” menu selection.
</p>
::'''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.


<p style='margin-left:72.0pt'>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. </p>


*'''Player Controls (Folder)'''
<p style='margin-left:36.0pt'>&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.


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


*'''Scroll (Folder)'''
<p style='margin-left:36.0pt'>                <b>DialogBack.png:</b>
::'''Down.png''': The “more available below” indicator/button on a scroll bar.
The background image for the pop-up dialog boxes (e.g. The confirmation screen
::'''Handle.png''': The position indicator / “grab” handle on a scroll bar.
when exiting Theater View)</p>
::'''Up.png''': The “more available above” indicator/button on a scroll bar.


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


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


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


*'''Sounds (Folder)'''
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>BackThumb.png</b>
::'''Back.wav''': The sound played when you go back through the menu structure.
: Self explanatory, it’s the ‘back button’.</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.


==Main.xml==
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>Check.png</b>:
Two images in one .png file. Unchecked is on the left, checked is on the right.</p>


=== Header ===
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>FolderThumb.png</b>:
<MJFS version="2.3" base="0" >
in ‘icon view’ it represents a folder.</p>
:'''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.


<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>


===Skin Information===
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>NoThumb.png</b>:
it’s what shows up when there’s no image information in the db for the specific
cd or video.</p>


<SKIN Name="Blue too" Author="jmone" WebSite="" BaseSkin="..\Shared\Base 1.xml" />
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>PlayOverlay.png</b>:
:'''SKIN Name="Blue too"''' : The name of the skin.
Yep! It’s the ‘play’ triangle that tells you when something is playing.</p>
:'''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.


<p style='margin-left:36.0pt;text-indent:36.0pt'><b>ThumbBackground.png</b>:
This is another two-images-in-one. It’s what’s behind the CD or videos in your
library in ‘icon’ view.</p>


===Animation===
<p style='margin-left:36.0pt'>&nbsp;</p>
<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.


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


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


<LAYOUT>
<p style='margin-left:36.0pt'>&nbsp;</p>
<<-- 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.


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


===Layout Sections===
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>MenuBackground.png</b>:
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.</p>


<LAYOUT>
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>MenuItem.png</b>:
<Layout Name="Root" Location="" >
This is the button that’s used in the submenus mentioned above. It’s just a
<nowiki><!-- Navigation area --></nowiki>
unselected / selected image. </p>
<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" />
::'''Name''': The name of the layout component. This is not a necessary field
::'''Base''': (not shown) The name of the base item on which this component is based. For example:
<Item Name="" Base="Navigation" Placement="Top" Size="[Overscan Top] + 150" />
::..could be used to further define "Root" layout component rather than the original "Top" placement line shown above.
::'''Placement''': This defines where, within the parent component, the item is to be placed..?
::'''Size''': This defines the size of the item. Note the use of 'variables' is allowed here.


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


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


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


<BUTTONS>
<p style='margin-left:72.0pt'><b>CD &amp; DVD.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" />
Picture for the “CD &amp; DVD” menu selection.</p>
<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>
:'''Rect (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 right 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:72.0pt'><b>Generic.png</b>: Picture
for menu selections without a specific image.</p>


<PIP Rect="1.2,76.5,22.2,97.5" PlayingNowRect="0.9,51.0,99.5,99.5" />
<p style='margin-left:72.0pt'><b>Images.png</b>: Picture for
:'''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. This can be used in most (all?) views.
the “Images” menu selection.</p>


<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>


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


<LIST>
<p style='margin-left:72.0pt'><b>Playing Now.png</b>:
<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" />
Picture for the “Playing Now” menu selection.</p>
<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.


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


===Sounds===
<p style='margin-left:72.0pt'><b>TV.png</b>: Picture for the
“TV” menu selection.</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:72.0pt'><b>Video.png</b>: Picture for
:What sound is played for each event (Select, enter, invalid selection, back, forward).
the “Video” menu selection.</p>


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


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


<PICTURE>
<p style='margin-left:36.0pt'><b>Player Controls (Folder):</b></p>
<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 &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:72.0pt'><b>Back.png, ButtonBackground.png,
Fullscreen.png, Home.png, Next.png</b></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:72.0pt'><b>Play.png, Previous.png, VolumeDown.png,
::'''Location="Audio"''' : This image will show up ONLY on the main screen when the Audio button is selected and on NO subsequent level.
VolumeMute.png, VolumeUp.png</b></p>
::'''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: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>


:Pictures also accept '''Background''' and '''Style''' values, eg.
<p style='margin-left:36.0pt'><b>Scroll (Folder):</b></p>


<Item Bitmap="..\shared\Pictures\[Location].png" Location="*" Rect="LocationPicture\25,25,75,75" Alpha="75" Alignment="1" Style="1" Background="1" />
<p style='margin-left:36.0pt'><b>                Down.png:</b>
The “more available below” indicator/button on a scroll bar.</p>


:The '''style''' value seems to have the following result:
<p style='margin-left:36.0pt'><b>                Handle.png:</b>
:: 0=Shrink
The position indicator / “grab” handle on a scroll bar.</p>
:: 1=Rotating Cube
:: 2=nothing visible (fullscreen)?
:: 3=solid white cube
:: >3=same as 0?


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


<TEXT>
<p style='margin-left:36.0pt'>&nbsp;</p>
<Item Text="[Location]" Location="***" TextColor="FFFFFF" Rect="2.5,0.2,89.0,5.4" Capitalization="0" Alignment="0" />
<Item Text="[Time] - [Zone]" Location="***" TextColor="FFFFFF" Rect="90.0,0.2,99.0,5.4" Capitalization="0" Alignment="1" />
</TEXT>
:These items put the current navigation location relative to the navigation tree, the system time, and the current zone on the top of the screen (in this example). 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:36.0pt'><b>Search (Folder):</b></p>


===Menu===
<p style='margin-left:36.0pt'><b>                LetterBackground.png:</b>
<MENU>
The background tile for individual letters when the search pane is selected.</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'>&nbsp;</p>


<p style='margin-left:36.0pt'><b>Sounds (Folder):</b></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:36.0pt'>                <b>Back.wav:</b>
The sound played when you go back through the menu structure.</p>


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


There may be a desire to create a new or modify an existing Theater View skin. The Theater View skins are stored in a folder of the install directory of Media Center. For example, if the defaults were taken during the installation, the Theater View skin folder would be C:\Program Files\J River\Media Center 12\FullSkins. In there are various folders that define each of the skins.
<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>


You will need to change the XML file main.xml and any images that are in the various folders. Hopefully most things will be obvious in the file that need changing but here are some various questions and answers that may help:
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>Invalid.wav:</b>
The sound played when an invalid action is attempted.</p>


* Q: What are the four parameters for Position Rect?
<p style='margin-left:36.0pt;text-indent:36.0pt'><b>Select.wav:</b>
** A: This is the location of the menu buttons shown when not looking at the "home" menu. The numbers define a rectangle that the buttons fill, and are screen percentages X1,Y1,X2,Y2 (X1,Y1 being the co-ordinates of the top left corner, X2,Y2 being the bottom right corner.)
The sound played when something is selected.</p>


* Q: What does NoListRect mean?
<p style='margin-left:36.0pt'>&nbsp;</p>
** A: Defines the "home" menu position.


* Q: What does this code in BUTTONS mean: Columns="36,?-Flex,36" Rows="10,?-Flex,10" InternalMargins="10,4,10,8"?
<p style='margin-left:36.0pt'>&nbsp;</p>
** A: This defines how the button images are used to draw the buttons. Columns="36,?-Flex,36" means "use the first 36 pixels of the image to draw the left edge of the button, the last 36 pixels to draw the right edge of the button and stretch the rest of the image to fill the button as required (that's the ?-Flex bit)". Rows= is the same for the top and bottom edges. InternalMargins= defines the margins for the button text, in percentages.


* Q: What does the Alpha parameter in PICTURE mean?
<p >I put anything in the pictures folder that doesn’t belong
** A: "Alpha" for images usually means transparency. This probably means that they are using a scale of 0-255 so 0 would mean completely transparent and 255 would be completely opaque.
anywhere else. You use relative locations in the main.xml, so any image can
really go anywhere. </p>


* Q: What does the Alignment parameter in PICTURE mean?
<p >If you really wanted to, you could just replace the
** A: It probably defines the vertical alignment of the image
existing images in a skin folder (keeping the same filenames of course) to
change the look of a skin.</p>


* Q: Do the PNG files used as bitmaps scale automatically?
<p >&nbsp;</p>
** A: See the explanation above about ?-Flex


* Q: In the TEXT section, what does the following code mean: Item Text="[Location]" Location="***"?
<p >&nbsp;</p>
** A: This is the location text (at the top of the screen normally), but I don't know what Location="***" means.


* Q: Is there any way to change the alignment of the Home menu so it is not centered?
<p >Ok, so now that you know what all of the default pictures
** A: Change NoListRect= in <buttons> to alter the Home menu location. You can also change the vertical justification by altering NoListAlignment=
are… Let’s take a look at the file that tells Media Center where and how to
display them.</p>


* Q: What are these images for?:
<p >&nbsp;</p>
** \Background.PNG
*** A: The background
** \Buttons\Button.PNG
*** A: This is the mask that gets applied to buttons (which are on the lefthand side of the screen) when de-delected or selected, respectively. There are three pairs in a row in this file, but I haven't determined what parts of Theaterview each of the three pairs corresponds to.
** \List\ListBackground.PNG
*** A: This is the mask that gets applied to list items (which are on the righthand side of the screen) when de-delected or selected, respectively. These apply when in list mode, as distinct from thumbnail mode.
** \Menu\MenuItem.PNG
*** A: This is the mask that gets applied to popup list items.


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


== Credits ==
<p >&nbsp;</p>
Based on this post by LanceD: http://yabb.jriver.com/interact/index.php?topic=34639.0


And thanks to Confishy for creating the page.
<p ><b><span style='font-size:14.0pt'>''Header''</span></b></p>


[[Category:Skinning]]
<p style='margin-left:36.0pt'>''&lt;MJFS
[[Category:Theater View]]
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>

Latest revision as of 05:43, 4 May 2015

Theater View Skins are stored under the MEDIA CENTER install path:

Skins\Theater View\<Skin Name>


If the default installation path is used (C:\Program Files\J River\Media Center\), the Obsidian skin would be located in:

C:\Program Files\J River\Media Center\Skins\Theater View\Obsidian


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 customizations 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
REQUIRED: Defines the layout and graphics required to make a skin. This is the file that defines the 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="" >
		<!-- 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" />
Name: The name of the layout component. This is not a necessary field
Base: (not shown) The name of the base item on which this component is based. For example:
	<Item Name="" Base="Navigation" Placement="Top" Size="[Overscan Top] + 150" />
..could be used to further define "Root" layout component rather than the original "Top" placement line shown above.
Placement: This defines where, within the parent component, the item is to be placed..?
Size: This defines the size of the item. Note the use of 'variables' is allowed here.

...WORK ONGOING...


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>
Rect (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 right 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. This can be used in most (all?) views.


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.


Pictures also accept Background and Style values, eg.
<Item Bitmap="..\shared\Pictures\[Location].png" Location="*" Rect="LocationPicture\25,25,75,75" Alpha="75" Alignment="1" Style="1" Background="1" />
The style value seems to have the following result:
0=Shrink
1=Rotating Cube
2=nothing visible (fullscreen)?
3=solid white cube
>3=same as 0?

Text

<TEXT>
	<Item Text="[Location]" Location="***" TextColor="FFFFFF" Rect="2.5,0.2,89.0,5.4" Capitalization="0" Alignment="0" />
	<Item Text="[Time] - [Zone]" Location="***" TextColor="FFFFFF" Rect="90.0,0.2,99.0,5.4" Capitalization="0" Alignment="1" />
</TEXT>
These items put the current navigation location relative to the navigation tree, the system time, and the current zone on the top of the screen (in this example). 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.

Q&A

There may be a desire to create a new or modify an existing Theater View skin. The Theater View skins are stored in a folder of the install directory of Media Center. For example, if the defaults were taken during the installation, the Theater View skin folder would be C:\Program Files\J River\Media Center 12\FullSkins. In there are various folders that define each of the skins.

You will need to change the XML file main.xml and any images that are in the various folders. Hopefully most things will be obvious in the file that need changing but here are some various questions and answers that may help:

  • Q: What are the four parameters for Position Rect?
    • A: This is the location of the menu buttons shown when not looking at the "home" menu. The numbers define a rectangle that the buttons fill, and are screen percentages X1,Y1,X2,Y2 (X1,Y1 being the co-ordinates of the top left corner, X2,Y2 being the bottom right corner.)
  • Q: What does NoListRect mean?
    • A: Defines the "home" menu position.
  • Q: What does this code in BUTTONS mean: Columns="36,?-Flex,36" Rows="10,?-Flex,10" InternalMargins="10,4,10,8"?
    • A: This defines how the button images are used to draw the buttons. Columns="36,?-Flex,36" means "use the first 36 pixels of the image to draw the left edge of the button, the last 36 pixels to draw the right edge of the button and stretch the rest of the image to fill the button as required (that's the ?-Flex bit)". Rows= is the same for the top and bottom edges. InternalMargins= defines the margins for the button text, in percentages.
  • Q: What does the Alpha parameter in PICTURE mean?
    • A: "Alpha" for images usually means transparency. This probably means that they are using a scale of 0-255 so 0 would mean completely transparent and 255 would be completely opaque.
  • Q: What does the Alignment parameter in PICTURE mean?
    • A: It probably defines the vertical alignment of the image
  • Q: Do the PNG files used as bitmaps scale automatically?
    • A: See the explanation above about ?-Flex
  • Q: In the TEXT section, what does the following code mean: Item Text="[Location]" Location="***"?
    • A: This is the location text (at the top of the screen normally), but I don't know what Location="***" means.
  • Q: Is there any way to change the alignment of the Home menu so it is not centered?
    • A: Change NoListRect= in <buttons> to alter the Home menu location. You can also change the vertical justification by altering NoListAlignment=
  • Q: What are these images for?:
    • \Background.PNG
      • A: The background
    • \Buttons\Button.PNG
      • A: This is the mask that gets applied to buttons (which are on the lefthand side of the screen) when de-delected or selected, respectively. There are three pairs in a row in this file, but I haven't determined what parts of Theaterview each of the three pairs corresponds to.
    • \List\ListBackground.PNG
      • A: This is the mask that gets applied to list items (which are on the righthand side of the screen) when de-delected or selected, respectively. These apply when in list mode, as distinct from thumbnail mode.
    • \Menu\MenuItem.PNG
      • A: This is the mask that gets applied to popup list items.


Credits

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

And thanks to Confishy for creating the page.