Пример #1
0
        public override bool Configure(CameraSummary summary)
        {
            bool needsReconnection = false;
            FormConfiguration form = new FormConfiguration(summary);

            FormsHelper.Locate(form);
            if (form.ShowDialog() == DialogResult.OK)
            {
                if (form.AliasChanged)
                {
                    summary.UpdateAlias(form.Alias, form.PickedIcon);
                }

                if (form.SpecificChanged)
                {
                    SpecificInfo info = new SpecificInfo();
                    info.MediaTypeIndex    = form.SelectedMediaTypeIndex;
                    info.SelectedFramerate = form.SelectedFramerate;
                    info.CameraProperties  = form.CameraProperties;

                    summary.UpdateSpecific(info);

                    summary.UpdateDisplayRectangle(Rectangle.Empty);
                    needsReconnection = form.NeedsReconnection;
                }

                CameraTypeManager.UpdatedCameraSummary(summary);
            }

            form.Dispose();
            return(needsReconnection);
        }
Пример #2
0
        public override bool Configure(CameraSummary summary)
        {
            bool needsReconnection = false;
            FormConfiguration form = new FormConfiguration(summary);

            if (form.ShowDialog() == DialogResult.OK)
            {
                if (form.AliasChanged)
                {
                    summary.UpdateAlias(form.Alias, form.PickedIcon);
                }

                if (form.SpecificChanged)
                {
                    SpecificInfo info = new SpecificInfo();
                    info.FrameInterval = form.FrameInterval;
                    info.FrameSize     = form.FrameSize;
                    summary.UpdateSpecific(info);
                    summary.UpdateDisplayRectangle(Rectangle.Empty);

                    needsReconnection = true;
                }

                CameraTypeManager.UpdatedCameraSummary(summary);
            }

            form.Dispose();
            return(needsReconnection);
        }
Пример #3
0
 private void Drop(DragEventArgs e, int target)
 {
     if (e.Data.GetDataPresent(typeof(CameraSummary)))
     {
         CameraSummary summary = (CameraSummary)e.Data.GetData(typeof(CameraSummary));
         if (summary != null)
         {
             CameraTypeManager.LoadCamera(summary, target);
         }
     }
     else if (e.Data.GetDataPresent(DataFormats.StringFormat))
     {
         string filename = (string)e.Data.GetData(DataFormats.StringFormat);
         FileLoadAsked(this, new FileLoadAskedEventArgs(filename, target));
     }
     else if (e.Data.GetDataPresent(DataFormats.FileDrop))
     {
         Array fileArray = (Array)e.Data.GetData(DataFormats.FileDrop);
         if (fileArray != null)
         {
             string filename = fileArray.GetValue(0).ToString();
             FileLoadAsked(this, new FileLoadAskedEventArgs(filename, target));
         }
     }
 }
Пример #4
0
        public static void LoadVideoInScreen(ScreenManagerKernel manager, string path, ScreenDescriptionPlayback screenDescription)
        {
            CameraTypeManager.CancelThumbnails();
            CameraTypeManager.StopDiscoveringCameras();

            LoadUnspecified(manager, path, screenDescription);
        }
Пример #5
0
        protected override bool ExecuteCommand(int cmd)
        {
            ThumbnailViewerCameraCommands command = (ThumbnailViewerCameraCommands)cmd;

            switch (command)
            {
            case ThumbnailViewerCameraCommands.RenameSelected:
                if (selectedThumbnail != null)
                {
                    selectedThumbnail.StartRenaming();
                }
                break;

            case ThumbnailViewerCameraCommands.LaunchSelected:
                CameraTypeManager.LoadCamera(selectedThumbnail.Summary, -1);
                break;

            case ThumbnailViewerCameraCommands.Refresh:
                refreshImages = true;
                CameraTypeManager.DiscoverCameras();
                this.Focus();
                break;

            default:
                return(base.ExecuteCommand(cmd));
            }

            return(true);
        }
Пример #6
0
        private void BtnReconnect_Click(object sender, EventArgs e)
        {
            SpecificInfo info = summary.Specific as SpecificInfo;

            if (info == null)
            {
                return;
            }

            info.StreamFormat     = this.selectedStreamFormat;
            info.CameraProperties = this.CameraProperties;
            summary.UpdateDisplayRectangle(Rectangle.Empty);
            CameraTypeManager.UpdatedCameraSummary(summary);

            disconnect();
            connect();

            SpecificInfo specific = summary.Specific as SpecificInfo;

            if (specific == null || specific.Device == null)
            {
                return;
            }

            device           = specific.Device;
            cameraProperties = CameraPropertyManager.Read(device);

            PopulateStreamFormat();
            RemoveCameraControls();
            PopulateCameraControls();
            UpdateResultingFramerate();
        }
