Files
qt5-legatus-legacy/Lts/Viewer/SituationMap/Symbology/sidc_builder.h
T
2026-08-13 18:33:10 +02:00

199 lines
5.2 KiB
C++
Executable File

/**
* @RDE_HEADER@
* Class SidcBuilder
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
// Own
#include "sidc_builder_base.h"
#include "sidc_codec.h"
#include "symbol_dictionary.h"
// Qt
#include <QString>
//----------------------------------------------------------------------------
namespace AdvancedSymbology
{
class ADVANCED_SYMBOLOGY_EXPORT SidcBuilder : SidcBuilderBase
{
public:
explicit SidcBuilder(AdvancedSymbology::SymbolDictionary *symbolDictionary = nullptr);
bool setSidc(const QString &sidc)
{
if (SidcCodec::isEncoded(sidc))
{
switch (SidcCodec::decodeSymbologyType(sidc))
{
case SymbologyType::APP6B : return initFromApp6B(sidc);
case SymbologyType::APP6D : return initFromApp6D(sidc);
case SymbologyType::MIL2525C : return false; // return initFromMil2525C(sidc);
case SymbologyType::MIL2525D : return initFromMil2525D(sidc);
case SymbologyType::None : return false;
}
}
else
{
if (m_symbolDictionary)
{
switch (m_symbolDictionary->symbologyType())
{
case SymbologyType::APP6B : return initFromApp6B(SidcCodec::encodeComplete(SymbologyType::APP6B, sidc));
case SymbologyType::APP6D : return initFromApp6D(SidcCodec::encodeComplete(SymbologyType::APP6D, sidc));
case SymbologyType::MIL2525C : return false; // return initFromMil2525C(sidc);
case SymbologyType::MIL2525D : return initFromMil2525D(SidcCodec::encodeComplete(SymbologyType::MIL2525D, sidc));
case SymbologyType::None : return false;
}
}
return initFromMil2525D(SidcCodec::encodeComplete(SymbologyType::MIL2525D, sidc));
}
return false;
} // setSidc
bool initFromSymbologyType(SymbologyType symbologyType, const QString &sidc);
bool initFromSymbologyTypeBaseSymbolCode(SymbologyType symbologyType, const QString &baseSymbolCode);
bool initFromMil2525D(const QString &sidcMil2525D);
bool initFromMil2525DBaseSymbolCode(const QString &sidcMil2525D_baseSymbolCode);
bool initFromApp6B(const QString &sidcApp6B);
bool initFromApp6BBaseSymbolCode(const QString &sidcApp6B_baseSymbolCode);
bool initFromApp6D(const QString &sidcAPP6D);
bool initFromApp6DBaseSymbolCode(const QString &sidcAPP6D_baseSymbolCode);
~SidcBuilder() = default;
QString toSidc() const;
QString toRawSidc() const;
// !!! Attention: digit count starts with 1, not with 0!!!
//
// Set A, digit 1,2
//
// Version
//
// Set A, digit 3,4
//
// StandardIdentity
SidcDefinitions::StandardIdentity standardIdentity() const; // 1st and 2nd
void setStandardIdentity(const SidcDefinitions::StandardIdentity &standardIdentity);
SidcDefinitions::Context context() const;
void setContext(SidcDefinitions::Context context);
SidcDefinitions::Identity identity() const;
void setIdentity(SidcDefinitions::Identity identity);
bool isIdentityAssumed() const;
//
// Set A, digit 5,6
//
// SymbolSet
SidcDefinitions::SymbolSet symbolSet() const;
void setSymbolSet(const SidcDefinitions::SymbolSet &symbolSet);
//
// Set A, digit 7
//
// Status
SidcDefinitions::Status status() const;
void setStatus(const SidcDefinitions::Status &status);
//
// Set A, digit 8
//
// HQTFDummy
SidcDefinitions::HQTFDummy hqTfFd() const;
uint hqTfFd_UInt() const;
void setHqTfFd(const SidcDefinitions::HQTFDummy &hqTfFd);
bool headquarters() const;
bool taskForce() const;
bool feintDummy() const;
//
// Set A, digit 9, 10
//
SidcDefinitions::AmplifierGroup amplifierGroup() const; // digit 9
void setAmplifierGroup(const SidcDefinitions::AmplifierGroup &amplifierGroup);
unsigned int amplifier2ndDigit() const; // digit 10
void setAmplifier2ndDigit(unsigned int amplifierSecondDigit);
//
// Set B, digit 11 - 16
//
QString symbolEntityCode() const;
void setSymbolEntityCode(const QString &);
unsigned int sectorModifier1Digit(); // Set B, digit 17 - 18
unsigned int sectorModifier2Digit(); // set B, digit 19 - 20
void setSectorModifier1Digit(unsigned int); // Set B, digit 17 - 18
void setSectorModifier2Digit(unsigned int); // set B, digit 19 - 20
private:
void init();
void initAmplifier();
QString m_first10_mil2525D;
QString m_second10_mil2525D;
QString m_app6bRawSidc;
//
// SET A :
//
// Amplifier (Echelon/Mobility/TowedArray)
SidcDefinitions::AmplifierGroup m_amplifierGroup;
SidcDefinitions::EchelonBrigadeAndBelow m_e_BrigadeAndBelow;
SidcDefinitions::EchelonDivisionAndAbove m_e_DivisionAndAbove;
SidcDefinitions::MobilityOnLand m_e_MobilityOnLand;
SidcDefinitions::MobilityOnSnow m_e_MobilityOnSnow;
SidcDefinitions::MobilityOnWater m_e_MobilityOnWater;
SidcDefinitions::NavalTowedArray m_e_NavalTowedArray;
//
// : SET A
//
//
// SET B :
//
// not implemented yes
//
// : SET B
//
static qint32 _smallest;
static qint32 _specialPartA;
static qint32 _invalidPartB;
static qint32 _retiredPartB;
};
} // namespace AdvancedSymbology