public void WriteFrameImpl(IntPtr intPtr, int p, RawFrameInfo info) { object data = MarshalToCLR(intPtr, p); Fits fits = new Fits(); BasicHDU hdu = FitsFactory.HDUFactory(data); if ((data is short[][] || data is short[][][]) && _significantBitDepth > 8) { hdu.AddValue("BZERO", 32768.0, ""); } AddMetadataToFrame(info, hdu); fits.AddHDU(hdu); using (FileStream fs = File.Create(Path.GetTempFileName())) { using (BufferedDataStream f = new BufferedDataStream(fs)) { fits.Write(f); } } }
private void AddMetadataToFrame(RawFrameInfo info, BasicHDU hdu) { if (info == null) { info = new RawFrameInfo() { ColourSpace = _colourSpaceId } } ; if (info.ExposureMs.HasValue) { hdu.AddValue("EXPTIME", info.ExposureMs.Value / 1000, ""); } if (info.PixelSize.HasValue) { hdu.AddValue("XPIXSZ", info.PixelSize.Value, ""); hdu.AddValue("YPIXSZ", info.PixelSize.Value, ""); } if (info.Binning > 0) { hdu.AddValue("XBINNING", info.Binning, ""); hdu.AddValue("YBINNING", info.Binning, ""); } if (info.SensorTemp.HasValue) { hdu.AddValue("CCD-TEMP", info.SensorTemp.Value, ""); } switch (info.ColourSpace) { case ColourSpaceId.Mono: break; case ColourSpaceId.RGB: hdu.AddValue("COLORTYP", "RGB", ""); break; case ColourSpaceId.Bayer_RGGB: hdu.AddValue("COLORTYP", "RGGB", ""); break; case ColourSpaceId.Bayer_GRBG: hdu.AddValue("COLORTYP", "GRBG", ""); break; case ColourSpaceId.Bayer_GBRG: hdu.AddValue("COLORTYP", "GBRG", ""); break; case ColourSpaceId.Bayer_BGGR: hdu.AddValue("COLORTYP", "BGGR", ""); break; case ColourSpaceId.Bayer_CYYM: hdu.AddValue("COLORTYP", "CYYM", ""); break; case ColourSpaceId.Bayer_YMCY: hdu.AddValue("COLORTYP", "YMCY", ""); break; case ColourSpaceId.Bayer_MYYC: hdu.AddValue("COLORTYP", "MYYC", ""); break; case ColourSpaceId.Bayer_Unknown: break; } hdu.AddValue("SWCREATE", "SharpCap", ""); hdu.AddValue("DATE-OBS", DateTime.UtcNow.ToString("s"), ""); if (!string.IsNullOrEmpty(info.CameraName)) { hdu.AddValue("INSTRUME", info.CameraName, ""); } }
private void AddMetadataToFrame(RawFrameInfo info, BasicHDU hdu) { if (info == null) info = new RawFrameInfo() {ColourSpace = _colourSpaceId}; if (info.ExposureMs.HasValue) hdu.AddValue("EXPTIME", info.ExposureMs.Value/1000, ""); if (info.PixelSize.HasValue) { hdu.AddValue("XPIXSZ", info.PixelSize.Value, ""); hdu.AddValue("YPIXSZ", info.PixelSize.Value, ""); } if (info.Binning > 0) { hdu.AddValue("XBINNING", info.Binning, ""); hdu.AddValue("YBINNING", info.Binning, ""); } if (info.SensorTemp.HasValue) { hdu.AddValue("CCD-TEMP", info.SensorTemp.Value, ""); } switch (info.ColourSpace) { case ColourSpaceId.Mono: break; case ColourSpaceId.RGB: hdu.AddValue("COLORTYP", "RGB", ""); break; case ColourSpaceId.Bayer_RGGB: hdu.AddValue("COLORTYP", "RGGB", ""); break; case ColourSpaceId.Bayer_GRBG: hdu.AddValue("COLORTYP", "GRBG", ""); break; case ColourSpaceId.Bayer_GBRG: hdu.AddValue("COLORTYP", "GBRG", ""); break; case ColourSpaceId.Bayer_BGGR: hdu.AddValue("COLORTYP", "BGGR", ""); break; case ColourSpaceId.Bayer_CYYM: hdu.AddValue("COLORTYP", "CYYM", ""); break; case ColourSpaceId.Bayer_YMCY: hdu.AddValue("COLORTYP", "YMCY", ""); break; case ColourSpaceId.Bayer_MYYC: hdu.AddValue("COLORTYP", "MYYC", ""); break; case ColourSpaceId.Bayer_Unknown: break; } hdu.AddValue("SWCREATE", "SharpCap", ""); hdu.AddValue("DATE-OBS", DateTime.UtcNow.ToString("s"), ""); if (!string.IsNullOrEmpty(info.CameraName)) hdu.AddValue("INSTRUME", info.CameraName, ""); }