Ejemplo n.º 1
0
		public void UseSpringsNoAnimations ()
		{
			MultiScaleImage msi = new MultiScaleImage ();

			msi.UseSprings = false;
			msi.ViewportWidth = 2.0;
			Assert.AreEqual (2.0, msi.ViewportWidth, "OriginalWidth");
			msi.ViewportWidth = .2;
			Assert.AreEqual (.2, msi.ViewportWidth, "FinalWidth");
		}
Ejemplo n.º 2
0
		public void ChangeUseSprings ()
		{
			MultiScaleImage msi = new MultiScaleImage ();

			msi.UseSprings = true;
			msi.ViewportWidth = 1.0;
			Assert.AreEqual (1.0, msi.ViewportWidth, "OriginalWidth");
			msi.ViewportWidth = .1;
			msi.UseSprings = false;
			Assert.AreEqual (.1, msi.ViewportWidth, "FinalWidth");
		}
Ejemplo n.º 3
0
        /// <summary>
        /// A Raster Tile Layer for the map
        /// </summary>
        /// <param name="map">Instance of the map in which to create the layer</param>
        public TileLayer(Map map)
        {
            _Map = map;
            _Msi = new MultiScaleImage();
            Children.Add(_Msi);
            _Msi.Loaded += _Msi_Loaded;
            _Msi.LayoutUpdated += (o, e) => CheckViewBounds();
            _Msi.MotionFinished += (o, e) => _Map.Events.ZoomEnded(_Map, new MapEventArgs());
            _LastViewWidth = _Msi.ViewportWidth;
            _Msi.ViewportChanged += _Msi_ViewportChanged;
            Overlays = new ObservableCollection<ITileSource>();

            //This null TileSource allows the MSI to size itself correctly and earlier
            _Msi.Source = new TileSource(map);
        }
Ejemplo n.º 4
0
        public MainPage(string encodedVideo)
        {
            InitializeComponent();

            byte[] videoDescriptor = Convert.FromBase64String(encodedVideo);
            string xml = Encoding.UTF8.GetString(videoDescriptor, 0, videoDescriptor.Length);

            XmlSerializer serializer = new XmlSerializer(typeof(TimelapseVideo));
            using (StringReader reader = new StringReader(xml))
            {
                this.Video = (TimelapseVideo)serializer.Deserialize(reader);
            }

            this.ImageFrames = new List<MultiScaleImage>(10) { null, null, null, null, null, null, null, null, null, null};
            for (var i = 9; i >= 0; i--)
            {
                MultiScaleImage image = new MultiScaleImage();
                image.Width = 800;
                image.Height = 600;
                image.Source = new DeepZoomImageTileSource(new Uri(this.Video.Frames.ElementAt<TimelapseFrame>(i).Url, UriKind.Absolute));
                image.Opacity = 0;

                if (i == 0)
                {
                    image.ImageOpenSucceeded += ImageOpened;
                }

                this.ImageFrames.Insert(i, image);
                ImageCanvas.Children.Add(image);
            }
            this.ImageFrames.ElementAt(0).Opacity = 1;

            /*
            ThreadStart loader = delegate()
            {
                foreach (TimelapseFrame frame in this.Video.Frames)
                {
                    Dispatcher.BeginInvoke(new Action(() => this.Image.Source = new DeepZoomImageTileSource(new Uri(frame.Url, UriKind.Absolute))));
                    Thread.Sleep(1000);
                }
            };

            new Thread(loader).Start(); */
        }
Ejemplo n.º 5
0
 public void SetSize(double x, double y, double w, double h)
 {
     System.Windows.Controls.MultiScaleImage msifade = new System.Windows.Controls.MultiScaleImage();
     msifade.Source = _source;
     msifade.Loaded += new RoutedEventHandler(msi_Loaded);
     this.Children.Add(msifade);
     //
     _zoomfactor = ((w > h ? w : h) / 7);
     this.Width = w;
     this.Height = h;
     this.TransformHelper.Translate = new Point(x, y);
     //
     msifade.Width = w;
     msifade.Height = h;
     msifade.MinWidth = w;
     msifade.MinHeight = h;
     msifade.UseLayoutRounding = true;
     msifade.UseSprings = true;
 }