Пример #7
0
        public RootKernel(bool firstInstance)
        {
            CommandLineArgumentManager.Instance.ParseArguments(Environment.GetCommandLineArgs());

            VideoTypeManager.LoadVideoReaders();
            CameraTypeManager.LoadCameraManagers();
            ToolManager.LoadTools();

            BuildSubTree();
            mainWindow = new KinoveaMainWindow(this, firstInstance);
            NotificationCenter.RecentFilesChanged += NotificationCenter_RecentFilesChanged;
            NotificationCenter.FullScreenToggle   += NotificationCenter_FullscreenToggle;
            NotificationCenter.StatusUpdated      += (s, e) => statusLabel.Text = e.Status;
            NotificationCenter.PreferenceTabAsked += NotificationCenter_PreferenceTabAsked;

            log.Debug("Plug sub modules at UI extension points (Menus, ToolBars, StatusBAr, Windows).");
            ExtendMenu(mainWindow.menuStrip);
            ExtendToolBar(mainWindow.toolStrip);
            ExtendStatusBar(mainWindow.statusStrip);
            ExtendUI();

            log.Debug("Register global services offered at Root level.");

            Services.FormsHelper.SetMainForm(mainWindow);
        }
Пример #8
0
        public override bool Configure(CameraSummary summary)
        {
            bool needsReconnection = false;
            FormConfiguration form = new FormConfiguration(summary);

            FormsHelper.Locate(form);
            if (form.ShowDialog() == DialogResult.OK)
            {
                if (form.AliasChanged)
                {
                    summary.UpdateAlias(form.Alias, form.PickedIcon);
                }

                if (form.SpecificChanged)
                {
                    summary.UpdateSpecific(form.Specific);
                    summary.UpdateDisplayRectangle(Rectangle.Empty);
                    needsReconnection = true;
                }

                CameraTypeManager.UpdatedCameraSummary(summary);
            }

            form.Dispose();
            return(needsReconnection);
        }
Пример #9
0
        public override bool Configure(CameraSummary summary, Action disconnect, Action connect)
        {
            bool         needsReconnection = false;
            SpecificInfo info = summary.Specific as SpecificInfo;

            if (info == null)
            {
                return(false);
            }

            FormConfiguration form = new FormConfiguration(summary, disconnect, connect);

            FormsHelper.Locate(form);
            if (form.ShowDialog() == DialogResult.OK)
            {
                if (form.AliasChanged)
                {
                    summary.UpdateAlias(form.Alias, form.PickedIcon);
                }

                if (form.SpecificChanged)
                {
                    info.CameraProperties = form.CameraProperties;

                    summary.UpdateDisplayRectangle(Rectangle.Empty);
                    needsReconnection = true;
                }

                CameraTypeManager.UpdatedCameraSummary(summary);
            }

            form.Dispose();
            return(needsReconnection);
        }
Пример #10
0
        private void BtnReconnect_Click(object sender, EventArgs e)
        {
            if (SelectedStreamFormat == null)
            {
                // This happens when we load the config window and the camera isn't connected.
                return;
            }

            // Changing the image size will trigger a memory re-allocation inside uEye,
            // and we'll stop receiving the frame events which is causing all kinds of problems.
            // We can't just wait until we get out of this form because the framerate range depends on image size.
            // We also can't simply disconnect when user is changing size, because then we no longer have access to exposure and framerate.
            // Force a full connection cycle to reload the camera on the new settings.
            // This may reallocate the delay buffer.
            SpecificInfo info = summary.Specific as SpecificInfo;

            if (info == null)
            {
                return;
            }

            info.StreamFormat     = this.SelectedStreamFormat.Value;
            info.CameraProperties = this.CameraProperties;
            summary.UpdateDisplayRectangle(Rectangle.Empty);
            CameraTypeManager.UpdatedCameraSummary(summary);

            disconnect();
            connect();

            ReloadProperty("framerate");
            ReloadProperty("exposure");
        }
