Example #1
0
 public DelayedCreationOccultWrapper(OccultToolsAddinSettings settings, IAOTAClientCallbacks callbacks)
 {
     m_Settings  = settings;
     m_Callbacks = callbacks;
     m_Delegate  = null;
 }
Example #2
0
 public OccultSDKWrapper(IAOTAClientCallbacks clientCallbacks)
 {
     m_ClientCallbacks = clientCallbacks;
 }
Example #3
0
 internal static IOccultWrapper CreateOccultWrapper(OccultToolsAddinSettings settings, IAOTAClientCallbacks callbacks)
 {
     return(new DelayedCreationOccultWrapper(settings, callbacks));
 }
Example #4
0
            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;
            }
Example #5
0
 public OccultSDKWrapper(IAOTAClientCallbacks clientCallbacks)
 {
     m_ClientCallbacks = clientCallbacks;
 }
Example #6
0
            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);
            }
Example #7
0
 public DelayedCreationOccultWrapper(OccultToolsAddinSettings settings, IAOTAClientCallbacks callbacks)
 {
     m_Settings = settings;
     m_Callbacks = callbacks;
     m_Delegate = null;
 }
Example #8
0
 internal static IOccultWrapper CreateOccultWrapper(OccultToolsAddinSettings settings, IAOTAClientCallbacks callbacks)
 {
     return new DelayedCreationOccultWrapper(settings, callbacks);
 }