diff --git a/Caching/FileDbCache/Properties/AssemblyInfo.cs b/Caching/FileDbCache/Properties/AssemblyInfo.cs
index be8c9071..92046b81 100644
--- a/Caching/FileDbCache/Properties/AssemblyInfo.cs
+++ b/Caching/FileDbCache/Properties/AssemblyInfo.cs
@@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
[assembly: AssemblyTrademark("")]
-[assembly: AssemblyVersion("1.3.1")]
-[assembly: AssemblyFileVersion("1.3.1")]
+[assembly: AssemblyVersion("1.3.2")]
+[assembly: AssemblyFileVersion("1.3.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
diff --git a/Caching/ImageFileCache/Properties/AssemblyInfo.cs b/Caching/ImageFileCache/Properties/AssemblyInfo.cs
index 18c1c75e..96fc3d2e 100644
--- a/Caching/ImageFileCache/Properties/AssemblyInfo.cs
+++ b/Caching/ImageFileCache/Properties/AssemblyInfo.cs
@@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
[assembly: AssemblyTrademark("")]
-[assembly: AssemblyVersion("1.3.1")]
-[assembly: AssemblyFileVersion("1.3.1")]
+[assembly: AssemblyVersion("1.3.2")]
+[assembly: AssemblyFileVersion("1.3.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
diff --git a/MapControl/MapBase.Silverlight.WinRT.cs b/MapControl/MapBase.Silverlight.WinRT.cs
index 85133f90..d3f79c6f 100644
--- a/MapControl/MapBase.Silverlight.WinRT.cs
+++ b/MapControl/MapBase.Silverlight.WinRT.cs
@@ -27,6 +27,7 @@ namespace MapControl
partial void Initialize()
{
+ Background = new SolidColorBrush(Colors.Transparent);
Clip = new RectangleGeometry();
Children.Add(tileContainer);
diff --git a/MapControl/MapBase.cs b/MapControl/MapBase.cs
index d42e72c1..9eebb9bd 100644
--- a/MapControl/MapBase.cs
+++ b/MapControl/MapBase.cs
@@ -90,8 +90,8 @@ namespace MapControl
private PointAnimation centerAnimation;
private DoubleAnimation zoomLevelAnimation;
private DoubleAnimation headingAnimation;
- private Brush previousBackground;
- private Brush previousForeground;
+ private Brush storedBackground;
+ private Brush storedForeground;
private bool internalPropertyChange;
public MapBase()
@@ -497,32 +497,32 @@ namespace MapControl
if (tileLayer != null && tileLayer.Background != null)
{
- if (previousBackground == null)
+ if (storedBackground == null)
{
- previousBackground = Background;
+ storedBackground = Background;
}
Background = tileLayer.Background;
}
- else if (previousBackground != null)
+ else if (storedBackground != null)
{
- Background = previousBackground;
- previousBackground = null;
+ Background = storedBackground;
+ storedBackground = null;
}
if (tileLayer != null && tileLayer.Foreground != null)
{
- if (previousForeground == null)
+ if (storedForeground == null)
{
- previousForeground = Foreground;
+ storedForeground = Foreground;
}
Foreground = tileLayer.Foreground;
}
- else if (previousForeground != null)
+ else if (storedForeground != null)
{
- Foreground = previousForeground;
- previousForeground = null;
+ Foreground = storedForeground;
+ storedForeground = null;
}
}
@@ -806,12 +806,12 @@ namespace MapControl
private void UpdateTransform()
{
var center = Center;
- var origin = mapTransform.Transform(transformOrigin ?? center);
- var scale = tileContainer.SetViewportTransform(ZoomLevel, Heading, origin, viewportOrigin, RenderSize);
+ var scale = SetViewportTransform(transformOrigin ?? center);
if (transformOrigin != null)
{
center = ViewportPointToLocation(new Point(RenderSize.Width / 2d, RenderSize.Height / 2d));
+
var coerced = CoerceLocation(center, 1e-3);
InternalSetValue(CenterProperty, center);
@@ -819,7 +819,7 @@ namespace MapControl
if (coerced)
{
ResetTransformOrigin();
- scale = tileContainer.SetViewportTransform(ZoomLevel, Heading, mapTransform.Transform(center), viewportOrigin, RenderSize);
+ scale = SetViewportTransform(center);
}
}
@@ -829,5 +829,10 @@ namespace MapControl
OnViewportChanged();
}
+
+ private double SetViewportTransform(Location origin)
+ {
+ return tileContainer.SetViewportTransform(ZoomLevel, Heading, mapTransform.Transform(origin), viewportOrigin, RenderSize);
+ }
}
}
diff --git a/MapControl/MapImageLayer.cs b/MapControl/MapImageLayer.cs
index 1eece36c..d3cd7d94 100644
--- a/MapControl/MapImageLayer.cs
+++ b/MapControl/MapImageLayer.cs
@@ -10,6 +10,7 @@ using System.Net;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
+using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Threading;
@@ -27,7 +28,6 @@ namespace MapControl
public class MapImageLayer : MapPanel
{
private readonly DispatcherTimer updateTimer;
- private readonly WebClient webClient;
private string uriFormat;
private bool latLonBoundingBox;
private bool imageIsValid;
@@ -39,9 +39,6 @@ namespace MapControl
Children.Add(new MapImage { Opacity = 0d });
Children.Add(new MapImage { Opacity = 0d });
- webClient = new WebClient();
- webClient.Headers.Add(HttpRequestHeader.UserAgent, "XAML Map Control");
-
updateTimer = new DispatcherTimer { Interval = TileContainer.UpdateInterval };
updateTimer.Tick += UpdateImage;
}
@@ -86,6 +83,61 @@ namespace MapControl
updateTimer.Start();
}
+ protected virtual ImageSource GetImage(double west, double east, double south, double north, int width, int height)
+ {
+ ImageSource image = null;
+ var uri = uriFormat.Replace("{X}", width.ToString()).Replace("{Y}", height.ToString());
+
+ if (latLonBoundingBox)
+ {
+ uri = uri.
+ Replace("{w}", west.ToString(CultureInfo.InvariantCulture)).
+ Replace("{s}", south.ToString(CultureInfo.InvariantCulture)).
+ Replace("{e}", east.ToString(CultureInfo.InvariantCulture)).
+ Replace("{n}", north.ToString(CultureInfo.InvariantCulture));
+ }
+ else
+ {
+ var p1 = ParentMap.MapTransform.Transform(new Location(south, west));
+ var p2 = ParentMap.MapTransform.Transform(new Location(north, east));
+ var arc = TileSource.EarthRadius * Math.PI / 180d;
+
+ uri = uri.
+ Replace("{W}", (arc * p1.X).ToString(CultureInfo.InvariantCulture)).
+ Replace("{S}", (arc * p1.Y).ToString(CultureInfo.InvariantCulture)).
+ Replace("{E}", (arc * p2.X).ToString(CultureInfo.InvariantCulture)).
+ Replace("{N}", (arc * p2.Y).ToString(CultureInfo.InvariantCulture));
+ }
+
+ try
+ {
+ var bitmap = new BitmapImage();
+ var request = (HttpWebRequest)WebRequest.Create(uri);
+ request.UserAgent = "XAML Map Control";
+
+ using (var response = (HttpWebResponse)request.GetResponse())
+ using (var responseStream = response.GetResponseStream())
+ using (var memoryStream = new MemoryStream())
+ {
+ responseStream.CopyTo(memoryStream);
+
+ bitmap.BeginInit();
+ bitmap.CacheOption = BitmapCacheOption.OnLoad;
+ bitmap.StreamSource = memoryStream;
+ bitmap.EndInit();
+ bitmap.Freeze();
+ }
+
+ image = bitmap;
+ }
+ catch (Exception ex)
+ {
+ Trace.TraceWarning("{0}: {1}", uri, ex.Message);
+ }
+
+ return image;
+ }
+
private void UpdateImage(object sender, EventArgs e)
{
updateTimer.Stop();
@@ -98,14 +150,12 @@ namespace MapControl
imageIsValid = true;
updateInProgress = true;
- var uri = uriFormat.
- Replace("{X}", ActualWidth.ToString("F0", CultureInfo.InvariantCulture)).
- Replace("{Y}", ActualHeight.ToString("F0", CultureInfo.InvariantCulture));
-
var loc1 = ParentMap.ViewportPointToLocation(new Point(0d, 0d));
var loc2 = ParentMap.ViewportPointToLocation(new Point(ActualWidth, 0d));
var loc3 = ParentMap.ViewportPointToLocation(new Point(0d, ActualHeight));
var loc4 = ParentMap.ViewportPointToLocation(new Point(ActualWidth, ActualHeight));
+ var width = (int)ActualWidth;
+ var height = (int)ActualHeight;
ThreadPool.QueueUserWorkItem(o =>
{
@@ -113,61 +163,31 @@ namespace MapControl
var east = Math.Max(loc1.Longitude, Math.Max(loc2.Longitude, Math.Max(loc3.Longitude, loc4.Longitude)));
var south = Math.Min(loc1.Latitude, Math.Min(loc2.Latitude, Math.Min(loc3.Latitude, loc4.Latitude)));
var north = Math.Max(loc1.Latitude, Math.Max(loc2.Latitude, Math.Max(loc3.Latitude, loc4.Latitude)));
+ var image = GetImage(west, east, south, north, width, height);
- if (latLonBoundingBox)
+ if (image != null)
{
- uri = uri.
- Replace("{w}", west.ToString(CultureInfo.InvariantCulture)).
- Replace("{s}", south.ToString(CultureInfo.InvariantCulture)).
- Replace("{e}", east.ToString(CultureInfo.InvariantCulture)).
- Replace("{n}", north.ToString(CultureInfo.InvariantCulture));
- }
- else
- {
- var p1 = ParentMap.MapTransform.Transform(new Location(south, west));
- var p2 = ParentMap.MapTransform.Transform(new Location(north, east));
- var arc = TileSource.EarthRadius * Math.PI / 180d;
-
- uri = uri.
- Replace("{W}", (arc * p1.X).ToString(CultureInfo.InvariantCulture)).
- Replace("{S}", (arc * p1.Y).ToString(CultureInfo.InvariantCulture)).
- Replace("{E}", (arc * p2.X).ToString(CultureInfo.InvariantCulture)).
- Replace("{N}", (arc * p2.Y).ToString(CultureInfo.InvariantCulture));
- }
-
- try
- {
- var buffer = webClient.DownloadData(uri);
- var bitmap = new BitmapImage();
-
- using (var stream = new MemoryStream(buffer))
- {
- bitmap.BeginInit();
- bitmap.CacheOption = BitmapCacheOption.OnLoad;
- bitmap.StreamSource = stream;
- bitmap.EndInit();
- bitmap.Freeze();
- }
-
Dispatcher.BeginInvoke((Action)(() =>
{
- var image = (MapImage)Children[currentImageIndex];
- image.BeginAnimation(Image.OpacityProperty,
- new DoubleAnimation(0d, Tile.AnimationDuration)
+ var mapImage = (MapImage)Children[currentImageIndex];
+ mapImage.BeginAnimation(Image.OpacityProperty,
+ new DoubleAnimation
{
+ To = 0,
+ Duration = Tile.AnimationDuration,
BeginTime = Tile.AnimationDuration
});
currentImageIndex = (currentImageIndex + 1) % 2;
- image = (MapImage)Children[currentImageIndex];
- image.Source = null;
- image.North = double.NaN; // avoid frequent MapRectangle.UpdateGeometry() calls
- image.West = west;
- image.East = east;
- image.South = south;
- image.North = north;
- image.Source = bitmap;
- image.BeginAnimation(Image.OpacityProperty, new DoubleAnimation(1d, Tile.AnimationDuration));
+ mapImage = (MapImage)Children[currentImageIndex];
+ mapImage.Source = null;
+ mapImage.North = double.NaN; // avoid frequent MapRectangle.UpdateGeometry() calls
+ mapImage.West = west;
+ mapImage.East = east;
+ mapImage.South = south;
+ mapImage.North = north;
+ mapImage.Source = image;
+ mapImage.BeginAnimation(Image.OpacityProperty, new DoubleAnimation(1d, Tile.AnimationDuration));
if (!imageIsValid)
{
@@ -175,10 +195,6 @@ namespace MapControl
}
}));
}
- catch (Exception ex)
- {
- Trace.TraceWarning("{0}: {1}", uri, ex.Message);
- }
updateInProgress = false;
});
diff --git a/MapControl/MapPanel.cs b/MapControl/MapPanel.cs
index 77f2ddba..a7e8dd38 100644
--- a/MapControl/MapPanel.cs
+++ b/MapControl/MapPanel.cs
@@ -24,7 +24,7 @@ namespace MapControl
///
/// Positions child elements on a Map, at a position specified by the attached property Location.
/// The Location is transformed into a viewport position by the MapBase.LocationToViewportPoint
- /// method and then applied to the RenderTransform as an appropriate TranslateTransform.
+ /// method and applied to a child element's RenderTransform as an appropriate TranslateTransform.
///
public partial class MapPanel : Panel, IMapElement
{
diff --git a/MapControl/Properties/AssemblyInfo.cs b/MapControl/Properties/AssemblyInfo.cs
index f276af65..1c7eee3c 100644
--- a/MapControl/Properties/AssemblyInfo.cs
+++ b/MapControl/Properties/AssemblyInfo.cs
@@ -15,8 +15,8 @@ using System.Windows;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
[assembly: AssemblyTrademark("")]
-[assembly: AssemblyVersion("1.3.1")]
-[assembly: AssemblyFileVersion("1.3.1")]
+[assembly: AssemblyVersion("1.3.2")]
+[assembly: AssemblyFileVersion("1.3.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
diff --git a/MapControl/TileContainer.Silverlight.WinRT.cs b/MapControl/TileContainer.Silverlight.WinRT.cs
index 9d35af90..816355a9 100644
--- a/MapControl/TileContainer.Silverlight.WinRT.cs
+++ b/MapControl/TileContainer.Silverlight.WinRT.cs
@@ -2,6 +2,7 @@
// Copyright © Clemens Fischer 2012-2013
// Licensed under the Microsoft Public License (Ms-PL)
+using System;
#if NETFX_CORE
using Windows.Foundation;
using Windows.UI.Xaml.Controls;
@@ -16,21 +17,32 @@ namespace MapControl
{
internal partial class TileContainer : Panel
{
- private Matrix GetTransformMatrix(Matrix transform, double scale)
+ private void SetViewportTransform(Matrix transform)
{
- return transform
+ ViewportTransform.Matrix = transform.RotateAt(rotation, viewportOrigin.X, viewportOrigin.Y);
+ }
+
+ ///
+ /// Gets a transform matrix with origin at tileGrid.X and tileGrid.Y to minimize rounding errors.
+ ///
+ private Matrix GetTileLayerTransformMatrix()
+ {
+ var scale = Math.Pow(2d, zoomLevel - tileZoomLevel);
+
+ return new Matrix(1d, 0d, 0d, 1d, tileGrid.X * TileSource.TileSize, tileGrid.Y * TileSource.TileSize)
.Scale(scale, scale)
- .Translate(offset.X, offset.Y)
- .RotateAt(rotation, origin.X, origin.Y);
+ .Translate(tileLayerOffset.X, tileLayerOffset.Y)
+ .RotateAt(rotation, viewportOrigin.X, viewportOrigin.Y);
}
private Matrix GetTileIndexMatrix(int numTiles)
{
- var mapToTileScale = (double)numTiles / 360d;
+ var scale = (double)numTiles / 360d;
+
return ViewportTransform.Matrix
.Invert() // view to map coordinates
.Translate(180d, -180d)
- .Scale(mapToTileScale, -mapToTileScale); // map coordinates to tile indices
+ .Scale(scale, -scale); // map coordinates to tile indices
}
protected override Size MeasureOverride(Size availableSize)
diff --git a/MapControl/TileContainer.WPF.cs b/MapControl/TileContainer.WPF.cs
index 64e9378c..b4afe68a 100644
--- a/MapControl/TileContainer.WPF.cs
+++ b/MapControl/TileContainer.WPF.cs
@@ -2,27 +2,43 @@
// Copyright © Clemens Fischer 2012-2013
// Licensed under the Microsoft Public License (Ms-PL)
+using System;
using System.Windows.Media;
namespace MapControl
{
internal partial class TileContainer : ContainerVisual
{
- private Matrix GetTransformMatrix(Matrix transform, double scale)
+ private void SetViewportTransform(Matrix transform)
{
+ transform.RotateAt(rotation, viewportOrigin.X, viewportOrigin.Y);
+ ViewportTransform.Matrix = transform;
+ }
+
+ ///
+ /// Gets a transform matrix with origin at tileGrid.X and tileGrid.Y to minimize rounding errors.
+ ///
+ private Matrix GetTileLayerTransformMatrix()
+ {
+ var scale = Math.Pow(2d, zoomLevel - tileZoomLevel);
+ var transform = new Matrix(1d, 0d, 0d, 1d, tileGrid.X * TileSource.TileSize, tileGrid.Y * TileSource.TileSize);
+
transform.Scale(scale, scale);
- transform.Translate(offset.X, offset.Y);
- transform.RotateAt(rotation, origin.X, origin.Y);
+ transform.Translate(tileLayerOffset.X, tileLayerOffset.Y);
+ transform.RotateAt(rotation, viewportOrigin.X, viewportOrigin.Y);
+
return transform;
}
private Matrix GetTileIndexMatrix(int numTiles)
{
- var mapToTileScale = (double)numTiles / 360d;
+ var scale = (double)numTiles / 360d;
var transform = ViewportTransform.Matrix;
+
transform.Invert(); // view to map coordinates
transform.Translate(180d, -180d);
- transform.Scale(mapToTileScale, -mapToTileScale); // map coordinates to tile indices
+ transform.Scale(scale, -scale); // map coordinates to tile indices
+
return transform;
}
}
diff --git a/MapControl/TileContainer.cs b/MapControl/TileContainer.cs
index 965c2c25..ced0995e 100644
--- a/MapControl/TileContainer.cs
+++ b/MapControl/TileContainer.cs
@@ -24,9 +24,9 @@ namespace MapControl
internal static TimeSpan UpdateInterval = TimeSpan.FromSeconds(0.5);
private readonly DispatcherTimer updateTimer;
- private Size size;
- private Point origin;
- private Point offset;
+ private Size viewportSize;
+ private Point viewportOrigin;
+ private Point tileLayerOffset;
private double rotation;
private double zoomLevel;
private int tileZoomLevel;
@@ -80,10 +80,10 @@ namespace MapControl
Children.Clear();
}
- public double SetViewportTransform(double mapZoomLevel, double mapRotation, Point mapOrigin, Point viewportOrigin, Size viewportSize)
+ public double SetViewportTransform(double mapZoomLevel, double mapRotation, Point mapOrigin, Point vpOrigin, Size vpSize)
{
var scale = Math.Pow(2d, zoomLevel) * TileSource.TileSize / 360d;
- var oldMapOriginX = (origin.X - offset.X) / scale - 180d;
+ var oldMapOriginX = (viewportOrigin.X - tileLayerOffset.X) / scale - 180d;
if (zoomLevel != mapZoomLevel)
{
@@ -92,15 +92,23 @@ namespace MapControl
}
rotation = mapRotation;
- size = viewportSize;
- origin = viewportOrigin;
+ viewportSize = vpSize;
+ viewportOrigin = vpOrigin;
- offset.X = origin.X - (180d + mapOrigin.X) * scale;
- offset.Y = origin.Y - (180d - mapOrigin.Y) * scale;
+ var transformOffsetX = viewportOrigin.X - mapOrigin.X * scale;
+ var transformOffsetY = viewportOrigin.Y + mapOrigin.Y * scale;
- ViewportTransform.Matrix = GetTransformMatrix(new Matrix(1d, 0d, 0d, -1d, 180d, 180d), scale);
+ tileLayerOffset.X = transformOffsetX - 180d * scale;
+ tileLayerOffset.Y = transformOffsetY - 180d * scale;
- if (Math.Sign(mapOrigin.X) == Math.Sign(oldMapOriginX))
+ SetViewportTransform(new Matrix(scale, 0d, 0d, -scale, transformOffsetX, transformOffsetY));
+
+ if (Math.Sign(mapOrigin.X) != Math.Sign(oldMapOriginX) && Math.Abs(mapOrigin.X) > 90d)
+ {
+ // immediately handle map origin leap when map center moves across the date line
+ UpdateTiles(this, EventArgs.Empty);
+ }
+ else
{
var tileLayerTransform = GetTileLayerTransformMatrix();
@@ -111,25 +119,10 @@ namespace MapControl
updateTimer.Start();
}
- else
- {
- // immediately handle map origin leap when map center moves across the date line
- UpdateTiles(this, EventArgs.Empty);
- }
return scale;
}
- private Matrix GetTileLayerTransformMatrix()
- {
- // Calculates the TileLayer VisualTransform or RenderTransform matrix
- // with origin at tileGrid.X and tileGrid.Y to minimize rounding errors.
-
- return GetTransformMatrix(
- new Matrix(1d, 0d, 0d, 1d, tileGrid.X * TileSource.TileSize, tileGrid.Y * TileSource.TileSize),
- Math.Pow(2d, zoomLevel - tileZoomLevel));
- }
-
private void UpdateTiles(object sender, object e)
{
updateTimer.Stop();
@@ -140,9 +133,9 @@ namespace MapControl
// tile indices of visible rectangle
var p1 = transform.Transform(new Point(0d, 0d));
- var p2 = transform.Transform(new Point(size.Width, 0d));
- var p3 = transform.Transform(new Point(0d, size.Height));
- var p4 = transform.Transform(new Point(size.Width, size.Height));
+ var p2 = transform.Transform(new Point(viewportSize.Width, 0d));
+ var p3 = transform.Transform(new Point(0d, viewportSize.Height));
+ var p4 = transform.Transform(new Point(viewportSize.Width, viewportSize.Height));
var left = Math.Min(p1.X, Math.Min(p2.X, Math.Min(p3.X, p4.X)));
var right = Math.Max(p1.X, Math.Max(p2.X, Math.Max(p3.X, p4.X)));
diff --git a/MapControl/TileLayer.cs b/MapControl/TileLayer.cs
index a81bba14..d923db5a 100644
--- a/MapControl/TileLayer.cs
+++ b/MapControl/TileLayer.cs
@@ -121,13 +121,10 @@ namespace MapControl
for (var z = minZoomLevel; z <= maxZoomLevel; z++)
{
var tileSize = 1 << (zoomLevel - z);
- var x1 = grid.X / tileSize;
- var y1 = grid.Y / tileSize;
+ var x1 = (int)Math.Floor((double)grid.X / tileSize); // may be negative
var x2 = (grid.X + grid.Width - 1) / tileSize;
- var y2 = (grid.Y + grid.Height - 1) / tileSize;
-
- y1 = Math.Max(y1, 0);
- y2 = Math.Min(y2, (1 << z) - 1);
+ var y1 = Math.Max(grid.Y / tileSize, 0);
+ var y2 = Math.Min((grid.Y + grid.Height - 1) / tileSize, (1 << z) - 1);
for (var y = y1; y <= y2; y++)
{
diff --git a/MapControl/WinRT/Properties/AssemblyInfo.cs b/MapControl/WinRT/Properties/AssemblyInfo.cs
index dd8d8c29..afdd02e5 100644
--- a/MapControl/WinRT/Properties/AssemblyInfo.cs
+++ b/MapControl/WinRT/Properties/AssemblyInfo.cs
@@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
[assembly: AssemblyTrademark("")]
-[assembly: AssemblyVersion("1.3.1")]
-[assembly: AssemblyFileVersion("1.3.1")]
+[assembly: AssemblyVersion("1.3.2")]
+[assembly: AssemblyFileVersion("1.3.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
diff --git a/SampleApps/SilverlightApplication.Web/Properties/AssemblyInfo.cs b/SampleApps/SilverlightApplication.Web/Properties/AssemblyInfo.cs
index 37d31a26..0ce64bba 100644
--- a/SampleApps/SilverlightApplication.Web/Properties/AssemblyInfo.cs
+++ b/SampleApps/SilverlightApplication.Web/Properties/AssemblyInfo.cs
@@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
[assembly: AssemblyTrademark("")]
-[assembly: AssemblyVersion("1.3.1")]
-[assembly: AssemblyFileVersion("1.3.1")]
+[assembly: AssemblyVersion("1.3.2")]
+[assembly: AssemblyFileVersion("1.3.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
diff --git a/SampleApps/SilverlightApplication/Properties/AssemblyInfo.cs b/SampleApps/SilverlightApplication/Properties/AssemblyInfo.cs
index 7c279f83..874b00f2 100644
--- a/SampleApps/SilverlightApplication/Properties/AssemblyInfo.cs
+++ b/SampleApps/SilverlightApplication/Properties/AssemblyInfo.cs
@@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
[assembly: AssemblyTrademark("")]
-[assembly: AssemblyVersion("1.3.1")]
-[assembly: AssemblyFileVersion("1.3.1")]
+[assembly: AssemblyVersion("1.3.2")]
+[assembly: AssemblyFileVersion("1.3.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
diff --git a/SampleApps/StoreApplication/Properties/AssemblyInfo.cs b/SampleApps/StoreApplication/Properties/AssemblyInfo.cs
index b0eeb8ad..cd7f1cfd 100644
--- a/SampleApps/StoreApplication/Properties/AssemblyInfo.cs
+++ b/SampleApps/StoreApplication/Properties/AssemblyInfo.cs
@@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
[assembly: AssemblyTrademark("")]
-[assembly: AssemblyVersion("1.3.1")]
-[assembly: AssemblyFileVersion("1.3.1")]
+[assembly: AssemblyVersion("1.3.2")]
+[assembly: AssemblyFileVersion("1.3.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
diff --git a/SampleApps/SurfaceApplication/Properties/AssemblyInfo.cs b/SampleApps/SurfaceApplication/Properties/AssemblyInfo.cs
index f7478f6e..e140800c 100644
--- a/SampleApps/SurfaceApplication/Properties/AssemblyInfo.cs
+++ b/SampleApps/SurfaceApplication/Properties/AssemblyInfo.cs
@@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
[assembly: AssemblyTrademark("")]
-[assembly: AssemblyVersion("1.3.1")]
-[assembly: AssemblyFileVersion("1.3.1")]
+[assembly: AssemblyVersion("1.3.2")]
+[assembly: AssemblyFileVersion("1.3.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
diff --git a/SampleApps/WpfApplication/Properties/AssemblyInfo.cs b/SampleApps/WpfApplication/Properties/AssemblyInfo.cs
index a7f649e8..8cb44272 100644
--- a/SampleApps/WpfApplication/Properties/AssemblyInfo.cs
+++ b/SampleApps/WpfApplication/Properties/AssemblyInfo.cs
@@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © Clemens Fischer 2012-2013")]
[assembly: AssemblyTrademark("")]
-[assembly: AssemblyVersion("1.3.1")]
-[assembly: AssemblyFileVersion("1.3.1")]
+[assembly: AssemblyVersion("1.3.2")]
+[assembly: AssemblyFileVersion("1.3.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]