Пример #11
0
        public override bool Configure(CameraSummary summary)
        {
            bool         needsReconnection = false;
            SpecificInfo info = summary.Specific as SpecificInfo;

            if (info == null)
            {
                return(false);
            }

            FormConfiguration form = new FormConfiguration(summary);

            if (form.ShowDialog() == DialogResult.OK)
            {
                if (form.AliasChanged)
                {
                    summary.UpdateAlias(form.Alias, form.PickedIcon);
                }

                if (form.SpecificChanged)
                {
                    info.StreamFormat     = form.SelectedStreamFormat.Symbol;
                    info.Bayer8Conversion = form.Bayer8Conversion;
                    info.CameraProperties = form.CameraProperties;

                    summary.UpdateDisplayRectangle(Rectangle.Empty);
                    needsReconnection = true;
                }

                CameraTypeManager.UpdatedCameraSummary(summary);
            }

            form.Dispose();
            return(needsReconnection);
        }
Пример #12
0
        public void LoadCamera(CameraSummary summary)
        {
            CameraTypeManager.StopDiscoveringCameras();

            CameraManager manager = summary.Manager;

            grabber = manager.Connect(summary);
        }
Пример #13
0
        private void Thumbnail_LaunchCamera(object sender, EventArgs e)
        {
            ThumbnailCamera thumbnail = sender as ThumbnailCamera;

            if (thumbnail != null)
            {
                CameraTypeManager.LoadCamera(thumbnail.Summary, -1);
            }
        }
Пример #14
0
        private void view_Load(object sender, EventArgs e)
        {
            CameraTypeManager.CamerasDiscovered += CameraTypeManager_CamerasDiscovered;
            //CameraTypeManager.CameraSummaryUpdated += CameraTypeManager_CameraSummaryUpdated;
            //CameraTypeManager.CameraImageReceived += CameraTypeManager_CameraImageReceived;
            CameraTypeManager.CameraLoadAsked += CameraTypeManager_CameraLoadAsked;

            CameraTypeManager.LoadCameraManagers();
            CameraTypeManager.DiscoverCameras();
        }
Пример #15
0
        private void ViewportController_DisplayRectangleUpdated(object sender, EventArgs e)
        {
            if (!cameraLoaded || cameraSummary == null)
            {
                return;
            }

            cameraSummary.UpdateDisplayRectangle(viewportController.DisplayRectangle);
            CameraTypeManager.UpdatedCameraSummary(cameraSummary);
        }
Пример #16
0
        private void Thumbnail_DeleteCamera(object sender, EventArgs e)
        {
            // Delete camera in prefs (blurbs).
            // Should be enough to remove the thumbnail at next discovery heart beat.
            ThumbnailCamera thumbnail = sender as ThumbnailCamera;

            CameraTypeManager.ForgetCamera(thumbnail.Summary);

            refreshImages = true;
            CameraTypeManager.DiscoverCameras();
        }
Пример #17
0
        public static void LoadVideoInScreen(ScreenManagerKernel manager, string path, int targetScreen, ScreenDescriptionPlayback screenDescription = null)
        {
            CameraTypeManager.CancelThumbnails();
            CameraTypeManager.StopDiscoveringCameras();

            if (targetScreen < 0)
            {
                LoadUnspecified(manager, path, screenDescription);
            }
            else
            {
                LoadInSpecificTarget(manager, targetScreen, path, screenDescription);
            }
        }
Пример #18
0
        public static void LoadCameraInScreen(ScreenManagerKernel manager, CameraSummary summary, int targetScreen, ScreenDescriptionCapture screenDescription = null)
        {
            CameraTypeManager.CancelThumbnails();
            CameraTypeManager.StopDiscoveringCameras();

            if (targetScreen < 0)
            {
                LoadUnspecified(manager, summary, screenDescription);
            }
            else
            {
                LoadInSpecificTarget(manager, targetScreen, summary, screenDescription);
            }
        }
Пример #19
0
        private void BtnManualClick(object sender, EventArgs e)
        {
            FormCameraWizard wizard = new FormCameraWizard();

            if (wizard.ShowDialog() == DialogResult.OK)
            {
                CameraSummary summary = wizard.Result;
                if (summary != null)
                {
                    CameraTypeManager.UpdatedCameraSummary(summary);
                }
            }

            wizard.Dispose();
        }
Пример #20
0
        private void LvCameras_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            ListViewItem lvi = lvCameras.GetItemAt(e.X, e.Y);

            if (lvi == null || lvCameras.SelectedItems == null || lvCameras.SelectedItems.Count != 1)
            {
                return;
            }

            int index = IndexOfCamera(cameraSummaries, lvi.Name);

            if (index >= 0)
            {
                CameraTypeManager.LoadCamera(cameraSummaries[index], -1);
            }
        }
