当前位置: 首页>>代码示例>>C++>>正文


C++ RasterElement::getRawData方法代码示例

本文整理汇总了C++中RasterElement::getRawData方法的典型用法代码示例。如果您正苦于以下问题:C++ RasterElement::getRawData方法的具体用法?C++ RasterElement::getRawData怎么用?C++ RasterElement::getRawData使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在RasterElement的用法示例。


在下文中一共展示了RasterElement::getRawData方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: copyDataToRasterElement

 int copyDataToRasterElement(DataElement* pElement, DataPointerArgs* pArgs, void* pData)
 {
    RasterElement* pRaster = dynamic_cast<RasterElement*>(pElement);
    if (pRaster == NULL || pData == NULL)
    {
       setLastError(SIMPLE_BAD_PARAMS);
       return 1;
    }
    const RasterDataDescriptor* pDesc = static_cast<const RasterDataDescriptor*>(pRaster->getDataDescriptor());
    void* pRawData = pRaster->getRawData();
    if (pArgs == NULL && pRawData != NULL)
    {
       size_t len = pDesc->getRowCount() * pDesc->getColumnCount() * pDesc->getBandCount()
                  * pDesc->getBytesPerElement();
       memcpy(pRawData, pData, len);
       setLastError(SIMPLE_NO_ERROR);
       return 0;
    }
    DataPointerArgs args = {
       0, pDesc->getRowCount() - 1,
       0, pDesc->getColumnCount() - 1,
       0, pDesc->getBandCount() - 1,
       0 };
    switch (pDesc->getInterleaveFormat())
    {
    case BSQ:
       args.interleaveFormat = 0;
       break;
    case BIP:
       args.interleaveFormat = 1;
       break;
    case BIL:
       args.interleaveFormat = 2;
       break;
    }
    if (pArgs == NULL)
    {
       pArgs = &args;
    }
    bool success = true;
    switchOnComplexEncoding(pDesc->getDataType(), copySubcube, pData, pRaster,
       pArgs->rowStart, pArgs->rowEnd,
       pArgs->columnStart, pArgs->columnEnd,
       pArgs->bandStart, pArgs->bandEnd, true, success);
    if (!success)
    {
       setLastError(SIMPLE_OTHER_FAILURE);
       return 1;
    }
    setLastError(SIMPLE_NO_ERROR);
    return 0;
 }
开发者ID:,项目名称:,代码行数:52,代码来源:

示例2: draw

void PseudocolorLayerImp::draw()
{
   RasterElement* pRasterElement = dynamic_cast<RasterElement*>(getDataElement());
   if (pRasterElement != NULL)
   {
      if (canRenderAsImage())
      {
         generateImage();
         VERIFYNRV(mpImage != NULL);

         mpImage->draw(GL_NEAREST);
      }
      else
      {
         DataAccessor accessor(NULL, NULL);
         bool usingRawData = false;

         int columns = 0;
         int rows = 0;
         EncodingType eType;
         void* pData = NULL;

         const RasterDataDescriptor* pDescriptor =
            dynamic_cast<const RasterDataDescriptor*>(pRasterElement->getDataDescriptor());
         if (pDescriptor != NULL)
         {
            columns = static_cast<int>(pDescriptor->getColumnCount());
            rows = static_cast<int>(pDescriptor->getRowCount());
            eType = pDescriptor->getDataType();
         }

         // There is an optimization when the full scene can be processed at once.
         // Check for if it can be done
         if (pDescriptor->getBandCount() == 1 || pDescriptor->getInterleaveFormat() == BSQ)
         {
            usingRawData = true;
            pData = pRasterElement->getRawData();
         }
         if (pData == NULL)
         {
            FactoryResource<DataRequest> pRequest;
            pRequest->setInterleaveFormat(BSQ);
            accessor = pRasterElement->getDataAccessor(pRequest.release());
         }

         SymbolType eSymbol = getSymbol();

         int visStartColumn = 0;
         int visEndColumn = columns - 1;
         int visStartRow = 0;
         int visEndRow = rows - 1;
         DrawUtil::restrictToViewport(visStartColumn, visStartRow, visEndColumn, visEndRow);

         QMap<int, PseudocolorClass*>::Iterator iter = mClasses.begin();
         while (iter != mClasses.end())
         {
            PseudocolorClass* pClass = iter.value();
            if (pClass != NULL)
            {
               if (pClass->isDisplayed())
               {
                  QColor clrMarker = pClass->getColor();

                  if (usingRawData) // all data in memory
                  {
                     switchOnEncoding(eType, drawPseudocolorMarkers, pData, columns - 1, rows - 1, visStartColumn,
                        visStartRow, visEndColumn, visEndRow, eSymbol, clrMarker, pClass->getValue());
                  }
                  else
                  {
                     for (int row = 0; row < rows; ++row)
                     {
                        if (!accessor.isValid())
                        {
                           break;
                        }

                        pData = accessor->getColumn();
                        switchOnEncoding(eType, drawPseudocolorMarkers, pData, columns - 1, row, visStartColumn,
                           row, visEndColumn, row, eSymbol, clrMarker, pClass->getValue(), row);
                        accessor->nextRow();
                     }
                     accessor->toPixel(0, 0);
                  }
               }
            }

            iter++;
         }
      }
   }
}
开发者ID:Siddharthk,项目名称:opticks,代码行数:92,代码来源:PseudocolorLayerImp.cpp

