libCZI
Reading CZI documents made easy
libCZI::Utils Class Reference

A bunch of utility functions. More...

#include <libCZI_Utilities.h>

Static Public Member Functions

static char DimensionToChar (libCZI::DimensionIndex dim)
 
static libCZI::DimensionIndex CharToDimension (char c)
 
static int CalcMd5SumHash (libCZI::IBitmapData *bm, std::uint8_t *ptrHash, int hashSize)
 
static int CalcMd5SumHash (const void *ptrData, size_t sizeData, std::uint8_t *ptrHash, int hashSize)
 
static std::vector< std::uint8_t > Create8BitLookUpTableFromSplines (int tableElementCnt, float blackPoint, float whitePoint, const std::vector< libCZI::IDisplaySettings::SplineData > &splineData)
 
static std::vector< std::uint8_t > Create8BitLookUpTableFromGamma (int tableElementCnt, float blackPoint, float whitePoint, float gamma)
 
static std::vector< libCZI::IDisplaySettings::SplineDataCalcSplineDataFromPoints (int pointCnt, std::function< std::tuple< double, double >(int idx)> getPoint)
 
static std::shared_ptr< libCZI::IBitmapDataNearestNeighborResize (libCZI::IBitmapData *bmSrc, int dstWidth, int dstHeight)
 
static std::shared_ptr< libCZI::IBitmapDataNearestNeighborResize (libCZI::IBitmapData *bmSrc, int dstWidth, int dstHeight, const DblRect &roiSrc, const DblRect &roiDest)
 
static float CalcZoom (const libCZI::IntRect &logigalRect, const libCZI::IntSize &physicalSize)
 
static const char * PixelTypeToInformalString (libCZI::PixelType pxltp)
 
static std::string DimCoordinateToString (const libCZI::IDimCoordinate *coord)
 
static std::shared_ptr< libCZI::IIndexSetIndexSetFromString (const std::wstring &s)
 
static libCZI::PixelType TryDeterminePixelTypeForChannel (libCZI::ISubBlockRepository *repository, int channelIdx)
 

Detailed Description

A bunch of utility functions.

Member Function Documentation

◆ CalcMd5SumHash() [1/2]

static int libCZI::Utils::CalcMd5SumHash ( libCZI::IBitmapData bm,
std::uint8_t *  ptrHash,
int  hashSize 
)
static

Calculates the MD5SUM hash for the pixels in the specified bitmap.

Parameters
[in]bmThe bitmap.
[in,out]ptrHashPointer to the hash-code result. The result will be of size 16 bytes.
hashSizeSize of the hash-code result pointed to by ptrHash. We need 16 bytes.
Returns
The count of bytes that were written to in ptrHash as the MD5SUM-hash (always 16).

◆ CalcMd5SumHash() [2/2]

static int libCZI::Utils::CalcMd5SumHash ( const void *  ptrData,
size_t  sizeData,
std::uint8_t *  ptrHash,
int  hashSize 
)
static

Calculates the MD5SUM hash for the specified data.

Parameters
[in]ptrDataPointer to the data (for which to calculate the MD5SUM-hash).
[in]sizeDataThe size of the data (pointed to by ptrData).
[in,out]ptrHashPointer to the hash-code result. The result will be of size 16 bytes.
hashSizeSize of the hash-code result pointed to by ptrHash. We need 16 bytes.
Returns
The count of bytes that were written to in ptrHash as the MD5SUM-hash (always 16).

◆ CalcSplineDataFromPoints()

static std::vector<libCZI::IDisplaySettings::SplineData> libCZI::Utils::CalcSplineDataFromPoints ( int  pointCnt,
std::function< std::tuple< double, double >(int idx)>  getPoint 
)
static

Calculates the spline coefficients from a list of control points.

Parameters
pointCntNumber of control points.
getPointA functor which will be used to retrieve the control point's coordinates.
Returns
The calculated spline data from the specified control points.

◆ CalcZoom()

static float libCZI::Utils::CalcZoom ( const libCZI::IntRect logigalRect,
const libCZI::IntSize physicalSize 
)
inlinestatic

Calculate a zoom-factor from the physical- and logical size.

Remarks
This calculation not really well-defined.
Parameters
logigalRectThe logigal rectangle.
physicalSizePhysical size.
Returns
The calculated zoom.

◆ CharToDimension()

static libCZI::DimensionIndex libCZI::Utils::CharToDimension ( char  c)
static

Convert the specifed single character to the corresponding dimension enum. The single character may be given uppercase or lowercase. In case that no corresponding dimension enum exists, DimensionIndex::invalid is returned.

Parameters
cThe "single char representation' of a dimension.
Returns
A enum value representing the specified dimension if it exists, DimensionIndex::invalid otherwise.

◆ Create8BitLookUpTableFromGamma()

static std::vector<std::uint8_t> libCZI::Utils::Create8BitLookUpTableFromGamma ( int  tableElementCnt,
float  blackPoint,
float  whitePoint,
float  gamma 
)
static