Пример #21
0
 private void ClearContent()
 {
     if (currentContent == ThumbnailViewerContent.Files)
     {
         viewerFiles.CancelLoading();
         viewerFiles.Clear();
     }
     else if (currentContent == ThumbnailViewerContent.Shortcuts)
     {
         viewerShortcuts.CancelLoading();
         viewerShortcuts.Clear();
     }
     else
     {
         CameraTypeManager.StopDiscoveringCameras();
     }
 }
Пример #22
0
        private void BtnReconnect_Click(object sender, EventArgs e)
        {
            if (SelectedStreamFormat == null)
            {
                // This happens when we load the config window and the camera isn't connected.
                return;
            }

            SpecificInfo info = summary.Specific as SpecificInfo;

            if (info == null)
            {
                return;
            }

            info.StreamFormat     = this.SelectedStreamFormat;
            info.Demosaicing      = this.Demosaicing;
            info.Compression      = this.Compression;
            info.CameraProperties = this.CameraProperties;
            summary.UpdateDisplayRectangle(Rectangle.Empty);
            CameraTypeManager.UpdatedCameraSummary(summary);

            disconnect();
            connect();

            SpecificInfo specific = summary.Specific as SpecificInfo;

            if (specific == null || specific.Device == null || !specific.Device.IsOpen)
            {
                return;
            }

            device           = specific.Device;
            cameraProperties = CameraPropertyManager.Read(device, summary.Identifier);

            RemoveCameraControls();

            PopulateStreamFormat();
            PopulateBayerConversion();
            PopulateCompression();
            PopulateCameraControls();

            UpdateResultingFramerate();
        }
Пример #23
0
        public RootKernel()
        {
            log.Debug("Loading video readers.");
            List <Type> videoReaders = new List <Type>();

            videoReaders.Add(typeof(Video.Bitmap.VideoReaderBitmap));
            videoReaders.Add(typeof(Video.FFMpeg.VideoReaderFFMpeg));
            videoReaders.Add(typeof(Video.GIF.VideoReaderGIF));
            videoReaders.Add(typeof(Video.SVG.VideoReaderSVG));
            videoReaders.Add(typeof(Video.Synthetic.VideoReaderSynthetic));
            VideoTypeManager.LoadVideoReaders(videoReaders);

            log.Debug("Loading camera managers.");
            List <Type> cameraManagers = new List <Type>();

            cameraManagers.Add(typeof(Camera.Basler.CameraManagerBasler));
            cameraManagers.Add(typeof(Camera.Daheng.CameraManagerDaheng));
            cameraManagers.Add(typeof(Camera.DirectShow.CameraManagerDirectShow));
            cameraManagers.Add(typeof(Camera.FrameGenerator.CameraManagerFrameGenerator));
            cameraManagers.Add(typeof(Camera.HTTP.CameraManagerHTTP));
            cameraManagers.Add(typeof(Camera.IDS.CameraManagerIDS));
            CameraTypeManager.LoadCameraManagers(cameraManagers);

            log.Debug("Loading tools.");
            ToolManager.LoadTools();

            BuildSubTree();
            mainWindow = new KinoveaMainWindow(this);
            NotificationCenter.RecentFilesChanged += NotificationCenter_RecentFilesChanged;
            NotificationCenter.FullScreenToggle   += NotificationCenter_FullscreenToggle;
            NotificationCenter.StatusUpdated      += (s, e) => statusLabel.Text = e.Status;
            NotificationCenter.PreferenceTabAsked += NotificationCenter_PreferenceTabAsked;

            log.Debug("Plug sub modules at UI extension points (Menus, Toolbars, Statusbar, Windows).");
            ExtendMenu(mainWindow.menuStrip);
            ExtendToolBar(mainWindow.toolStrip);
            ExtendStatusBar(mainWindow.statusStrip);
            ExtendUI();

            log.Debug("Register global services offered at Root level.");

            Services.FormsHelper.SetMainForm(mainWindow);
        }