示例3: createDataPointer

 void* createDataPointer(DataElement* pElement, DataPointerArgs* pArgs, int* pOwn)
 {
    RasterElement* pRaster = dynamic_cast<RasterElement*>(pElement);
    if (pRaster == NULL || pOwn == NULL)
    {
       setLastError(SIMPLE_BAD_PARAMS);
       return NULL;
    }
    void* pRawData = pRaster->getRawData();
    if (pArgs == NULL && pRawData != NULL)
    {
       *pOwn = 0;
       setLastError(SIMPLE_NO_ERROR);
       return pRawData;
    }
    *pOwn = 1;
    const RasterDataDescriptor* pDesc = static_cast<const RasterDataDescriptor*>(pRaster->getDataDescriptor());
    DataPointerArgs args = {
       0, pDesc->getRowCount() - 1,
       0, pDesc->getColumnCount() - 1,
       0, pDesc->getBandCount() - 1,
       0 };
    switch (pDesc->getInterleaveFormat())
    {
    case BSQ:
       args.interleaveFormat = 0;
       break;
    case BIP:
       args.interleaveFormat = 1;
       break;
    case BIL:
       args.interleaveFormat = 2;
       break;
    }
    if (pArgs == NULL)
    {
       pArgs = &args;
    }
    unsigned int rowCount = pArgs->rowEnd - pArgs->rowStart + 1;
    unsigned int columnCount = pArgs->columnEnd - pArgs->columnStart + 1;
    unsigned int bandCount = pArgs->bandEnd - pArgs->bandStart + 1;
    pRawData = new (std::nothrow) char[rowCount * columnCount * bandCount * pDesc->getBytesPerElement()];
    if (pRawData == NULL)
    {
       setLastError(SIMPLE_NO_MEM);
       return NULL;
    }
    bool success = true;
    switchOnComplexEncoding(pDesc->getDataType(), copySubcube, pRawData, pRaster,
       pArgs->rowStart, pArgs->rowEnd,
       pArgs->columnStart, pArgs->columnEnd,
       pArgs->bandStart, pArgs->bandEnd, false, success);
    if (!success)
    {
       delete [] pRawData;
       setLastError(SIMPLE_OTHER_FAILURE);
       return NULL;
    }
    setLastError(SIMPLE_NO_ERROR);
    return pRawData;
 }
开发者ID:,项目名称:,代码行数:61,代码来源:

示例4: execute

