void setupImageSubheader( test_nitf_ImageIOConstructArgs *args, nitf_Record *record, nitf_ImageSegment *seg) { nitf_ImageSubheader *subheader; /* Subheader from segment */ nitf_Uint32 nBands; /* Number of bands */ nitf_BandInfo **bands; /* BandInfo array */ nitf_Error errorObj; /* Error object argument */ nitf_Uint32 i; subheader = seg->subheader; nitf_Field_setUint32(subheader->numRows, args->nRows, &errorObj); nitf_Field_setUint32(subheader->numCols, args->nColumns, &errorObj); nitf_Field_setUint32(subheader->numImageBands, args->nBands, &errorObj); nitf_Field_setUint32(subheader->numMultispectralImageBands, args->nMultiBands, &errorObj); nitf_Field_setUint32(subheader->numBlocksPerRow, args->nBlksPerRow, &errorObj); nitf_Field_setUint32(subheader->numBlocksPerCol, args->nBlksPerColumn, &errorObj); nitf_Field_setUint32(subheader->numPixelsPerVertBlock, args->nRowsPerBlk, &errorObj); nitf_Field_setUint32(subheader->numPixelsPerHorizBlock, args->nColumnsPerBlk, &errorObj); nitf_Field_setString(subheader->imageMode, args->mode, &errorObj); nitf_Field_setString(subheader->imageCompression, args->compression, &errorObj); nBands = args->nBands; if (nBands == 0) nBands = args->nMultiBands; bands = (nitf_BandInfo **) NITF_MALLOC(sizeof(nitf_BandInfo *)); if (bands == NULL) { nitf_Error_init(&errorObj, NITF_STRERROR(NITF_ERRNO), NITF_CTXT, NITF_ERR_MEMORY); nitf_Error_print(&errorObj, stderr, "Error setting up band source "); exit(EXIT_FAILURE); } for (i = 0;i < nBands;i++) { bands[i] = nitf_BandInfo_construct(&errorObj); if (bands[i] == NULL) { nitf_Error_print(&errorObj, stderr, "Error setting up band source "); exit(EXIT_FAILURE); } if (!nitf_BandInfo_init(bands[i], "M", /* The band representation, Nth band */ " ", /* The band subcategory */ "N", /* The band filter condition */ " ", /* The band standard image filter code */ 0, /* The number of look-up tables */ 0, /* The number of entries/LUT */ NULL, /* The look-up tables */ &errorObj)) { nitf_Error_print(&errorObj, stderr, "Error setting up band source "); exit(EXIT_FAILURE); } } if (!nitf_ImageSubheader_setPixelInformation(subheader, args->pixelType, /* Pixel value type */ args->nBits, /* Number of bits/pixel*/ args->nBitsActual, /* Actual number of bits/pixel */ args->justify, /* Pixel justification */ "MONO", /* Image representation */ "SAR", /* Image category */ nBands, /* Number of bands */ bands, /* Band information object list */ &errorObj )) { nitf_Error_print(&errorObj, stderr, "Error setting up band source "); exit(EXIT_FAILURE); } return; }
int main(int argc, char** argv) { try { nitf_Error e; // Foo<int>* foo = new Bar<int>(); // delete foo; nitf_Field* cField = nitf_Field_construct(100, NITF_BCS_N, &e); nitf::Field field(cField); { nitf::Field field2(cField); } std::cout << field.isValid() << std::endl; nitf_BandInfo* cBandInfo = nitf_BandInfo_construct(&e); assert(cBandInfo); nitf::BandInfo info(cBandInfo); std::cout << (int)info.getNumLUTs() << std::endl; std::cout << "HERE!!!!!!!!!!!!!!!!!!!!" << std::endl; nitf::SubWindow sub; nitf::SubWindow sub2 = sub; sub.setNumRows(5); nitf::PixelSkip p(1, 1); sub.setDownSampler(p); sub.setDownSampler(p); sub.setDownSampler(p); sub.setDownSampler(p); nitf::PixelSkip p2(1, 1); sub.setDownSampler(p2); sub.setDownSampler(p); nitf_SubWindow* subw = nitf_SubWindow_construct(&e); nitf::SubWindow sub3(subw); std::cout << sub.getNumRows() << " == " << sub2.getNumRows() << std::endl; nitf::List list; nitf::List list2 = list; { nitf::FileHeader header; nitf::FileHeader header2(header.clone()); //should be not equal std::cout << "Equal? " << (header == header2) << std::endl; nitf::FileHeader header3(header2); //these two should be equal std::cout << "Equal? " << (header3 == header2) << std::endl; } nitf::HashTable hash; nitf::Extensions extensions; { nitf::ImageSegment imageSeg; nitf::ImageSubheader imageSub; imageSeg.getSubheader().getImageId() = "Test Image"; std::cout << imageSeg.getSubheader().getImageId().toString() << std::endl; nitf::Field f = imageSeg.getSubheader().getImageId(); std::cout << f.toString() << std::endl; nitf::ImageSegment imageSeg2 = imageSeg.clone(); nitf::ImageSubheader imageSub2(imageSub.clone()); extensions = imageSub.getExtendedSection(); } nitf::TextSegment tSeg; nitf::TextSubheader tSub; nitf::GraphicSegment gSeg; nitf::GraphicSubheader gSub; nitf::DESegment dSeg; nitf::DESubheader dSub; nitf::LabelSegment rSeg; nitf::LabelSubheader rSub; nitf::TRE tre("JITCID"); //tre.print(); std::cout << "HERE!!!!!" << std::endl; nitf::Reader reader; nitf::Writer writer; //open a file sys::OS os; std::vector< std::string > files; for (int i = 1; i < argc; ++i) { if (!os.exists(argv[i])) std::cout << "Error -> File does not exist: " << argv[i] << std::endl; else files.push_back(argv[i]); } for (std::vector< std::string >::iterator it = files.begin(); it != files.end(); ++it) { nitf::IOHandle handle(*it); nitf::Reader rdr; nitf::Record rec = rdr.read(handle); std::cout << "CODEWORDS: " << rec.getHeader().getSecurityGroup().getCodewords().toString() << std::endl; rec.getHeader().getSecurityGroup().getCodewords() = "TEST"; std::cout << "CODEWORDS: " << rec.getHeader().getSecurityGroup().getCodewords().toString() << std::endl; nitf::FileSecurity security; rec.getHeader().setSecurityGroup(security); std::cout << "CODEWORDS: " << rec.getHeader().getSecurityGroup().getCodewords().toString() << std::endl; std::cout << "Num Images: " << rec.getImages().getSize() << std::endl; } nitf_SubWindow_destruct(&subw); nitf_Field_destruct(&cField); nitf_BandInfo_destruct(&cBandInfo); } catch(except::Exception& ex) { std::cerr << "ERROR: " << ex.getMessage() << std::endl; return 1; } return 0; }