Пример #24
0
        private void DeleteSelectedCamera(ListView lv)
        {
            if (lv == null || !lv.Focused)
            {
                return;
            }

            if (lv.SelectedItems == null || lv.SelectedItems.Count != 1)
            {
                return;
            }

            int index = IndexOfCamera(cameraSummaries, lv.SelectedItems[0].Name);

            if (index >= 0)
            {
                CameraTypeManager.ForgetCamera(cameraSummaries[index]);
            }
        }
        private void LaunchSelectedCamera(ListView lv, TreeView tv)
        {
            if (lv == null || tv == null)
            {
                return;
            }

            if (lv.Focused)
            {
                if (lv.SelectedItems == null || lv.SelectedItems.Count != 1)
                {
                    return;
                }

                int index = IndexOfCamera(cameraSummaries, lv.SelectedItems[0].Name);
                if (index >= 0)
                {
                    CameraTypeManager.LoadCamera(cameraSummaries[index], -1);
                }
            }
            else if (tv.Focused)
            {
                if (tv.SelectedNode == null)
                {
                    return;
                }

                CaptureHistoryEntry entry = tv.SelectedNode.Tag as CaptureHistoryEntry;
                if (entry == null)
                {
                    return;
                }

                string path = entry.CaptureFile;
                if (path == null)
                {
                    return;
                }

                VideoTypeManager.LoadVideo(path, -1);
            }
        }
        private void SwitchContent(ThumbnailViewerContent newContent)
        {
            if (viewer != null && currentContent == newContent)
            {
                return;
            }

            ClearContent();
            this.splitMain.Panel2.Controls.Clear();

            switch (newContent)
            {
            case ThumbnailViewerContent.Files:
            {
                viewerFiles.UpdateThumbnailsSize(sizeSelector.SelectedSize);
                viewer = viewerFiles;
                break;
            }

            case ThumbnailViewerContent.Shortcuts:
            {
                viewerShortcuts.UpdateThumbnailsSize(sizeSelector.SelectedSize);
                viewer = viewerShortcuts;
                break;
            }

            case ThumbnailViewerContent.Cameras:
            {
                CameraTypeManager.DiscoverCameras();
                viewerCameras.UpdateThumbnailsSize(sizeSelector.SelectedSize);
                viewer = viewerCameras;
                break;
            }
            }

            this.splitMain.Panel2.Controls.Add(viewer);
            viewer.BringToFront();
            currentContent = newContent;
        }
Пример #27
0
 private void ThumbnailViewerContainer_Load(object sender, EventArgs e)
 {
     CameraTypeManager.StartDiscoveringCameras();
 }
Пример #28
0
        private void BtnImport_Click(object sender, EventArgs e)
        {
            // Locate an .ini file.
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Title = CameraLang.FormConfiguration_ImportParameters;
            //openFileDialog.InitialDirectory = Path.GetDirectoryName(ProfileHelper.GetProfileFilename(summary.Identifier));
            openFileDialog.RestoreDirectory = true;
            openFileDialog.Filter           = "Ini file (*.ini)" + "|*.ini;";
            openFileDialog.FilterIndex      = 0;
            if (openFileDialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            string filename = openFileDialog.FileName;

            if (string.IsNullOrEmpty(filename) || !File.Exists(filename))
            {
                return;
            }

            // The timing here is finnicky.
            // connect() will start the delay buffer allocation on the current image size and start receiving frames.
            // disconnect prevents reading the new values from the camera.
            // Load with new sizes while the camera is streaming will fail because the buffers are wrong.
            // So we need to load the new values with the camera opened but not streaming.

            this.SuspendLayout();

            disconnect();
            ProfileHelper.Replace(summary.Identifier, filename);

            // Reopen the camera but do not start grabbing.
            uEye.Defines.Status status = camera.Init((Int32)deviceId | (Int32)uEye.Defines.DeviceEnumeration.UseDeviceID);
            if (status != uEye.Defines.Status.SUCCESS)
            {
                log.ErrorFormat("Error trying to open IDS uEye camera.");
                return;
            }

            // Load new parameters.
            ProfileHelper.Load(camera, summary.Identifier);
            cameraProperties = CameraPropertyManager.Read(camera, deviceId);
            SpecificInfo info = summary.Specific as SpecificInfo;

            PopulateStreamFormat();
            info.StreamFormat     = this.SelectedStreamFormat.Value;
            info.CameraProperties = cameraProperties;
            summary.UpdateDisplayRectangle(Rectangle.Empty);
            CameraTypeManager.UpdatedCameraSummary(summary);

            // Reconnect.
            camera.Exit();
            connect();

            // Reload UI.
            RemoveCameraControls();
            PopulateCameraControls();

            this.ResumeLayout();
        }
Пример #29
0
 public void Unhide()
 {
     refreshImages = true;
     CameraTypeManager.DiscoverCameras();
     this.Focus();
 }
Пример #30
0
        private void Thumbnail_SummaryUpdated(object sender, EventArgs e)
        {
            ThumbnailCamera thumbnail = sender as ThumbnailCamera;

            CameraTypeManager.UpdatedCameraSummary(thumbnail.Summary);
        }