xbmc/skin.confluence

RFC - a bit of clearart/clearlogo support?

bossanova808 opened this issue · 11 comments

Whilst I understand that Confluence is not a particularly fanart heavy type of skin, with the recent changes to the recently added stuff on the home page, which I see now shows the poster backdrop....it seems like perhaps people would be open to at least a little basic clearart support maybe?

For years I have used a simple mod which basically shows the clearart, failing that, the clearlogo, and failing that the episode thumb. I'm not big on random video thumbs (and the associated risk of spoilers) - and the logos etc always look a lot better. I don't think it would have any negative performance impact, and with Matrix all these art types etc. are all supported by default I believe.

Happy to knock up a PR if people here approve...

In a nutshell, it's just this, used in DialogScreenBar.xml and VideoFullScreen.xml

	<!--  BOSSANOVA808 MOD CLEARART -->
	<!--  SHOWS CLEARART BY DEFAULT, OTHERWISE FALLS BACK TO LOGO or BORING THUMB -->

	   	<control type="group" id="10121">
	      	<visible>[Player.Paused]</visible>
   		   	<visible>VideoPlayer.Content(Movies)</visible>
			<visible>!Skin.HasSetting(HideSeekBarOSD) | Window.IsActive(VideoOSD) | Player.ShowInfo</visible>
			<control type="image" id="1">
				<description>clearart image</description>
				<posx>10</posx>
				<posy>260r</posy>
				<width>300</width>
				<height>230</height>
				<texture>$INFO[Player.Art(clearart)]</texture>
				<aspectratio aligny="bottom">keep</aspectratio>
				<visible>!String.IsEmpty(Player.Art(clearart))</visible>
			</control>
			<control type="image" id="1">
				<description>logo image</description>
				<posx>10</posx>
				<posy>260r</posy>
				<width>300</width>
				<height>230</height>
				<texture>$INFO[Player.Art(clearlogo)]</texture>
				<aspectratio aligny="bottom">keep</aspectratio>
				<visible>!String.IsEmpty(Player.Art(clearlogo)) + String.IsEmpty(Player.Art(clearart))</visible>
			</control>
			<control type="image" id="1">
				<description>Movie cover image</description>
				<posx>20</posx>
				<posy>350r</posy>
				<width>300</width>
				<height>330</height>
				<texture fallback="DefaultVideoCover.png">$INFO[Player.Art(thumb)]</texture>
				<aspectratio aligny="bottom">keep</aspectratio>
				<bordertexture border="8">ThumbShadow.png</bordertexture>
				<bordersize>8</bordersize>
				<visible>String.IsEmpty(Player.Art(clearart)) + String.IsEmpty(Player.Art(clearlogo))</visible>
			</control>
		</control>

I think it's a good idea.

It can be made as a variable and include TV show clearlogo.

Ok, so I hadn't really used the variables before...nice. Makes for a lot less code, which is always a good thing really.

It looks like it's really as easy as modifying the NowPlayingThumb variable in includes.xml to have more of a cascade:

ClearArt? Use that, if not...
ClearLogo? if not..
Poster? ..if not fall back to
Player.Icon

...which, according to the wiki:

Shows the thumbnail (if it exists) of the currently playing item. If no thumbnail image exists, it will show the icon.

	<variable name="NowPlayingThumb">
		<value condition="!String.IsEmpty(Player.Art(clearart))">$INFO[Player.Art(clearart)]</value>
		<value condition="!String.IsEmpty(Player.Art(tvshow.clearart))">$INFO[Player.Art(tvshow.clearart)]</value>
		<value condition="!String.IsEmpty(Player.Art(clearlogo))">$INFO[Player.Art(clearlogo)]</value>
		<value condition="!String.IsEmpty(Player.Art(tvshow.clearlogo))">$INFO[Player.Art(tvshow.clearlogo)]</value>
		<value condition="!String.IsEmpty(Player.Art(poster))">$INFO[Player.Art(poster)]</value>
		<value condition="!String.IsEmpty(Player.Art(tvshow.poster))">$INFO[Player.Art(tvshow.poster)]</value>
		<value>$INFO[Player.Icon]</value>
	</variable>

...that seems to work well.

Then the (currently 3) image controls in VideoFullScreen.xml can be made into one.

The border needs to be removed to make it look nice, but honestly I think it looks better that way across the board anyway...(ratehr than mucking abotu with conditional borders, if that is even possible)

			<control type="image" id="1">
				<depth>DepthOSDPopout</depth>
				<description>Video cover image</description>
				<posx>20</posx>
				<posy>350r</posy>
				<width>300</width>
				<height>330</height>
				<texture fallback="DefaultVideoCover.png">$VAR[NowPlayingThumb]</texture>
				<aspectratio aligny="bottom">keep</aspectratio>
				<visible>!Skin.HasSetting(HideSeekBarOSD) | Window.IsActive(VideoOSD) | Player.ShowInfo</visible>
			</control>

Other than that, I like to add basically the same thing to DialogSeekBar.xml, personally, so that when something is sitting there paused you see what it is. This is probably because my kids have a habit of pausing things then wandering away... but I think it looks good generally anyway...i.e. like this, on pause:

image

That's just an extra control at the top of:

		<control type="group">
	      	<visible>[Player.Paused]</visible>
			<visible>!Skin.HasSetting(HideSeekBarOSD) | Window.IsActive(VideoOSD) | Player.ShowInfo</visible>
			<control type="image" id="1">
				<depth>DepthOSDPopout</depth>
				<description>Video cover image</description>
				<posx>20</posx>
				<posy>350r</posy>
				<width>300</width>
				<height>330</height>
				<texture fallback="DefaultVideoCover.png">$VAR[NowPlayingThumb]</texture>
				<aspectratio aligny="bottom">keep</aspectratio>
			</control>
		</control>

What do you think?

(By which I meant, should I do a PR with those changes - happy to do so...)

Personally I'm not keen on it superseding posters; instead it should complement them.

Interesting - how might that work? The posters are pretty big...doesn't leave an obvious spot for the clearart really?

For me personally I've seen the posters all over the place in the main library area, so this is a nice bit of extra vs. seeing the poster again. But perhaps there is a way to work both in?

@gade01 Any thoughts? I can just carry on using this in my own fork & close this off, if it's too controversial....but up to you!

I like the idea of clearart/clearlogo in combination with the seekbar.

But I agree with @HitcherUK that clearart/clearlogo should never superseed posters.
Priority in videofullscreen shouldn't be changed.

I think it should be either one or the other, not both clearart/clearlogo and posters.

Priority in videofullscreen should be

  • Poster
  • Clearart
  • Clearlogo
  • Icon

When using it with the seekbar, priority could be

  • Clearart
  • Clearlogo
  • Poster
  • Icon

Yeah, have tried that before and it doesn't work well in practise - it's janky to have something different on VFS vs seek as so often those two views are used together/switched between. It really doesn't look so great.

That's true.

Why not use the poster in the seekbar?

Ok I guess I'll close this as posters as the default basically makes it unworkable I think.