Skip to content

File constants.h

File List > src > constants.h

Go to the documentation of this file

/*******************************************************
 * Author: Intelligent Medical Systems
 * License: see LICENSE.md file
 *******************************************************/
#ifndef CONSTANTS_H
#define CONSTANTS_H

#include <QColor>
#include <QJsonArray>
#include <QJsonObject>
#include <QMap>
#include <QString>
#include <opencv2/opencv.hpp>

constexpr int MAX_WIDTH_DISPLAY_WINDOW = 1024;
constexpr int MAX_HEIGHT_DISPLAY_WINDOW = 544;

constexpr auto DEFAULT_SATURATION_COLOR = QColor(255, 105, 180);

constexpr auto DEFAULT_DARK_COLOR = QColor(255, 0, 0);

const QString LOG_FILE_NAME = "logFile.txt";

const QString CHIP_TEMP = "temperature_chip";
const QString HOUSE_TEMP = "temperature_house";
const QString HOUSE_BACK_TEMP = "temperature_house_back_side";
const QString SENSOR_BOARD_TEMP = "temperature_sensor_board";
constexpr int TEMP_LOG_INTERVAL = 5;

const QString FIELD_ORIGINAL_STYLE = "QLineEdit {background-color: rgba(35, 38, 41, 0.75);}";
const QString FIELD_EDITED_STYLE = "QLineEdit {background-color: rgba(117, 52, 134, 1);}";

constexpr int FRAMERATE_MAX = 80;

constexpr int OVEREXPOSURE_PIXEL_BOUNDARY_VALUE = 225;
constexpr int UNDEREXPOSURE_PIXEL_BOUNDARY_VALUE = 10;

const QString CAMERA_TYPE_SPECTRAL = "spectral";
const QString CAMERA_TYPE_GRAY = "gray";
const QString CAMERA_TYPE_RGB = "rgb";
const QString CAMERA_FAMILY_XISPEC = "xiSpec";
const QString CAMERA_FAMILY_XIC = "xiC";
const QString CAMERA_FAMILY_XIQ = "xiQ";
const QString CAMERA_FAMILY_XIB = "xiB";
const QString CAMERA_FAMILY_XIB64 = "xiB-64";
const QString CAMERA_FAMILY_XIRAY = "xiRAY";
const QString CAMERA_FAMILY_XIX = "xiX";

const std::vector SUPPORTED_CAMERA_TYPES = {CAMERA_TYPE_SPECTRAL, CAMERA_TYPE_GRAY, CAMERA_TYPE_RGB};

const std::vector SUPPORTED_CAMERA_FAMILIES = {CAMERA_FAMILY_XISPEC, CAMERA_FAMILY_XIC,   CAMERA_FAMILY_XIQ,
                                               CAMERA_FAMILY_XIB,    CAMERA_FAMILY_XIB64, CAMERA_FAMILY_XIRAY,
                                               CAMERA_FAMILY_XIX};

constexpr int NR_REFERENCE_IMAGES_TO_RECORD = 100;

struct CameraData
{
    QString cameraType;
    QString cameraFamily;
    std::vector<int> mosaicShape;
    std::vector<int> bgrChannels;

    static CameraData fromJson(const QJsonObject &jsonObject)
    {
        CameraData data;
        data.cameraType = jsonObject.value("cameraType").toString();
        data.cameraFamily = jsonObject.value("cameraFamily").toString();
        data.mosaicShape.push_back(jsonObject.value("mosaicWidth").toInt());
        data.mosaicShape.push_back(jsonObject.value("mosaicHeight").toInt());
        if (jsonObject.contains("bgrChannels") && jsonObject["bgrChannels"].isArray())
        {
            QJsonArray array = jsonObject["bgrChannels"].toArray();
            for (const auto &entry : array)
            {
                data.bgrChannels.push_back(entry.toInt());
            }
        }
        else
        {
            data.bgrChannels = std::vector<int>(); // Optional, but explicitly sets it as empty
        }
        return data;
    }
};

QMap<QString, CameraData> loadCameraMapperFromJson(const QString &fileName);

bool isCameraSupported(const QString &type, const QString &family);

QMap<QString, CameraData> &getCameraMapper();

constexpr auto EXPOSURE_KEY = "exposure_us";

constexpr auto FRAME_NUMBER_KEY = "acq_nframe";

constexpr auto COLOR_FILTER_ARRAY_FORMAT_KEY = "color_filter_array";

constexpr auto TIME_STAMP_KEY = "time_stamp";

const std::vector<QString> EXPECTED_METADATA_KEYS = {EXPOSURE_KEY, FRAME_NUMBER_KEY, COLOR_FILTER_ARRAY_FORMAT_KEY,
                                                     TIME_STAMP_KEY, SENSOR_BOARD_TEMP};

constexpr int MAX_FRAMES_TO_COMPUTE_FPS = 10;

constexpr int UPDATE_RATE_MS_FPS_TIMER = 2000;

constexpr auto COLOR_UI_PRIMARY = "#ffd740";
#endif