#ifndef SAVE2FILETEXTS_H
#define SAVE2FILETEXTS_H
#include <QString>
// Common
const QString endValue = ";\n";
const QString tab = "   ";

// CMOS direct
// simple
const QString CMOSTypeText = "CMOStype";
const QString CMOSShutterText = "CMOSShutter";
const QString CMOSAECText = "AEC";
const QString CMOSAGCText = "AGC";
const QString CMOSHDRText = "HDR";
const QString CMOSTestText = "Test";
const QString CMOSBrightText = "Brightness";
const QString CMOSGainText = "Gain";
const QString CMOSExpText = "ExposureTime";

// object based
// CMOS capabilities
const QString CMOCapabText = "Capabilities";
const QString CMOCapabRGBText = "RGB_capab";
const QString CMOCapabAECText = "AEC_capab";
const QString CMOCapabAGCText = "AGC_capab";
const QString CMOCapabHDRText = "HDR_capab";
const QString CMOCapabROIText = "ROI_capab";
const QString CMOCapabBinText = "BINNING_capab";
const QString CMOCapabSkipText = "SKIP_capab";
const QString CMOCapabFlipText = "FLIP_capab";
const QString CMOCapabTestText = "TESTmode_capab";

// CMOS limits
const QString CMOSLimitsText = "Limits";
const QString CMOSLimitsMinWidthText = "MinImgWidth_lims";
const QString CMOSLimitsMaxWidthText = "MaxImgWidth_lims";
const QString CMOSLimitsMinHeightText = "MinImgHeight_lims";
const QString CMOSLimitsMaxHeightText = "MaxImgHeight_lims";
const QString CMOSLimitsMinBrightText = "MinBrightness_lims";
const QString CMOSLimitsMaxBrightText = "MaxBrightness_lims";
const QString CMOSLimitsMinGainText = "MinGain_lims";
const QString CMOSLimitsMaxGainText = "MaxGain_lims";
const QString CMOSLimitsGainStepsRText = "GainStepsRealSize_lims";
const QString CMOSLimitsGainStepsText = "GainStepsSize_lims";
const QString CMOSLimitsGainLimsText = "GainStepsLimits_lims";
const QString CMOSLimitsBinText = "BinningSteps_lims";
const QString CMOSLimitsSkipText = "SkipSteps_lims";

// CMOS image params
const QString CMOSImageParamsText = "ImageParameters";
const QString CMOSImageParamsWidthText = "Width_imgParams";
const QString CMOSImageParamsHeightText = "Height_imgParams";
const QString CMOSImageParamsRGBText = "RGB_imgParams";

// CMOS ROI
const QString CMOSROIText = "ROI";
const QString CMOSROIEnabledText = "Enabled_ROI";
const QString CMOSROIWidthText = "Width_ROI";
const QString CMOSROIHeightText = "Height_ROI";
const QString CMOSROIStartXText = "StartX_ROI";
const QString CMOSROIStartYText = "StartY_ROI";

// CMOS flip
const QString CMOSFlipText = "Flip";
const QString CMOSFlipRowText = "Row_flip";
const QString CMOSFlipColText = "Collumn_flip";

// CMOS binning
const QString CMOSBinText = "Binning";
const QString CMOSBinRowText = "Row_bin";
const QString CMOSBinColText = "Collumn_bin";

// CMOS skip
const QString CMOSSkipText = "Skip";
const QString CMOSSkipRowText = "Row_skip";
const QString CMOSSkipColText = "Collumn_skip";

enum string_code_objects {
  obj_simple,
  obj_capab,
  obj_limits,
  obj_imgParams,
  obj_roi,
  obj_flip,
  obj_binnig,
  obj_skip,
  obj_invalid,
};
string_code_objects getObjectCode(QString text);

enum string_code_simple {
  simple_CMOStype,
  simple_CMOShutter,
  simple_AEC,
  simple_AGC,
  simple_HDR,
  simple_test,
  simple_bright,
  simple_gain,
  simple_exp,
  simple_invalid
};
string_code_simple getSimpleCode(QString text);

enum string_code_capab {
  capab_RGB,
  capab_AEC,
  capab_AGC,
  capab_HDR,
  capab_ROI,
  capab_bin,
  capab_skip,
  capab_flip,
  capab_test,
  capab_invalid
};
string_code_capab getCapabCode(QString text);

enum string_code_lims {
  lims_minWidth,
  lims_maxWidth,
  lims_minHeight,
  lims_maxHeight,
  lims_minBright,
  lims_maxBright,
  lims_minGain,
  lims_maxGain,
  lims_gainStepR,
  lims_gainStep,
  lims_gainLim,
  lims_bin,
  lims_skip,
  lims_invalid
};
string_code_lims getLimsCode(QString text);

enum string_code_image { img_width, img_height, img_rgb, img_invalid };
string_code_image getImageCode(QString text);

enum string_code_roi {
  roi_enabled,
  roi_width,
  roi_height,
  roi_startX,
  roi_startY,
  roi_invalid
};
string_code_roi getROICode(QString text);

enum string_code_flip { flip_row, flip_col, flip_invalid };
string_code_flip getFlipCode(QString text);

enum string_code_bin { bin_row, bin_col, bin_invalid };
string_code_bin getBinCode(QString text);

enum string_code_skip { skip_row, skip_col, skip_invalid };
string_code_skip getSkipCode(QString text);

#endif // SAVE2FILETEXTS_H