Ejemplo n.º 6
0
 public void InitializeComponent() {
     if (_contentLoaded) {
         return;
     }
     _contentLoaded = true;
     System.Windows.Application.LoadComponent(this, new System.Uri("/DeepZoomMarked;component/DeepZPoints.xaml", System.UriKind.Relative));
     this.hider = ((System.Windows.Media.Animation.Storyboard)(this.FindName("hider")));
     this.LayoutRoot = ((System.Windows.Controls.Grid)(this.FindName("LayoutRoot")));
     this.image = ((System.Windows.Controls.MultiScaleImage)(this.FindName("image")));
     this.marksPositions = ((System.Windows.Controls.Canvas)(this.FindName("marksPositions")));
     this.transform = ((System.Windows.Media.CompositeTransform)(this.FindName("transform")));
     this.newMark = ((System.Windows.Controls.StackPanel)(this.FindName("newMark")));
     this.newMarkAreaType = ((System.Windows.Controls.ComboBox)(this.FindName("newMarkAreaType")));
     this.fullscreen = ((System.Windows.Controls.Button)(this.FindName("fullscreen")));
     this.debugInfo = ((System.Windows.Controls.TextBlock)(this.FindName("debugInfo")));
     this.pagesPanelView = ((System.Windows.Controls.Grid)(this.FindName("pagesPanelView")));
     this.pagesPanelHider = ((System.Windows.Controls.TextBlock)(this.FindName("pagesPanelHider")));
     this.pagesPanel = ((System.Windows.Controls.StackPanel)(this.FindName("pagesPanel")));
     this.marksPanel = ((System.Windows.Controls.TreeView)(this.FindName("marksPanel")));
 }
Ejemplo n.º 7
0
			public MultiScaleImageAutomationPeerPoker (MultiScaleImage owner)
				: base (owner)
			{
			}