bool NefImporter::execute(PlugInArgList* pInArgList, PlugInArgList* pOutArgList)
{
    
   if (pInArgList == NULL || pOutArgList == NULL)
   {
      return false;
   }
   //setting up mpRasterElement
   parseInputArgList(pInArgList);
   RasterElement* pRaster = getRasterElement();
   
   VERIFY(pRaster != NULL);
   RasterDataDescriptor *pDescriptor = dynamic_cast<RasterDataDescriptor*>(pRaster->getDataDescriptor());

   VERIFY(pDescriptor != NULL);
   FileDescriptor *pFileDescriptor = pDescriptor->getFileDescriptor();
   VERIFY(pFileDescriptor != NULL);

   //data accessor
   //RED
   DimensionDescriptor firstBand = pDescriptor->getActiveBand(0);
   FactoryResource<DataRequest> pRequest;
   pRequest->setInterleaveFormat(BSQ);
   pRequest->setBands(firstBand, firstBand);
   pRequest->setWritable(true);
   DataAccessor firstBandDa = pRaster->getDataAccessor(pRequest.release());

   
   //GREEN
   DimensionDescriptor secondBand = pDescriptor->getActiveBand(1);
   FactoryResource<DataRequest> qRequest;
   qRequest->setInterleaveFormat(BSQ);
   qRequest->setBands(secondBand, secondBand);
   qRequest->setWritable(true);
   DataAccessor secondBandDa = pRaster->getDataAccessor(qRequest.release());

   //BLUE
   DimensionDescriptor thirdBand = pDescriptor->getActiveBand(2);
   FactoryResource<DataRequest> rRequest;
   rRequest->setInterleaveFormat(BSQ);
   rRequest->setBands(thirdBand, thirdBand);
   rRequest->setWritable(true);
   DataAccessor thirdBandDa = pRaster->getDataAccessor(rRequest.release());

   

   std::string filename = pRaster->getFilename();
   Progress *pProgress = getProgress();
   
   FactoryResource<Filename> pFilename;
   pFilename->setFullPathAndName(filename);

   LibRaw RawProcessor;
   putenv ((char*)"TZ=UTC"); 

	#define P1  RawProcessor.imgdata.idata
#define S   RawProcessor.imgdata.sizes
#define C   RawProcessor.imgdata.color
#define T   RawProcessor.imgdata.thumbnail
#define P2  RawProcessor.imgdata.other
#define OUT RawProcessor.imgdata.params

   const char *fname=filename.c_str();
    RawProcessor.open_file(fname);

	// Let us unpack the image
        if (RawProcessor.unpack() != LIBRAW_SUCCESS)
   {
      return false;
   }
    
    /*
	unsigned int *r=NULL;
	unsigned int *g=NULL;
	unsigned int *b=NULL;
	unsigned int *h=NULL;
	*/
    unsigned int *zero=0;
	int row=0,col=0,r=0,c=0;
	
		   
		   /*
		   r=(unsigned int*)(&RawProcessor.imgdata.image[i][0]);
           g=(unsigned int*)(&RawProcessor.imgdata.image[i][1]);
           b=(unsigned int*)(&RawProcessor.imgdata.image[i][2]);
           h=(unsigned int*)(&RawProcessor.imgdata.image[i][3]);
		   */
		   //secondBandDa->toPixel(row,col);
		   //thirdBandDa->toPixel(row,col);

		   
		unsigned short *pData=reinterpret_cast<unsigned short*>(pRaster->getRawData());
		if (pData == NULL)
		{
      return NULL;
		}

		memcpy(pData, RawProcessor.imgdata.rawdata.raw_image, sizeof(unsigned short) * RawProcessor.imgdata.sizes.raw_height * RawProcessor.imgdata.sizes.raw_width);


//.........这里部分代码省略.........
开发者ID:pratikone,项目名称:gsoc2011-opticks,代码行数:101,代码来源:NefImporter.cpp


注:本文中的RasterElement::getRawData方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。