Index: GUIFilmstripControl.cs =================================================================== --- GUIFilmstripControl.cs (revision 27537) +++ GUIFilmstripControl.cs (working copy) @@ -127,7 +127,9 @@ [XMLSkinElement("frameFocus")] protected string _frameFocusName = ""; [XMLSkin("frameFocus", "mask")] protected string _frameFocusMask = ""; [XMLSkinElement("keepaspectratio")] protected bool _keepAspectRatio = true; - + [XMLSkinElement("thumbZoom")] protected bool _zoom = false; + [XMLSkinElement("thumbAlign")] protected Alignment _imageAlignment = Alignment.ALIGN_CENTER; + [XMLSkinElement("thumbVAlign")] protected VAlignment _imageVAlignment = VAlignment.ALIGN_BOTTOM; [XMLSkin("thumbs", "flipX")] protected bool _flipX = false; [XMLSkin("thumbs", "flipY")] protected bool _flipY = false; [XMLSkin("thumbs", "diffuse")] protected string _diffuseFileName = ""; @@ -505,12 +507,15 @@ pImage = pItem.Thumbnail; if (null == pImage && _sleeper == 0 && !IsAnimating) { + pImage = new GUIImage(0, 0, _thumbNailPositionX - iOverSized + dwPosX, _thumbNailPositionY - iOverSized + dwPosY, _thumbNailWidth + 2 * iOverSized, _thumbNailHeight + 2 * iOverSized, pItem.ThumbnailImage, 0x0); pImage.ParentControl = this; pImage.KeepAspectRatio = _keepAspectRatio; - pImage.ZoomFromTop = !pItem.IsFolder; + pImage.ZoomFromTop = !pItem.IsFolder && _zoom; + pImage.ImageAlignment = _imageAlignment; + pImage.ImageVAlignment = _imageVAlignment; pImage.FlipX = _flipX; pImage.FlipY = _flipY; pImage.DiffuseFileName = _diffuseFileName; @@ -519,10 +524,7 @@ pImage.AllocResources(); pItem.Thumbnail = pImage; - int xOff = (_thumbNailWidth + 2 * iOverSized - pImage.RenderWidth) / 2; - int yOff = (_thumbNailHeight + 2 * iOverSized - pImage.RenderHeight) / 2; - pImage.SetPosition(_thumbNailPositionX - iOverSized + dwPosX + xOff, - _thumbNailPositionY - iOverSized + dwPosY + yOff); + pImage.SetPosition(_thumbNailPositionX - iOverSized + dwPosX, _thumbNailPositionY - iOverSized + dwPosY); pImage.DimColor = DimColor; _sleeper += SLEEP_FRAME_COUNT; } @@ -533,13 +535,12 @@ pImage.SafeDispose(); pImage.AllocResources(); } - pImage.ZoomFromTop = !pItem.IsFolder; + pImage.ZoomFromTop = !pItem.IsFolder && _zoom; + pImage.ImageAlignment = _imageAlignment; + pImage.ImageVAlignment = _imageVAlignment; pImage.Width = _thumbNailWidth + 2 * iOverSized; pImage.Height = _thumbNailHeight + 2 * iOverSized; - int xOff = (_thumbNailWidth + 2 * iOverSized - pImage.RenderWidth) / 2; - int yOff = (_thumbNailHeight + 2 * iOverSized - pImage.RenderHeight) / 2; - pImage.SetPosition(_thumbNailPositionX + dwPosX - iOverSized + xOff, - _thumbNailPositionY - iOverSized + dwPosY + yOff); + pImage.SetPosition(_thumbNailPositionX + dwPosX - iOverSized, _thumbNailPositionY - iOverSized + dwPosY); pImage.DimColor = DimColor; if (pImage.Focus != itemFocused) { @@ -578,17 +579,16 @@ _thumbNailHeight + 2 * iOverSized, pItem.IconImageBig, 0x0); pImage.ParentControl = this; pImage.KeepAspectRatio = _keepAspectRatio; - pImage.ZoomFromTop = !pItem.IsFolder; + pImage.ZoomFromTop = !pItem.IsFolder && _zoom; + pImage.ImageAlignment = _imageAlignment; + pImage.ImageVAlignment = _imageVAlignment; pImage.AllocResources(); pImage.FlipX = _flipX; pImage.FlipY = _flipY; pImage.DiffuseFileName = _diffuseFileName; pImage.SetAnimations(_allThumbAnimations); pItem.IconBig = pImage; - int xOff = (_thumbNailWidth + 2 * iOverSized - pImage.RenderWidth) / 2; - int yOff = (_thumbNailHeight + 2 * iOverSized - pImage.RenderHeight) / 2; - pImage.SetPosition(_thumbNailPositionX + dwPosX - iOverSized + xOff, - _thumbNailPositionY - iOverSized + dwPosY + yOff); + pImage.SetPosition(_thumbNailPositionX + dwPosX - iOverSized, _thumbNailPositionY - iOverSized + dwPosY); pImage.DimColor = DimColor; pImage.MaskFileName = _textureMask; @@ -606,13 +606,12 @@ } if (null != pImage) { - pImage.ZoomFromTop = !pItem.IsFolder; + pImage.ZoomFromTop = !pItem.IsFolder && _zoom; + pImage.ImageAlignment = _imageAlignment; + pImage.ImageVAlignment = _imageVAlignment; pImage.Width = _thumbNailWidth + 2 * iOverSized; pImage.Height = _thumbNailHeight + 2 * iOverSized; - int xOff = (_thumbNailWidth + 2 * iOverSized - pImage.RenderWidth) / 2; - int yOff = (_thumbNailHeight + 2 * iOverSized - pImage.RenderHeight) / 2; - pImage.SetPosition(_thumbNailPositionX - iOverSized + dwPosX + xOff, - _thumbNailPositionY - iOverSized + dwPosY + yOff); + pImage.SetPosition(_thumbNailPositionX - iOverSized + dwPosX, _thumbNailPositionY - iOverSized + dwPosY); pImage.DimColor = DimColor; if (itemFocused)