Ejemplo n.º 8
0
        public DZContext(MultiScaleImage msi)
        {
            TargetViewportWidth = 1;
            MinViewportWidth = .05;
            MaxViewportWidth = 2;
            Owner = msi;
            Owner.UseSprings = false;
            Owner.ViewportChanged += new RoutedEventHandler(Owner_ViewportChanged);
            ImagesToHide = new List<MultiScaleSubImage>();
            ImagesToShow = new List<MultiScaleSubImage>();

            /* ---------------------------------------------------------------------------------------------------
            -- Start Mouse and Keyboard handler for the MultiScaleImage --
            This block of code is the mouse and keyboard handler for the DeepZoom control.
            Parts of this code is borrowed from Scott Hanselman's and Soul Solutions blogs
            // Based on prior work done by Lutz Gerhard, Peter Blois, and Scott Hanselman
            ---------------------------------------------------------------------------------------------------- */
            bool mouseButtonPressed = false;
            bool dragInProgress = false;
            Point dragOffset = new Point();
            Point currentPosition = new Point();

            msi.ImageOpenSucceeded += new RoutedEventHandler(msi_ImageOpenSucceeded);
            msi.MotionFinished += new RoutedEventHandler(ArrangeOnFirstMotionFinished_MotionFinished);

            /*			KeyDown += delegate(object sender, KeyEventArgs e)
                        {
                            Point p = msi.ElementToLogicalPoint(new Point((msi.Width / 2), ((msi.Width / msi.AspectRatio) / 2)));
                            switch (e.Key)
                            {
                                case Key.I:
                                case Key.C:
                                case Key.Add:
                                    msi.ZoomAboutLogicalPoint(1.1, p.X, p.Y);
                                    break;
                                case Key.O:
                                case Key.Space:
                                case Key.Subtract:
                                    msi.ZoomAboutLogicalPoint(0.9, p.X, p.Y);
                                    break;
                                case Key.Left:
                                case Key.A:
                                    msi.ViewportOrigin = new Point(msi.ViewportOrigin.X - 0.1, msi.ViewportOrigin.Y);
                                    break;
                                case Key.Right:
                                case Key.D:
                                    msi.ViewportOrigin = new Point(msi.ViewportOrigin.X + 0.1, msi.ViewportOrigin.Y);
                                    break;
                                case Key.Up:
                                case Key.W:
                                    msi.ViewportOrigin = new Point(msi.ViewportOrigin.X, msi.ViewportOrigin.Y - 0.1);
                                    break;
                                case Key.Down:
                                case Key.S:
                                    msi.ViewportOrigin = new Point(msi.ViewportOrigin.X, msi.ViewportOrigin.Y + 0.1);
                                    break;
                                case Key.R:
                                    RandomizeAndArrange();
                                    break;
                            }
                        };
            */

            msi.MouseWheel += delegate(object sender, MouseWheelEventArgs e)
            {
                DZContext context = this;

                if (!context.IsMouseWheelEnabled)
                    return;

                e.Handled = true;
                if (e.Delta > 0)
                    msi.Zoom(1.2, context.LastMousePosition); //, context.IsZoomForceEnabled);
                else
                    msi.Zoom(0.8, context.LastMousePosition); //, context.IsZoomForceEnabled);

                context.ClickedImageIndex = -1;
            };

            msi.MouseLeave += delegate(object sender, MouseEventArgs e)
            {
                if (mouseButtonPressed)
                {
                    mouseButtonPressed = false;
                    dragInProgress = false;
                }
            };

            msi.MouseLeftButtonDown += delegate(object sender, MouseButtonEventArgs e)
            {
                mouseButtonPressed = false;
                if (IsMousePanEnabled)
                {
                    mouseButtonPressed = true;
                }

                dragInProgress = false;
                dragOffset = e.GetPosition(msi);
                currentPosition = msi.ViewportOrigin;
                ClickedImageIndex = -1;
            };

            msi.MouseMove += delegate(object sender, MouseEventArgs e)
            {
                if (mouseButtonPressed)
                {
                    dragInProgress = true;
                    Point newOrigin = new Point();
                    newOrigin.X = currentPosition.X - (((e.GetPosition(msi).X - dragOffset.X) / msi.ActualWidth) * msi.ViewportWidth);
                    newOrigin.Y = currentPosition.Y - (((e.GetPosition(msi).Y - dragOffset.Y) / msi.ActualHeight) * msi.ViewportWidth);
                    msi.ViewportOrigin = newOrigin;
                }
                LastMousePosition = e.GetPosition(msi);
            };

            msi.MouseLeftButtonUp += delegate(object sender, MouseButtonEventArgs e)
            {
                if (mouseButtonPressed && !dragInProgress)
                {
                    Point p = msi.ElementToLogicalPoint(e.GetPosition(msi));
                    int subImageIndex = msi.SubImageHitTest(p);
                    if (subImageIndex >= 0)
                    {
                        msi.DisplaySubImageCentered(subImageIndex);
                        ClickedImageIndex = subImageIndex;
                    }

                    if (IsZoomOnClickEnabled)
                    {
                        bool shiftDown = (Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift;
                        if (shiftDown)
                            msi.Zoom(0.5, e.GetPosition(msi));
                        else
                            msi.Zoom(2.0, e.GetPosition(msi));
                    }
                }
                mouseButtonPressed = false;
                dragInProgress = false;
            };
        }
Ejemplo n.º 9
0
 void msi_Loaded(object sender, RoutedEventArgs e)
 {
     if (this.Children.Contains(_msi)) this.Children.Remove(_msi);
     _msi = (System.Windows.Controls.MultiScaleImage)sender;
     //_msi.CacheMode = new BitmapCache();
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Gets the parts from the template.
 /// </summary>
 public override void OnApplyTemplate()
 {
     base.OnApplyTemplate();
     this.multiScaleImage = this.GetTemplateChild(DeepZoomViewer.ElementMultiScaleImage) as MultiScaleImage;
     if (this.multiScaleImage != null)
     {
         this.multiScaleImage.ImageOpenSucceeded += new RoutedEventHandler(this.MultiScaleImage_ImageOpenSucceeded);
         this.multiScaleImage.ImageOpenFailed += new EventHandler<ExceptionRoutedEventArgs>(this.MultiScaleImage_ImageOpenFailed);
     }
 }
Ejemplo n.º 11
0
 private void WriteInnerElement(MultiScaleImage image, string typeName)
 {
     //TODO: implement
 }