// static void LLFloaterReporter::uploadDoneCallback(const LLUUID &uuid, void *user_data, S32 result, LLExtStat ext_status) // StoreAssetData callback (fixed) { LLUploadDialog::modalUploadFinished(); LLResourceData* data = (LLResourceData*)user_data; if(result < 0) { LLStringUtil::format_map_t args; std::string reason = std::string(LLAssetStorage::getErrorString(result)); args["[REASON]"] = reason; gViewerWindow->alertXml("ErrorUploadingReportScreenshot", args); std::string err_msg("There was a problem uploading a report screenshot"); err_msg += " due to the following reason: " + reason; llwarns << err_msg << llendl; return; } EReportType report_type = UNKNOWN_REPORT; if (data->mPreferredLocation == -1) { report_type = BUG_REPORT; } else if (data->mPreferredLocation == -2) { report_type = COMPLAINT_REPORT; } else { llwarns << "Unknown report type : " << data->mPreferredLocation << llendl; } LLFloaterReporter *self = getReporter(report_type); if (self) { self->mScreenID = uuid; llinfos << "Got screen shot " << uuid << llendl; self->sendReportViaLegacy(self->gatherReport()); self->close(); } }
void ConvolutionFilterShell::ConvolutionFilterThread::convolve(const T*) { int numResultsCols = mInput.mpIterCheck->getNumSelectedColumns(); if (mInput.mpResult == NULL) { return; } const RasterDataDescriptor* pResultDescriptor = static_cast<const RasterDataDescriptor*>( mInput.mpResult->getDataDescriptor()); // account for AOIs which extend outside the dataset int maxRowNum = static_cast<int>(mInput.mpDescriptor->getRowCount()) - 1; mRowRange.mFirst = std::max(0, mRowRange.mFirst); mRowRange.mLast = std::min(mRowRange.mLast, maxRowNum); unsigned int bandCount = mInput.mBands.size(); for (unsigned int bandNum = 0; bandNum < bandCount; ++bandNum) { FactoryResource<DataRequest> pResultRequest; pResultRequest->setRows(pResultDescriptor->getActiveRow(mRowRange.mFirst), pResultDescriptor->getActiveRow(mRowRange.mLast)); pResultRequest->setColumns(pResultDescriptor->getActiveColumn(0), pResultDescriptor->getActiveColumn(numResultsCols - 1)); pResultRequest->setBands(pResultDescriptor->getActiveBand(bandNum), pResultDescriptor->getActiveBand(bandNum)); pResultRequest->setWritable(true); DataAccessor resultAccessor = mInput.mpResult->getDataAccessor(pResultRequest.release()); if (!resultAccessor.isValid()) { return; } int oldPercentDone = -1; int rowOffset = static_cast<int>(mInput.mpIterCheck->getOffset().mY); int startRow = mRowRange.mFirst + rowOffset; int stopRow = mRowRange.mLast + rowOffset; int columnOffset = static_cast<int>(mInput.mpIterCheck->getOffset().mX); int startColumn = columnOffset; int stopColumn = numResultsCols + columnOffset - 1; int yshift = (mInput.mKernel.Nrows() - 1) / 2; int xshift = (mInput.mKernel.Ncols() - 1) / 2; FactoryResource<DataRequest> pRequest; pRequest->setRows(mInput.mpDescriptor->getActiveRow(std::max(0, startRow - yshift)), mInput.mpDescriptor->getActiveRow(std::min(maxRowNum, stopRow + mInput.mKernel.Nrows() - yshift))); pRequest->setColumns(mInput.mpDescriptor->getActiveColumn(startColumn), mInput.mpDescriptor->getActiveColumn(stopColumn)); pRequest->setBands(mInput.mpDescriptor->getActiveBand(mInput.mBands[bandNum]), mInput.mpDescriptor->getActiveBand(mInput.mBands[bandNum])); DataAccessor accessor = mInput.mpRaster->getDataAccessor(pRequest.release()); if (!accessor.isValid()) { return; } Service<ModelServices> model; ModelServices* pModel = model.get(); int numRows = stopRow - startRow + 1; for (int row_index = startRow; row_index <= stopRow; ++row_index) { int percentDone = 100 * ((bandNum * numRows) + (row_index - startRow)) / (numRows * bandCount); if (percentDone > oldPercentDone) { oldPercentDone = percentDone; getReporter().reportProgress(getThreadIndex(), percentDone); } if (mInput.mpAbortFlag != NULL && *mInput.mpAbortFlag) { break; } for (int col_index = startColumn; col_index <= stopColumn; ++col_index) { double accum = 0.0; if (mInput.mpIterCheck->getPixel(col_index, row_index)) { for (int kernelrow = 0; kernelrow < mInput.mKernel.Nrows(); kernelrow++) { int neighbor_row = row_index - yshift + kernelrow; int real_row = std::min(std::max(0, neighbor_row), static_cast<int>(mInput.mpDescriptor->getRowCount()) - 1); for (int kernelcol = 0; kernelcol < mInput.mKernel.Ncols(); kernelcol++) { int neighbor_col = col_index - xshift + kernelcol; int real_col = std::min(std::max(0, neighbor_col), static_cast<int>(mInput.mpDescriptor->getColumnCount()) - 1); accessor->toPixel(real_row, real_col); if (accessor.isValid() == false) { return; } double val = 0.0; pModel->getDataValue<T>(reinterpret_cast<T*>(accessor->getColumn()), COMPLEX_MAGNITUDE, 0, val); accum += mInput.mKernel(kernelrow+1, kernelcol+1) * val / mInput.mKernel.Storage(); } } } if (resultAccessor.isValid() == false) { return; } switchOnEncoding(pResultDescriptor->getDataType(), assignResult, resultAccessor->getColumn(), accum + mInput.mOffset); resultAccessor->nextColumn(); } resultAccessor->nextRow(); } } }
void NormalizeData::NormalizeDataThread::run() { if (mInput.mpResult == NULL) { getReporter().reportError("No result data element."); return; } EncodingType encoding = mInput.mpDescriptor->getDataType(); int numCols = mInput.mpResultDescriptor->getColumnCount(); int oldPercentDone = 0; int startRow = mRowRange.mFirst; int stopRow = mRowRange.mLast; bool isBip = (mInput.mpResultDescriptor->getInterleaveFormat() == BIP); unsigned int numBandsInLoop = isBip ? 1 : mInput.mpResultDescriptor->getBandCount(); unsigned int numBandsPerElement = isBip ? mInput.mpResultDescriptor->getBandCount() : 1; std::vector<double> bandMaxValues; bandMaxValues.reserve(mInput.mpDescriptor->getBandCount()); for (unsigned int band = 0; band < mInput.mpDescriptor->getBandCount(); band++) { bandMaxValues.push_back(mInput.mpRaster->getStatistics(mInput.mpDescriptor->getActiveBand(band))->getMax()); } Service<ModelServices> pModel; for(unsigned int band = 0; band < numBandsInLoop; band++) { FactoryResource<DataRequest> pResultRequest; pResultRequest->setRows(mInput.mpResultDescriptor->getActiveRow(mRowRange.mFirst), mInput.mpResultDescriptor->getActiveRow(mRowRange.mLast)); pResultRequest->setColumns(mInput.mpResultDescriptor->getActiveColumn(0), mInput.mpResultDescriptor->getActiveColumn(numCols - 1)); if (!isBip) { pResultRequest->setBands(mInput.mpResultDescriptor->getActiveBand(band), mInput.mpResultDescriptor->getActiveBand(band)); } pResultRequest->setWritable(true); DataAccessor resultAccessor = mInput.mpResult->getDataAccessor(pResultRequest.release()); if (!resultAccessor.isValid()) { getReporter().reportError("Invalid data access."); return; } FactoryResource<DataRequest> pRequest; pRequest->setRows(mInput.mpDescriptor->getActiveRow(mRowRange.mFirst), mInput.mpDescriptor->getActiveRow(mRowRange.mLast)); pRequest->setColumns(mInput.mpDescriptor->getActiveColumn(0), mInput.mpDescriptor->getActiveColumn(numCols - 1)); if (!isBip) { pRequest->setBands(mInput.mpResultDescriptor->getActiveBand(band), mInput.mpResultDescriptor->getActiveBand(band)); } DataAccessor accessor = mInput.mpRaster->getDataAccessor(pRequest.release()); if (!accessor.isValid()) { getReporter().reportError("Invalid data access."); return; } for (int row_index = startRow; row_index <= stopRow; row_index++) { int percentDone = mRowRange.computePercent(row_index / numBandsInLoop); if (percentDone > oldPercentDone) { oldPercentDone = percentDone; getReporter().reportProgress(getThreadIndex(), percentDone); } if (mInput.mpAbortFlag != NULL && *mInput.mpAbortFlag) { getReporter().reportProgress(getThreadIndex(), 100); break; } for (int col_index = 0; col_index < numCols; col_index++) { if (!resultAccessor.isValid()) { getReporter().reportError("Invalid data access."); return; } for (unsigned int inner = 0; inner < numBandsPerElement; inner++) { double val = pModel->getDataValue(encoding, accessor->getColumn(), inner); val /= bandMaxValues[std::max(band, inner)]; reinterpret_cast<double*>(resultAccessor->getColumn())[inner] = val; } resultAccessor->nextColumn(); accessor->nextColumn(); } resultAccessor->nextRow(); accessor->nextRow(); } } getReporter().reportCompletion(getThreadIndex()); }