Skip to content

File ManagedInferenceBoundingBox.h

File List > SpinnakerNET > ManagedInferenceBoundingBox.h

Go to the documentation of this file

//=============================================================================
// Copyright (c) 2026 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved.
//
// This software is the confidential and proprietary information of FLIR
// Integrated Imaging Solutions, Inc. ("Confidential Information"). You
// shall not disclose such Confidential Information and shall use it only in
// accordance with the terms of the license agreement you entered into
// with FLIR Integrated Imaging Solutions, Inc. (FLIR).
//
// FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
// SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES
// SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
// THIS SOFTWARE OR ITS DERIVATIVES.
//=============================================================================

#ifndef FLIR_SPINNAKER_NET_INFERENCE_BOUNDING_BOX_H
#define FLIR_SPINNAKER_NET_INFERENCE_BOUNDING_BOX_H

#include "ChunkDataInference.h"
#include "ManagedDefs.h"
using namespace ::System;

namespace SpinnakerNET
{


    public ref struct ManagedInferenceBoundingBox
    {
    public:
        ~ManagedInferenceBoundingBox();

    internal:
        ManagedInferenceBoundingBox(const Spinnaker::InferenceBoundingBox* nativeBoundingBox);

    public:
        property InferenceBoundingBoxType BoxType
        {
            InferenceBoundingBoxType get()
            {
                return (InferenceBoundingBoxType)(m_nativeBoundingBox->boxType);
            }
        }

        property __int16 ClassId
        {
            __int16 get()
            {
                return m_nativeBoundingBox->classId;
            }
        }

        property float Confidence
        {
            float get()
            {
                return m_nativeBoundingBox->confidence;
            }
        }

        // Rectangle
        property __int16 RectangleTopLeftX
        {
            __int16 get()
            {
                return m_nativeBoundingBox->rect.topLeftXCoord;
            }
        }

        property __int16 RectangleTopLeftY
        {
            __int16 get()
            {
                return m_nativeBoundingBox->rect.topLeftYCoord;
            }
        }

        property __int16 RectangleBottomRightX
        {
            __int16 get()
            {
                return m_nativeBoundingBox->rect.bottomRightXCoord;
            }
        }

        property __int16 RectangleBottomRightY
        {
            __int16 get()
            {
                return m_nativeBoundingBox->rect.bottomRightYCoord;
            }
        }

        // Circle
        property __int16 CircleCenterX
        {
            __int16 get()
            {
                return m_nativeBoundingBox->circle.centerXCoord;
            }
        }

        property __int16 CircleCenterY
        {
            __int16 get()
            {
                return m_nativeBoundingBox->circle.centerYCoord;
            }
        }

        property __int16 CircleRadius
        {
            __int16 get()
            {
                return m_nativeBoundingBox->circle.radius;
            }
        }

        // Rotated rectangle
        property __int16 RotatedRectangleTopLeftX
        {
            __int16 get()
            {
                return m_nativeBoundingBox->rotatedRect.topLeftXCoord;
            }
        }

        property __int16 RotatedRectangleTopLeftY
        {
            __int16 get()
            {
                return m_nativeBoundingBox->rotatedRect.topLeftYCoord;
            }
        }

        property __int16 RotatedRectangleBottomRightX
        {
            __int16 get()
            {
                return m_nativeBoundingBox->rotatedRect.bottomRightXCoord;
            }
        }

        property __int16 RotatedRectangleBottomRightY
        {
            __int16 get()
            {
                return m_nativeBoundingBox->rotatedRect.bottomRightYCoord;
            }
        }

        property __int16 RotatedRectangleRotationAngle
        {
            __int16 get()
            {
                return m_nativeBoundingBox->rotatedRect.rotationAngle;
            }
        }

    private:
        Spinnaker::InferenceBoundingBox* m_nativeBoundingBox;
    };



    public ref class ManagedInferenceBoundingBoxResult
    {
    public:
        ~ManagedInferenceBoundingBoxResult();

    internal:
        ManagedInferenceBoundingBoxResult(const Spinnaker::InferenceBoundingBoxResult* nativeResult);

    public:
        property __int8 Version
        {
            __int8 get()
            {
                return m_nativeResult->GetVersion();
            }
        }

        property __int16 BoxCount
        {
            __int16 get()
            {
                return m_nativeResult->GetBoxCount();
            }
        }

        property __int8 BoxSize
        {
            __int8 get()
            {
                return m_nativeResult->GetBoxSize();
            }
        }

        property ManagedInferenceBoundingBox^ BoxAt[int]
        {
            ManagedInferenceBoundingBox^ get(int index)
            {
                Spinnaker::InferenceBoundingBox box = m_nativeResult->GetBoxAt(index);
                return gcnew ManagedInferenceBoundingBox(&box);
            }
        }

    private:
        Spinnaker::InferenceBoundingBoxResult* m_nativeResult; 

    };

}



#endif // FLIR_SPINNAKER_NET_INFERENCE_BOUNDING_BOX_H