123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- //------------------------------------------------------------------------------
- // Basler pylon SDK
- // Copyright (c) 2010-2021 Basler AG
- // http://www.baslerweb.com
- // Author: Andreas Gau
- //------------------------------------------------------------------------------
- /*!
- \file
- \brief Contains an interface for an image.
- */
- #ifndef INCLUDED_IMAGE_H_9730799
- #define INCLUDED_IMAGE_H_9730799
- #include <pylon/Platform.h>
- #ifdef _MSC_VER
- # pragma pack(push, PYLON_PACKING)
- #endif /* _MSC_VER */
- #include <pylon/PylonBase.h>
- #include <pylon/PixelType.h>
- namespace Pylon
- {
- /** \addtogroup Pylon_ImageHandlingSupport
- * @{
- */
- /// Defines the vertical orientation of an image in memory.
- enum EImageOrientation
- {
- ImageOrientation_TopDown, //!< The first row of the image is located at the start of the image buffer. This is the default for images taken by a camera.
- ImageOrientation_BottomUp //!< The last row of the image is located at the start of the image buffer.
- };
- /*!
- \interface IImage
- \brief Usable to access image properties and image buffer.
- */
- interface IImage
- {
- public:
- /// Ensure proper destruction by using a virtual destructor.
- // Do not add implemenation here in class as older compilers doesn't accept in-class definitions (see definition below)
- virtual ~IImage() = 0;
- //
- /*!
- \brief Can be used to check whether an image is valid.
- \return Returns false if the image is invalid.
- \error
- Does not throw C++ exceptions.
- */
- virtual bool IsValid() const = 0;
- /*!
- \brief Get the current pixel type.
- \return Returns the pixel type or PixelType_Undefined if the image is invalid.
- \error
- Does not throw C++ exceptions.
- */
- virtual EPixelType GetPixelType() const = 0;
- /*!
- \brief Get the current number of columns in pixels.
- \return Returns the current number of columns in pixels or 0 if the image is invalid.
- \error
- Does not throw C++ exceptions.
- */
- virtual uint32_t GetWidth() const = 0;
- /*!
- \brief Get the current number of rows.
- \return Returns the current number of rows or 0 if the image is invalid.
- \error
- Does not throw C++ exceptions.
- */
- virtual uint32_t GetHeight() const = 0;
- /*!
- \brief Get the number of extra data bytes at the end of each row.
- \return Returns the number of extra data bytes at the end of each row or 0 if the image is invalid.
- \error
- Does not throw C++ exceptions.
- */
- virtual size_t GetPaddingX() const = 0;
- /*!
- \brief Get the vertical orientation of the image in memory.
- \return Returns the orientation of the image or ImageOrientation_TopDown if the image is invalid.
- \error
- Does not throw C++ exceptions.
- */
- virtual EImageOrientation GetOrientation() const = 0;
- /*!
- \brief Get the pointer to the buffer.
- \return Returns the pointer to the used buffer or NULL if the image is invalid.
- \error
- Does not throw C++ exceptions.
- */
- virtual void* GetBuffer() = 0;
- /*!
- \brief Get the pointer to the buffer containing the image.
- The buffer is at least as large as the value returned by GetImageSize().
- \return Returns the pointer to the used buffer or NULL if the image is invalid.
- \error
- Does not throw C++ exceptions.
- */
- virtual const void* GetBuffer() const = 0;
- /*!
- \brief Get the size of the image in bytes.
- \return Returns the size of the image in bytes or 0 if the image is invalid.
- \error
- Does not throw C++ exceptions.
- */
- virtual size_t GetImageSize() const = 0;
- /*!
- \brief Indicates that the referenced buffer is only referenced by this image.
- \return Returns true if the referenced buffer is only referenced by this image. Returns false if the image is invalid.
- \error
- Does not throw C++ exceptions.
- */
- virtual bool IsUnique() const = 0;
- /*!
- \brief Get the stride in bytes.
- The stride in bytes can not be computed for packed image format when the stride is not byte aligned. See also Pylon::IsPacked().
- The stride in bytes can not be computed if the image is invalid.
- \param[out] strideBytes The stride in byte if it can be computed.
- \return Returns true if the stride can be computed.
- \error
- Does not throw C++ exceptions.
- */
- virtual bool GetStride( size_t& strideBytes ) const = 0;
- };
- /**
- * @}
- */
- // Implementation required for Windows only.
- // Note: the C++ standard >= 11 prohibit pure virtual destructors with a function body
- // in the declaration. Consequently gcc 4.0 and newer reject an inline implementation
- // in the class.
- inline IImage::~IImage()
- {
- }
- }
- #ifdef _MSC_VER
- # pragma pack(pop)
- #endif /* _MSC_VER */
- #endif /* INCLUDED_IMAGE_H_9730799 */
|