NOTE: Throws except::Throwable.
| 79 | //NOTE: Throws except::Throwable. |
| 80 | // |
| 81 | void NitfFileWriter::write() |
| 82 | { |
| 83 | if (m_fileTitle.empty()) |
| 84 | m_fileTitle = FileUtils::getFilename(m_filename); |
| 85 | |
| 86 | ::nitf::Record record(NITF_VER_21); |
| 87 | ::nitf::FileHeader header = record.getHeader(); |
| 88 | |
| 89 | // This check would be better in an initialize() function, but we can't |
| 90 | // because this is a flex writer and we don't know the filename |
| 91 | // until the execute() step. |
| 92 | if (m_fileTitle.size() > header.getFileTitle().getLength()) |
| 93 | throw error("Can't write file. FTITLE field (usually filename) " |
| 94 | "can't be longer than " + |
| 95 | Utils::toString(header.getFileTitle().getLength()) + |
| 96 | ". Use 'ftitle' option to set appropriately sized FTITLE."); |
| 97 | |
| 98 | header.getFileHeader().set("NITF"); |
| 99 | header.getComplianceLevel().set(m_cLevel); |
| 100 | header.getSystemType().set(m_sType); |
| 101 | header.getOriginStationID().set(m_oStationId); |
| 102 | header.getFileTitle().set(m_fileTitle); |
| 103 | header.getClassification().set(m_fileClass); |
| 104 | header.getMessageCopyNum().set("00000"); |
| 105 | header.getMessageNumCopies().set("00000"); |
| 106 | header.getEncrypted().set("0"); |
| 107 | header.getBackgroundColor().setRawData(const_cast<char*>("000"), 3); |
| 108 | header.getOriginatorName().set(m_origName); |
| 109 | header.getOriginatorPhone().set(m_origPhone); |
| 110 | header.getSecurityGroup().getClassificationSystem().set( |
| 111 | m_securityClassificationSystem); |
| 112 | header.getSecurityGroup().getControlAndHandling().set( |
| 113 | m_securityControlAndHandling); |
| 114 | header.getSecurityGroup().getClassificationText().set(m_sic); |
| 115 | |
| 116 | ::nitf::DESegment des = record.newDataExtensionSegment(); |
| 117 | |
| 118 | des.getSubheader().getFilePartType().set("DE"); |
| 119 | des.getSubheader().getTypeID().set("LIDARA DES"); |
| 120 | des.getSubheader().getVersion().set("01"); |
| 121 | // We currently use the file classification for the subheader, since the |
| 122 | // only thing we're writing is the data extension. |
| 123 | des.getSubheader().getSecurityClass().set(m_fileClass); |
| 124 | ::nitf::FileSecurity security = record.getHeader().getSecurityGroup(); |
| 125 | des.getSubheader().setSecurityGroup(security.clone()); |
| 126 | |
| 127 | ::nitf::TRE usrHdr("LIDARA DES", "raw_data"); |
| 128 | usrHdr.setField("raw_data", "not"); |
| 129 | ::nitf::Field fld = usrHdr.getField("raw_data"); |
| 130 | fld.setType(::nitf::Field::BINARY); |
| 131 | |
| 132 | des.getSubheader().setSubheaderFields(usrHdr); |
| 133 | |
| 134 | ::nitf::ImageSegment image = record.newImageSegment(); |
| 135 | ::nitf::ImageSubheader subheader = image.getSubheader(); |
| 136 | |
| 137 | double corners[4][2]; |
| 138 | corners[0][0] = m_bounds.maxy; |
no test coverage detected