Author Topic: Skinning Requests for 3.2  (Read 49701 times)

Steven

  • Administrator
  • Sr. Member
  • *****
  • Posts: 34346
To save future confusion, v3.3 is now MusicBee.exe


redwing

  • Guest
What would happen if a custom skin supplies only 200% bitmap images for player images? Can MB scale them down properly when 100% or 150% images are needed? If there's no downsides with that, that would be much easier for creating images and it will also make custom skins much smaller.

Steven

  • Administrator
  • Sr. Member
  • *****
  • Posts: 34346
What would happen if a custom skin supplies only 200% bitmap images for player images? Can MB scale them down properly when 100% or 150% images are needed? If there's no downsides with that, that would be much easier for creating images and it will also make custom skins much smaller.
if you supply SVG images, MB automatically creates 100%, 150% and 200% png images for the player panel. If you are refering to appending "_200" to a .png image file or text representation, then as it stands MB only scales up so would only use the 200% image when the dpi scaling is 200%+
I have found in the past actually getting better results scaling small images up from 150% to 200% than the other way around.

Although i have expressed concern on skin size in the past, that was in relation to those included in the release package and i subsequently reduced the number of skins. I dont think skin size would matter too much for the load times. But if skin size is a concern i can also implement down scaling from 200%.

redwing

  • Guest
I found some 150-200% images created by SkinCreator from svg files are flawed. For instance, the square inside stop button of Cotton/Gray skin is not centered in larger images. Also La La Bee skin's buttons look quite different when larger images are created by it. I think I will add PNG files instead for those images.

But if it can't do the downscaling job precisely, then I'll just add all images since 100% will be most widely used.

Steven

  • Administrator
  • Sr. Member
  • *****
  • Posts: 34346
To exactly align an element to the track position and an element to the duration when the position and duration are split (using "PlayerSplitProgressYOffset" and alignment "PlayerSplitProgressTextFarAlign" enabled), the following should be set:
Code
<element id="PlayerAlignElementToPosition">TrackText</element>
<element id="PlayerAlignElementToDuration">TrackRating</element>
The values can be any valid player panel element id. See redwing's gray skin to see what I mean if its not clear.

redwing

  • Guest
Thanks for the support! Now they keep aligned regardless of font size and DPI scaling.

redwing

  • Guest
Try with my Cotton skin.
With a dark album cover, caption bar icons are invisible in large picture mini mode.



redwing

  • Guest
Thanks! Now it looks fine.

Another issue with compact mode.



The white color used in the wavebar above and the background below was meant for white player bar & white sidebar. But it's applied in the wrong context and doesn't look good. Dark skins look worse as they draw a black wavebar in the middle. How about making the wavebar transparent or using an auto-generated color instead?

Steven

  • Administrator
  • Sr. Member
  • *****
  • Posts: 34346
The white color used in the wavebar above and the background below was meant for white player bar & white sidebar. But it's applied in the wrong context and doesn't look good. Dark skins look worse as they draw a black wavebar in the middle. How about making the wavebar transparent or using an auto-generated color instead?
are you using Compact.Player.Wavebar and Compact.Player.Wavebar.Inner?


redwing

  • Guest
Also got this error once when enabling "Draw controls on picture" option which crashed the entire main panel. But can't replicate any more.

System.OverflowException: Arithmetic operation resulted in an overflow.
   at #=zqIFyU0Mn_0K0sYassc7n3PE=.#=zj7mO6GI812c_(Graphics #=zd3cOQpU=, Bitmap #=zACiwcoc=, Rectangle #=z$Bp6aLo=, Double #=ziuvbimkuI5$c, Int32 #=zXlQ3049S4Ywv)
   at #=zqIFyU0Mn_0K0sYassc7n3PE=.#=zFOMFtTyhA8Kn(Graphics #=zd3cOQpU=, String #=zsBEid9I=, Font #=z63UoR64=, Rectangle #=z$Bp6aLo=, Color #=z0MWmv_Q=, Color #=zr8wVXDw=, TextFormatFlags #=zJlLwXfo=, Double #=ziuvbimkuI5$c, Int32 #=zXlQ3049S4Ywv)
   at #=zqIFyU0Mn_0K0sYassc7n3PE=.#=zjdAtlE95xVtH(Graphics #=zd3cOQpU=, String #=zsBEid9I=, Font #=z63UoR64=, Rectangle #=z$Bp6aLo=, Color #=z0MWmv_Q=, Color #=zr8wVXDw=, ContentAlignment #=z2pW2Szw=, #=zzTe9vg6WnkR9eYF78EEXYNI= #=zWPFEnusfPRw0, #=z9ApGLLlsL8oX1dlBrVCQw8M= #=zGX33c4k=, Double #=ziuvbimkuI5$c, Int32 #=zXlQ3049S4Ywv)
   at #=z$woEFW4433hH9i501vu1JpEXPn1O.#=zcTFhq6XR8qAC.#=zG5$azL4s_IZh.#=zPhqRDNc=(PaintEventArgs #=zYZsMZzs=)
   at #=z$woEFW4433hH9i501vu1JpEXPn1O.#=zcTFhq6XR8qAC.#=zq9$iFkOWQEppUbXGosR_prc=(Object #=z8z_G1NQ=, PaintEventArgs #=zYZsMZzs=)
   at System.Windows.Forms.Control.OnPaint(PaintEventArgs e)
   at #=zVfKXbxyp8SO$WRS3sRSp913sed$EZe8H2A==.#=qZ5qjmuNdI8N7chJ_KkqV6bCxSzw0A5jXDXRo_iMhxUE=(PaintEventArgs #=zYZsMZzs=)
   at #=zVfKXbxyp8SO$WRS3sRSp913sed$EZe8H2A==.#=qf1y2u7fv6ynE3ImIvGoP3mBxV3yBNxMyL$g9oNwZ9qw=._Lambda$__0(Graphics #=zd3cOQpU=)
   at #=znUlalJBYIYsDhyyA4k_zIC8=.#=zsSJPEao1OhaD.#=zq2AXUVo=(Graphics #=zd3cOQpU=, #=zSlHGwsSd$dDeCMj_SA== #=zmSk7LhZ$yOv2, Rectangle #=zaU1AyBhsEQR$, Rectangle #=zN0sdKsvgtU9W)
   at #=zVfKXbxyp8SO$WRS3sRSp913sed$EZe8H2A==.OnPaint(PaintEventArgs #=zYZsMZzs=)
   at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
   at System.Windows.Forms.Control.WmPaint(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)