public DelayedCreationOccultWrapper(OccultToolsAddinSettings settings, IAOTAClientCallbacks callbacks) { m_Settings = settings; m_Callbacks = callbacks; m_Delegate = null; }
public OccultSDKWrapper(IAOTAClientCallbacks clientCallbacks) { m_ClientCallbacks = clientCallbacks; }
internal static IOccultWrapper CreateOccultWrapper(OccultToolsAddinSettings settings, IAOTAClientCallbacks callbacks) { return(new DelayedCreationOccultWrapper(settings, callbacks)); }
internal static bool RunAOTA(ILightCurveDataProvider dataProvider, IWin32Window parentWindow, IAOTAClientCallbacks clientCallbacks) { try { if (m_AotaInstance == null) m_AotaInstance = Activator.CreateInstance(TYPE_AOTA_ExternalAccess) as Occult.SDK.IAOTAExternalAccess; ShieldedCall(() => m_AotaInstance.InitialiseAOTA(dataProvider.FileName, clientCallbacks)); ISingleMeasurement[] measurements = dataProvider.GetTargetMeasurements(); bool hasReliableTimeBase = dataProvider.HasReliableTimeBase; float[] data = measurements.Select(x => x.Measurement).ToArray(); float[] frameIds = measurements.Select(x => (float)x.CurrFrameNo).ToArray(); float[] dataBg = measurements.Select(x => x.Background).ToArray(); ShieldedCall(() => m_AotaInstance.Set_TargetData_BackgroundAlreadySubtracted(data, dataBg)); ShieldedCall(() => m_AotaInstance.Set_FrameID(frameIds)); DateTime[] timestamps = measurements.Select(x => x.Timestamp).ToArray(); hasReliableTimeBase = hasReliableTimeBase && timestamps[0].Date != DateTime.MinValue && timestamps[measurements.Length - 1].Date != DateTime.MinValue && timestamps[0].Date.Ticks < timestamps[measurements.Length - 1].Ticks; double[] secondsFromUTMidnight; long startFrameStartDayTicks; bool cameraCorrectionsHaveBeenApplied = dataProvider.CameraCorrectionsHaveBeenApplied && dataProvider.HasEmbeddedTimeStamps; startFrameStartDayTicks = hasReliableTimeBase ? timestamps[0].Date.Ticks : timestamps.FirstOrDefault(x => x != DateTime.MinValue).Date.Ticks; secondsFromUTMidnight = new double[timestamps.Length]; for (int i = 0; i < timestamps.Length; i++) { if (!measurements[i].IsCorrectedForInstrumentalDelay && cameraCorrectionsHaveBeenApplied) // Individual frames for which instrumental delays hasn't been applied even that instrumental delay is applied for the file, are marked as blank secondsFromUTMidnight[i] = 0; else if (timestamps[i] != DateTime.MinValue) secondsFromUTMidnight[i] = Math.Truncate(new TimeSpan(timestamps[i].Ticks - startFrameStartDayTicks).TotalSeconds * 10000) / 10000.0; else secondsFromUTMidnight[i] = 0; } ShieldedCall(() => m_AotaInstance.Set_TimeBase(secondsFromUTMidnight, cameraCorrectionsHaveBeenApplied)); if (cameraCorrectionsHaveBeenApplied) { string cameraName = dataProvider.VideoCameraName; if (!string.IsNullOrEmpty(cameraName)) ShieldedCall(() => m_AotaInstance.Set_VideoCamera(cameraName)); } // Now go and set any comparison stars for (int i = 0; i < dataProvider.NumberOfMeasuredComparisonObjects; i++) { ISingleMeasurement[] compMeasurements = dataProvider.GetComparisonObjectMeasurements(i); if (compMeasurements != null) { float[] compData = compMeasurements.Select(x => x.Measurement).ToArray(); if (i == 0) ShieldedCall(() => m_AotaInstance.Set_Comp1Data(compData)); else if (i == 1) ShieldedCall(() => m_AotaInstance.Set_Comp2Data(compData)); else if (i == 2) ShieldedCall(() => m_AotaInstance.Set_Comp3Data(compData)); } } ShieldedCall(() => m_AotaInstance.Camera = new Occult.SDK.Camera() { CameraType = dataProvider.VideoCameraName, VideoSystem = dataProvider.VideoSystem, FramesIntegrated = dataProvider.NumberIntegratedFrames }); int firstFrameIndex = 0;// (int)frameIds[0]; int framesInIntegration = 1; ShieldedCall(() => m_AotaInstance.RunAOTA(null, firstFrameIndex, framesInIntegration, false)); return true; } catch (Exception ex) { Trace.WriteLine(ex.ToString()); MessageBox.Show(ex is TargetInvocationException ? ex.InnerException.Message : ex.Message, "AOTA Add-in Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } return false; }
internal static bool RunAOTA(ILightCurveDataProvider dataProvider, IWin32Window parentWindow, IAOTAClientCallbacks clientCallbacks) { try { if (m_AotaInstance == null) { m_AotaInstance = Activator.CreateInstance(TYPE_AOTA_ExternalAccess) as Occult.SDK.IAOTAExternalAccess; } ShieldedCall(() => m_AotaInstance.InitialiseAOTA(dataProvider.FileName, clientCallbacks)); ISingleMeasurement[] measurements = dataProvider.GetTargetMeasurements(); bool hasReliableTimeBase = dataProvider.HasReliableTimeBase; float[] data = measurements.Select(x => x.Measurement).ToArray(); float[] frameIds = measurements.Select(x => (float)x.CurrFrameNo).ToArray(); float[] dataBg = measurements.Select(x => x.Background).ToArray(); ShieldedCall(() => m_AotaInstance.Set_TargetData_BackgroundAlreadySubtracted(data, dataBg)); ShieldedCall(() => m_AotaInstance.Set_FrameID(frameIds)); DateTime[] timestamps = measurements.Select(x => x.Timestamp).ToArray(); hasReliableTimeBase = hasReliableTimeBase && timestamps[0].Date != DateTime.MinValue && timestamps[measurements.Length - 1].Date != DateTime.MinValue && timestamps[0].Date.Ticks < timestamps[measurements.Length - 1].Ticks; double[] secondsFromUTMidnight; long startFrameStartDayTicks; bool cameraCorrectionsHaveBeenApplied = dataProvider.CameraCorrectionsHaveBeenApplied && dataProvider.HasEmbeddedTimeStamps; startFrameStartDayTicks = hasReliableTimeBase ? timestamps[0].Date.Ticks : timestamps.FirstOrDefault(x => x != DateTime.MinValue).Date.Ticks; secondsFromUTMidnight = new double[timestamps.Length]; for (int i = 0; i < timestamps.Length; i++) { if (!measurements[i].IsCorrectedForInstrumentalDelay && cameraCorrectionsHaveBeenApplied) { // Individual frames for which instrumental delays hasn't been applied even that instrumental delay is applied for the file, are marked as blank secondsFromUTMidnight[i] = 0; } else if (timestamps[i] != DateTime.MinValue) { secondsFromUTMidnight[i] = Math.Truncate(new TimeSpan(timestamps[i].Ticks - startFrameStartDayTicks).TotalSeconds * 10000) / 10000.0; } else { secondsFromUTMidnight[i] = 0; } } ShieldedCall(() => m_AotaInstance.Set_TimeBase(secondsFromUTMidnight, cameraCorrectionsHaveBeenApplied)); if (cameraCorrectionsHaveBeenApplied) { string cameraName = dataProvider.VideoCameraName; if (!string.IsNullOrEmpty(cameraName)) { ShieldedCall(() => m_AotaInstance.Set_VideoCamera(cameraName)); } } else { MessageBox.Show(parentWindow, "The times to be given to AOTA are not corrected for instrumental delays.\r\n\r\nThis means that you are expected to select the video camera and frame reate from the 'Camera corrections' section in tab '6. Camera corrections & final times' and apply the instrumental delays in AOTA.", "Tangra", MessageBoxButtons.OK, MessageBoxIcon.Warning); } // Now go and set any comparison stars for (int i = 0; i < dataProvider.NumberOfMeasuredComparisonObjects; i++) { ISingleMeasurement[] compMeasurements = dataProvider.GetComparisonObjectMeasurements(i); if (compMeasurements != null) { float[] compData = compMeasurements.Select(x => x.Measurement).ToArray(); if (i == 0) { ShieldedCall(() => m_AotaInstance.Set_Comp1Data(compData)); } else if (i == 1) { ShieldedCall(() => m_AotaInstance.Set_Comp2Data(compData)); } else if (i == 2) { ShieldedCall(() => m_AotaInstance.Set_Comp3Data(compData)); } } } ShieldedCall(() => m_AotaInstance.Camera = new Occult.SDK.Camera() { CameraType = dataProvider.VideoCameraName, VideoSystem = dataProvider.VideoSystem, FramesIntegrated = dataProvider.NumberIntegratedFrames }); int firstFrameIndex = 0;// (int)frameIds[0]; int framesInIntegration = 1; ShieldedCall(() => m_AotaInstance.RunAOTA(null, firstFrameIndex, framesInIntegration, false)); return(true); } catch (Exception ex) { Trace.WriteLine(ex.ToString()); MessageBox.Show(ex is TargetInvocationException ? ex.InnerException.Message : ex.Message, "AOTA Add-in Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } return(false); }
internal static IOccultWrapper CreateOccultWrapper(OccultToolsAddinSettings settings, IAOTAClientCallbacks callbacks) { return new DelayedCreationOccultWrapper(settings, callbacks); }