123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- //------------------------------------------------------------------------------
- // Basler pylon SDK
- // Copyright (c) 2012-2021 Basler AG
- // http://www.baslerweb.com
- // Author: Andreas Gau
- //------------------------------------------------------------------------------
- /*!
- \file
- \brief Contains a data structure describing the data of one pixel.
- */
- #ifndef INCLUDED_PIXELDATA_H_9714014
- #define INCLUDED_PIXELDATA_H_9714014
- #include <pylon/Platform.h>
- #ifdef _MSC_VER
- # pragma pack(push, PYLON_PACKING)
- #endif /* _MSC_VER */
- #include <pylon/PylonBase.h>
- namespace Pylon
- {
- /** \addtogroup Pylon_ImageHandlingSupport
- * @{
- */
- /*!
- \class SPixelData
- \brief Describes the data of one pixel.
- */
- struct SPixelData
- {
- /// Construct and clear.
- SPixelData()
- : PixelDataType( PixelDataType_Unknown )
- , BitDepth( 0 )
- {
- Data.RGBA.R =
- Data.RGBA.G =
- Data.RGBA.B =
- Data.RGBA.A = 0;
- }
- ~SPixelData()
- {
- }
- /// Lists the possible pixel data types.
- /// Do not confound this enumeration with the Pylon::PixelType enumeration that lists all pixel formats.
- enum EPixelDataType
- {
- PixelDataType_Unknown,//!< Will be returned, if the pixel data cannot be determined.
- PixelDataType_Mono, //!< Pixel data of monochrome images.
- PixelDataType_YUV, //!< Pixel data of YUV images.
- PixelDataType_RGB, //!< Pixel data of RGB or BGR images.
- PixelDataType_RGBA, //!< Pixel data of RGB or BGR images with alpha channel.
- PixelDataType_BayerR, //!< Pixel data of a red pixel of bayer images.
- PixelDataType_BayerG, //!< Pixel data of a green pixel of bayer images.
- PixelDataType_BayerB //!< Pixel data of a blue pixel of bayer images.
- };
- EPixelDataType PixelDataType; ///< The type of pixel data held.
- uint32_t BitDepth; ///< The bit depth of the data held.
- union
- {
- int Mono; ///< Pixel data of monochrome images.
- int BayerR; ///< Pixel data of a red pixel of bayer images.
- int BayerG; ///< Pixel data of a green pixel of bayer images.
- int BayerB; ///< Pixel data of a blue pixel of bayer images.
- struct
- {
- int Y; ///< Brightness.
- int U; ///< Chroma U.
- int V; ///< Chroma V.
- }
- YUV; ///< Pixel data of YUV images.
- struct
- {
- int R; ///< Red.
- int G; ///< Green.
- int B; ///< Blue.
- }
- RGB; ///< Pixel data of RGB or BGR images.
- struct
- {
- int R; ///< Red.
- int G; ///< Green.
- int B; ///< Blue.
- int A; ///< Transparency.
- }
- RGBA; ///< Pixel data of RGB or BGR images with an alpha channel.
- }
- Data; ///< Holds all types of pixel data.
- /// Compares pixel data.
- bool operator==( const SPixelData& rhs )
- {
- if (PixelDataType != rhs.PixelDataType) return false;
- if (BitDepth != rhs.BitDepth) return false;
- switch (PixelDataType)
- {
- case PixelDataType_Unknown:
- return true;
- case PixelDataType_Mono:
- return Data.Mono == rhs.Data.Mono;
- case PixelDataType_YUV:
- return Data.YUV.Y == rhs.Data.YUV.Y && Data.YUV.U == rhs.Data.YUV.U && Data.YUV.V == rhs.Data.YUV.V;
- case PixelDataType_RGB:
- return Data.RGB.R == rhs.Data.RGB.R && Data.RGB.G == rhs.Data.RGB.G && Data.RGB.B == rhs.Data.RGB.B;
- case PixelDataType_RGBA:
- return Data.RGB.R == rhs.Data.RGBA.R && Data.RGBA.G == rhs.Data.RGBA.G && Data.RGBA.B == rhs.Data.RGBA.B && Data.RGBA.A == rhs.Data.RGBA.A;
- case PixelDataType_BayerR:
- return Data.BayerR == rhs.Data.BayerR;
- case PixelDataType_BayerG:
- return Data.BayerG == rhs.Data.BayerG;
- case PixelDataType_BayerB:
- return Data.BayerB == rhs.Data.BayerB;
- default:
- PYLON_ASSERT2( false, "Cannot compare SPixelDataStructure. It contains unexpected data." );
- }
- return false;
- }
- /// Compares pixel data.
- bool operator!=( const SPixelData& rhs )
- {
- return !((*this) == rhs);
- }
- };
- /**
- * @}
- */
- }
- #ifdef _MSC_VER
- # pragma pack(pop)
- #endif /* _MSC_VER */
- #endif /* INCLUDED_PIXELDATA_H_9714014 */
|