Creates 8-bit look-up table from the specified gamma value. An exponential with the specified gamma is sampled between blackPoint and whitePoint (i. e. points left of blackPoint are set to 0 and right of whitePoint are set to 1).

Parameters
tableElementCntNumber of points to sample - the result will have as many samples as specified here.
blackPointThe black point.
whitePointThe white point.
gammaThe gamma.
Returns
The new 8-bit look up table generated from the spline. The number is elements is as specified by tableElementCount.

◆ Create8BitLookUpTableFromSplines()

static std::vector<std::uint8_t> libCZI::Utils::Create8BitLookUpTableFromSplines ( int  tableElementCnt,
float  blackPoint,
float  whitePoint,
const std::vector< libCZI::IDisplaySettings::SplineData > &  splineData 
)
static

Creates an 8-bit look-up table from the specifed splines. A spline is sampled between blackPoint and whitePoint (i. e. points left of blackPoint are set to 0 and right of whitePoint are set to 1).

Parameters
tableElementCntNumber of points to sample - the result will have as many samples as specified here.
blackPointThe black point.
whitePointThe white point.
splineDataInformation describing the spline.
Returns
The new 8-bit look up table generated from the spline. The number is elements is as specified by tableElementCount.

◆ DimCoordinateToString()

static std::string libCZI::Utils::DimCoordinateToString ( const libCZI::IDimCoordinate coord)
static

Get a string representation of the specified coordinate.

Parameters
coordThe coordinate.
Returns
A string representation of the specified coordinate.

◆ DimensionToChar()

static char libCZI::Utils::DimensionToChar ( libCZI::DimensionIndex  dim)
static

Convert the specifed dimension enum to the corresponding "single char representation'. The returned character will be uppercase. If the specified dimension enum cannot be converted, '?' is returned.

Parameters
dimThe dimension enum.
Returns
A character representing the specified dimension.

◆ IndexSetFromString()

static std::shared_ptr<libCZI::IIndexSet> libCZI::Utils::IndexSetFromString ( const std::wstring &  s)
static

Create an index-set object from a string representation. The string is a list of intervals, seperated by comma (','). It can be of the form "5", "17", "3-5", "-3-5". The string "inf" (meaning 'infinity') is recognized in order to express "all numbers up to" or "all numbers after" , e. g. "-inf-4" or "5-inf". In case of an invalid string, an LibCZIStringParseException exception is thrown.

Parameters
sThe string to convert to an index-set object.
Returns
A newly create std::shared_ptr<libCZI::IIndexSet> object.

◆ NearestNeighborResize() [1/2]

static std::shared_ptr<libCZI::IBitmapData > libCZI::Utils::NearestNeighborResize ( libCZI::IBitmapData bmSrc,
int  dstWidth,
int  dstHeight 
)
static

Resize the specified bitmap to the specified width and height. This method employs a nearest-neighbor-scaling algorihm.

Parameters
[in]bmSrcThe source bitmap.
dstWidthWidth of the destination.
dstHeightHeight of the destination.
Returns
A std::shared_ptr<libCZI::IBitmapData > containing the scaled bitmap.

◆ NearestNeighborResize() [2/2]

static std::shared_ptr<libCZI::IBitmapData > libCZI::Utils::NearestNeighborResize ( libCZI::IBitmapData bmSrc,
int  dstWidth,
int  dstHeight,
const DblRect roiSrc,
const DblRect roiDest 
)
static

Resize a ROI from the specified bitmap to the specified width and height. This method employs a nearest-neighbor-scaling algorihm.

Parameters
[in]bmSrcThe source bitmap.
dstWidthWidth of the destination.
dstHeightHeight of the destination.
roiSrcThe ROI (in the source bitmap).
roiDestThe ROI (in the destination bitmap)
Returns
A std::shared_ptr<libCZI::IBitmapData >

◆ PixelTypeToInformalString()

static const char* libCZI::Utils::PixelTypeToInformalString ( libCZI::PixelType  pxltp)
static

Retrieves an informal string representing the specified pixeltype.

Parameters
pxltpThe pixel-type.
Returns
A pointer to a static string. Will always be non-null (even in case of an invalid value for pxltp.

◆ TryDeterminePixelTypeForChannel()

static libCZI::PixelType libCZI::Utils::TryDeterminePixelTypeForChannel ( libCZI::ISubBlockRepository repository,
int  channelIdx 
)
static

Try to determine the pixel type for channel. This is done by looking at an (arbitrary) subblock within the specified channel. There are cases where this does not yield a result - e. g. if there is no subblock present with the specified channel-index.

Parameters
[in]repositoryThe CZI-document.
channelIdxThe channel index.
Returns
The pixeltype if it can be determined. If it cannot be determined reliably (e.g. there is no subblock with the specified channel-index), then PixelType::Invalid is returned.

The documentation for this class was generated from the following file: