Go to the documentation of this file.
103 class XISFReaderEngine;
104 class XISFWriterEngine;
106 class PCL_CLASS Compression;
107 class PCL_CLASS CryptographicHash;
125 namespace XISFChecksum
134 NumberOfSupportedAlgorithms
159 namespace XISFCompression
173 NumberOfSupportedCodecs
190 namespace XISFByteOrder
213 using property_type = VariantType::value_type;
218 using color_space = ColorSpace::value_type;
223 using block_checksum = XISFChecksum::value_type;
228 using block_compression = XISFCompression::value_type;
233 using block_endianness = XISFByteOrder::value_type;
251 XISF& operator =(
const XISF& ) =
delete;
275 constexpr
static fsize_type DefaultMaxBlockInlineSize = 3072;
280 constexpr
static int MaxThumbnailSize = 1024;
285 constexpr
static block_checksum DefaultChecksum = XISFChecksum::None;
290 constexpr
static block_compression DefaultCompression = XISFCompression::None;
297 constexpr
static int DefaultCompressionLevel = 0;
302 constexpr
static int MaxCompressionLevel = 100;
307 constexpr
static int DefaultVerbosity = 1;
314 constexpr
static bool DefaultFixNonFinite =
true;
319 constexpr
static double DefaultOutputLowerBound = 0.0;
324 constexpr
static double DefaultOutputUpperBound = 1.0;
331 constexpr
static bool DefaultStoreFITSKeywords =
true;
338 constexpr
static bool DefaultIgnoreFITSKeywords =
false;
345 constexpr
static bool DefaultImportFITSKeywords =
false;
350 constexpr
static bool DefaultIgnoreEmbeddedData =
false;
355 constexpr
static bool DefaultIgnoreProperties =
false;
360 constexpr
static bool DefaultAutoMetadata =
true;
365 constexpr
static bool DefaultNoWarnings =
false;
370 constexpr
static bool DefaultWarningsAreErrors =
false;
375 constexpr
static const char* InternalNamespacePrefix =
"XISF:";
379 static const fsize_type DefaultBlockAlignSize;
380 static const fsize_type DefaultMaxBlockInlineSize;
381 static const int MaxThumbnailSize;
382 static const block_checksum DefaultChecksum;
383 static const block_compression DefaultCompression;
384 static const int DefaultCompressionLevel;
385 static const int MaxCompressionLevel;
386 static const int DefaultVerbosity;
387 static const bool DefaultFixNonFinite;
388 static const double DefaultOutputLowerBound;
389 static const double DefaultOutputUpperBound;
390 static const bool DefaultStoreFITSKeywords;
391 static const bool DefaultIgnoreFITSKeywords;
392 static const bool DefaultImportFITSKeywords;
393 static const bool DefaultIgnoreEmbeddedData;
394 static const bool DefaultIgnoreProperties;
395 static const bool DefaultAutoMetadata;
396 static const bool DefaultNoWarnings;
397 static const bool DefaultWarningsAreErrors;
398 static const char* InternalNamespacePrefix;
416 static const char* SampleFormatId(
int bitsPerSample,
bool floatSample,
bool complexSample );
425 return SampleFormatId( P::BitsPerSample(), P::IsFloatSample(), P::IsComplexSample() );
433 static bool GetSampleFormatFromId(
int& bitsPerSample,
bool& floatSample,
bool& complexSample,
const String&
id );
447 static const char* ColorSpaceId( color_space colorSpace );
462 static color_space ColorSpaceFromId(
const String&
id );
471 static const char* PropertyTypeId( property_type type );
477 static property_type PropertyTypeFromId(
const String&
id );
483 static const char* CompressionCodecId( block_compression codec );
489 static block_compression CompressionCodecFromId(
const String&
id );
502 static int CompressionLevelForMethod( block_compression codec,
int level );
508 static bool CompressionUsesByteShuffle( block_compression codec );
514 static block_compression CompressionCodecNoShuffle( block_compression codec );
520 static bool CompressionNeedsItemSize( block_compression codec );
526 static const char* ChecksumAlgorithmId( block_checksum algorithm );
532 static block_checksum ChecksumAlgorithmFromId(
const String&
id );
538 static size_type ChecksumLength( block_checksum algorithm );
571 return IsValidPropertyId(
IsoString(
id ) );
584 return id.StartsWith( InternalNamespacePrefix );
589 return IsInternalPropertyId(
IsoString(
id ) );
597 if ( !IsInternalPropertyId(
id ) )
598 return InternalNamespacePrefix + id;
604 return InternalPropertyId(
IsoString(
id ) );
618 static void EnsurePTLUTInitialized();
721 uint8 magic[ 8 ] = {
'X',
'I',
'S',
'F',
'0',
'1',
'0',
'0' };
746 : headerLength( length )
754 void Validate()
const;
773 namespace XISFMessageType
809 using message_type = XISFMessageType::value_type;
859 virtual void Log(
const String& text, message_type type )
958 void Open(
const String& path );
976 int NumberOfImages()
const;
982 void SelectImage(
int index );
988 int SelectedImageIndex()
const;
1136 void ReadImage(
FImage& image );
1141 void ReadImage(
DImage& image );
1179 bool ImplementsIncrementalRead()
const;
1189 void ReadSamples(
FImage::sample* buffer,
int startRow,
int rowCount,
int channel );
1197 void ReadSamples(
DImage::sample* buffer,
int startRow,
int rowCount,
int channel );
1221 void ReadSamples(
UInt8Image::sample* buffer,
int startRow,
int rowCount,
int channel );
1262 void CheckOpenStream(
const char* )
const;
1263 void CheckClosedStream(
const char* )
const;
1352 void SetCreatorApplication(
const String& appName );
1368 void SetCreatorModule(
const String& modName );
1374 bool IsOpen()
const;
1380 void Create(
const String& path,
int count );
1428 void WriteICCProfile(
const ICCProfile& profile );
1434 void WriteThumbnail(
const UInt8Image& thumbnail );
1458 void WriteImageProperty(
const IsoString& identifier,
const Variant& value );
1464 void WriteImageProperties(
const PropertyArray& properties );
1472 void RemoveImageProperty(
const IsoString& identifier );
1492 void RemoveProperty(
const IsoString& identifier );
1497 void WriteImage(
const Image& image );
1502 void WriteImage(
const DImage& image );
1541 void CreateImage(
const ImageInfo& info );
1551 void WriteSamples(
const FImage::sample* buffer,
int startRow,
int rowCount,
int channel );
1560 void WriteSamples(
const DImage::sample* buffer,
int startRow,
int rowCount,
int channel );
1569 void WriteSamples(
const ComplexImage::sample* buffer,
int startRow,
int rowCount,
int channel );
1587 void WriteSamples(
const UInt8Image::sample* buffer,
int startRow,
int rowCount,
int channel );
1596 void WriteSamples(
const UInt16Image::sample* buffer,
int startRow,
int rowCount,
int channel );
1605 void WriteSamples(
const UInt32Image::sample* buffer,
int startRow,
int rowCount,
int channel );
1619 String m_creatorApplication;
1622 void CheckOpenStream(
const char* )
const;
1623 void CheckClosedStream(
const char* )
const;
1630 #endif // __PCL_XISF_h
Base class of all two-dimensional images in PCL.
Utility functions, data and constants for XISF support.
A high-level interface to ICC color profiles.
pcl::XISFOptions Options() const
bool fixNonFinite
Replace NaNs, infinities and negative zeros with lower bound values in floating point images (reading...
constexpr static bool DefaultIgnoreFITSKeywords
Color filter array (CFA) structure.
constexpr static block_compression DefaultCompression
Acts like a union to store instances of different data types.
Colorimetrically defined RGB working color space.
constexpr static bool DefaultNoWarnings
XML document parsing and generation
bool autoMetadata
Automatically generate a number of reserved XISF properties.
XISF::block_checksum checksumAlgorithm
The algorithm used for block checksum calculations.
static const char * ColorSpaceId(const AbstractImage &image)
constexpr static bool DefaultStoreFITSKeywords
Eight-bit string (ISO/IEC-8859-1 or UTF-8 string)
static bool IsValidIdentifier(const IsoString &id)
uint8 compressionLevel
Codec-independent compression level: 0 = auto, 1 = fast, 100 = maximum compression.
constexpr static int DefaultVerbosity
double outputUpperBound
Upper bound for output floating point pixel samples (=1.0 by default).
static bool IsInternalPropertyId(const IsoString &id)
XISF-specific file options
virtual void Init(const String &filePath, bool writing)
uint16 maxInlineBlockSize
Maximum size in bytes of an inline/embedded block.
XISF stream message logger
constexpr static double DefaultOutputUpperBound
XISFFileSignature(uint32 length)
Abstract base class of data compression algorithm implementations.
constexpr static fsize_type DefaultBlockAlignSize
bool ignoreEmbeddedData
Do not load existing embedded data (such as ICC profiles for example).
static IsoString InternalPropertyId(const IsoString &id)
virtual void Log(const String &text, message_type type)
bool storeFITSKeywords
Include FITS header keywords in output XISF files.
typename pixel_traits::sample sample
constexpr static double DefaultOutputLowerBound
bool warningsAreErrors
Treat warnings as fatal errors.
bool noWarnings
Suppress all warning and diagnostics messages.
constexpr static bool DefaultImportFITSKeywords
Format-independent, fundamental image stream options.
XISF::block_compression compressionCodec
The codec used for compression of XISF blocks.
static bool IsValidPropertyId(const IsoString &id)
pcl::XISFOptions Options() const
Abstract base class for cryptographic hashing algorithm implementations.
A simple structure to hold basic information about images.
constexpr static fsize_type DefaultMaxBlockInlineSize
virtual ~XISFLogHandler()
constexpr static int DefaultCompressionLevel
double outputLowerBound
Lower bound for output floating point pixel samples (=0.0 by default).
bool importFITSKeywords
Import FITS keywords as XISF properties.
constexpr static bool DefaultFixNonFinite
uint16 blockAlignmentSize
Block alignment size in bytes (0 = 1 = unaligned).
constexpr static bool DefaultIgnoreEmbeddedData
constexpr static block_checksum DefaultChecksum
constexpr static bool DefaultWarningsAreErrors
uint8 verbosity
Verbosity level: 0 = quiet, > 0 = write console state messages.
Adaptive histogram transformations for image visualization.
bool ignoreProperties
Do not load existing XISF properties.
color_space ColorSpace() const noexcept
Acts like a union for all types of images in PCL, with optional class-wide ownership of transported i...
constexpr static bool DefaultAutoMetadata
static const char * SampleFormatId(const GenericImage< P > &image)
bool ignoreFITSKeywords
Do not load FITS keywords from input XISF files.
XISF monolithic file signature
Implements a generic, two-dimensional, shared or local image.
constexpr static bool DefaultIgnoreProperties