本文整理汇总了C++中CPL_LSBPTR32函数的典型用法代码示例。如果您正苦于以下问题:C++ CPL_LSBPTR32函数的具体用法?C++ CPL_LSBPTR32怎么用?C++ CPL_LSBPTR32使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CPL_LSBPTR32函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: VSIMalloc3
int HF2Dataset::LoadBlockMap()
{
if (bHasLoaderBlockMap)
return panBlockOffset != NULL;
bHasLoaderBlockMap = TRUE;
const int nXBlocks = (nRasterXSize + nTileSize - 1) / nTileSize;
const int nYBlocks = (nRasterYSize + nTileSize - 1) / nTileSize;
panBlockOffset = (vsi_l_offset*) VSIMalloc3(sizeof(vsi_l_offset), nXBlocks, nYBlocks);
if (panBlockOffset == NULL)
{
return FALSE;
}
for(int j = 0; j < nYBlocks; j++)
{
for(int i = 0; i < nXBlocks; i++)
{
vsi_l_offset nOff = VSIFTellL(fp);
panBlockOffset[(nYBlocks - 1 - j) * nXBlocks + i] = nOff;
//VSIFSeekL(fp, 4 + 4, SEEK_CUR);
float fScale, fOff;
VSIFReadL(&fScale, 4, 1, fp);
VSIFReadL(&fOff, 4, 1, fp);
CPL_LSBPTR32(&fScale);
CPL_LSBPTR32(&fOff);
//printf("fScale = %f, fOff = %f\n", fScale, fOff);
const int nCols = MIN(nTileSize, nRasterXSize - nTileSize *i);
const int nLines = MIN(nTileSize, nRasterYSize - nTileSize *j);
for(int k = 0; k < nLines; k++)
{
GByte nWordSize;
if( VSIFReadL(&nWordSize, 1, 1, fp) != 1 )
{
CPLError(CE_Failure, CPLE_FileIO, "File too short");
VSIFree(panBlockOffset);
panBlockOffset = NULL;
return FALSE;
}
//printf("nWordSize=%d\n", nWordSize);
if (nWordSize == 1 || nWordSize == 2 || nWordSize == 4)
VSIFSeekL(fp, static_cast<vsi_l_offset>(4 + nWordSize * (nCols - 1)), SEEK_CUR);
else
{
CPLError(CE_Failure, CPLE_AppDefined,
"Got unexpected byte depth (%d) for block (%d, %d) line %d",
(int)nWordSize, i, j, k);
VSIFree(panBlockOffset);
panBlockOffset = NULL;
return FALSE;
}
}
}
}
return TRUE;
}
示例2: fprintf
void TABRawBinBlock::Dump(FILE *fpOut /*=NULL*/)
{
if (fpOut == NULL)
fpOut = stdout;
fprintf(fpOut, "----- TABRawBinBlock::Dump() -----\n");
if (m_pabyBuf == NULL)
{
fprintf(fpOut, "Block has not been initialized yet.");
}
else
{
if( m_nBlockType == TABMAP_GARB_BLOCK )
{
fprintf(fpOut,"Garbage Block (type %d) at offset %d.\n",
m_nBlockType, m_nFileOffset);
int nNextGarbageBlock = 0;
memcpy(&nNextGarbageBlock, m_pabyBuf + 2, 4);
CPL_LSBPTR32(&nNextGarbageBlock);
fprintf(fpOut," m_nNextGarbageBlock = %d\n", nNextGarbageBlock);
}
else
{
fprintf(fpOut, "Block (type %d) size=%d bytes at offset %d in file.\n",
m_nBlockType, m_nBlockSize, m_nFileOffset);
fprintf(fpOut, "Current pointer at byte %d\n", m_nCurPos);
}
}
fflush(fpOut);
}
示例3: readInt
static int readInt(VSILFILE* fp)
{
int val;
VSIFReadL( &val, 1, 4, fp );
CPL_LSBPTR32(&val);
return val;
}
示例4: readFloat
static float readFloat(VSILFILE* fp)
{
float val;
VSIFReadL( &val, 1, 4, fp );
CPL_LSBPTR32(&val);
return val;
}
示例5: CPLError
CPLErr GSBGRasterBand::IReadBlock( int nBlockXOff, int nBlockYOff,
void * pImage )
{
if( nBlockYOff < 0 || nBlockYOff > nRasterYSize - 1 || nBlockXOff != 0 )
return CE_Failure;
GSBGDataset *poGDS = reinterpret_cast<GSBGDataset *>(poDS);
if( VSIFSeekL( poGDS->fp,
GSBGDataset::nHEADER_SIZE +
4 * static_cast<vsi_l_offset>(nRasterXSize) * (nRasterYSize - nBlockYOff - 1),
SEEK_SET ) != 0 )
{
CPLError( CE_Failure, CPLE_FileIO,
"Unable to seek to beginning of grid row.\n" );
return CE_Failure;
}
if( VSIFReadL( pImage, sizeof(float), nBlockXSize,
poGDS->fp ) != static_cast<unsigned>(nBlockXSize) )
{
CPLError( CE_Failure, CPLE_FileIO,
"Unable to read block from grid file.\n" );
return CE_Failure;
}
#ifdef CPL_MSB
float *pfImage = (float *)pImage;
for( int iPixel=0; iPixel<nBlockXSize; iPixel++ ) {
CPL_LSBPTR32( pfImage+iPixel );
}
#endif
return CE_None;
}
示例6: CPL_LSBPTR32
int TABRawBinBlock::WriteFloat(float fValue)
{
#ifdef CPL_MSB
CPL_LSBPTR32(&fValue);
#endif
return WriteBytes(4, (GByte*)&fValue);
}
示例7: ReadInt
static int ReadInt(VSILFILE* fp, int bOzi3 = FALSE, int nKeyInit = 0)
{
int nVal;
VSIFReadL(&nVal, 1, 4, fp);
if (bOzi3) OZIDecrypt(&nVal, 4, (GByte) nKeyInit);
CPL_LSBPTR32(&nVal);
return nVal;
}
示例8: CPL_LSBPTR32
int TABRawBinBlock::WriteFloat(float fValue)
{
#ifdef CPL_MSB
CPL_LSBPTR32(&fValue);
#endif
return WriteBytes(4, reinterpret_cast<GByte*>(&fValue));
}
示例9: CPL_LSBPTR32
bool TerragenDataset::get(float& value)
{
if(1 == VSIFReadL(&value, sizeof(value), 1, m_fp))
{
CPL_LSBPTR32(&value);
return true;
}
return false;
}
示例10: ReadBytes
float TABRawBinBlock::ReadFloat()
{
float fValue = 0.0f;
ReadBytes(4, (GByte*)(&fValue));
#ifdef CPL_MSB
CPL_LSBPTR32(&fValue);
#endif
return fValue;
}
示例11: ReadBytes
float TABRawBinBlock::ReadFloat()
{
float fValue = 0.0f;
ReadBytes(4, reinterpret_cast<GByte*>(&fValue));
#ifdef CPL_MSB
CPL_LSBPTR32(&fValue);
#endif
return fValue;
}
示例12: Binary2WkbGeom
OGRErr Binary2WkbGeom(unsigned char *p, WKBGeometry* geom, int nBytes)
{
GUInt32 i;
if( nBytes < 28 )
{
CPLError(CE_Failure, CPLE_AppDefined,
"WalkGeom binary size (%d) too small",
nBytes);
return OGRERR_FAILURE;
}
memcpy(&geom->wkbType, p, 4);
CPL_LSBPTR32( &geom->wkbType );
switch(geom->wkbType)
{
case wkbPoint:
case wkbLineString:
case wkbPolygon:
case wkbMultiPoint:
case wkbMultiLineString:
case wkbMultiPolygon:
return Binary2WkbMGeom(p, geom, nBytes);
case wkbGeometryCollection:
p += 4;
memcpy(&geom->mgeometries.num_wkbSGeometries, p, 4);
CPL_LSBPTR32( &geom->mgeometries.num_wkbSGeometries );
p += 4;
geom->mgeometries.WKBGeometries =
new WKBSimpleGeometry[geom->mgeometries.num_wkbSGeometries];
for(i = 0; i < geom->mgeometries.num_wkbSGeometries; i++)
Binary2WkbMGeom(p, (WKBGeometry*)(&geom->mgeometries.WKBGeometries[i]), nBytes-8);
break;
default:
geom->wkbType=wkbUnknown;
return OGRERR_FAILURE;
}
return OGRERR_NONE;
}
示例13: OGRSpatialReference
OGRIdrisiLayer::OGRIdrisiLayer( const char* pszFilename,
const char* pszLayerName,
VSILFILE* fp,
OGRwkbGeometryType eGeomType,
const char* pszWTKString )
{
this->fp = fp;
this->eGeomType = eGeomType;
nNextFID = 1;
bEOF = FALSE;
fpAVL = NULL;
if (pszWTKString)
{
poSRS = new OGRSpatialReference();
char* pszTmp = (char*)pszWTKString;
poSRS->importFromWkt(&pszTmp);
}
else
poSRS = NULL;
poFeatureDefn = new OGRFeatureDefn( pszLayerName );
SetDescription( poFeatureDefn->GetName() );
poFeatureDefn->Reference();
poFeatureDefn->GetGeomFieldDefn(0)->SetSpatialRef(poSRS);
poFeatureDefn->SetGeomType( eGeomType );
OGRFieldDefn oFieldDefn("id", OFTReal);
poFeatureDefn->AddFieldDefn( &oFieldDefn );
bExtentValid = FALSE;
dfMinX = dfMinY = dfMaxX = dfMaxY = 0.0;
VSIFSeekL( fp, 1, SEEK_SET );
if (VSIFReadL( &nTotalFeatures, sizeof(unsigned int), 1, fp ) != 1)
nTotalFeatures = 0;
CPL_LSBPTR32(&nTotalFeatures);
if (nTotalFeatures != 0)
{
if (!Detect_AVL_ADC(pszFilename))
{
if( fpAVL != NULL )
VSIFCloseL( fpAVL );
fpAVL = NULL;
}
}
ResetReading();
}
示例14: CPL_LSBPTR32
bool LevellerDataset::get(int& n, VSILFILE* fp, const char* psz)
{
vsi_l_offset offset;
size_t len;
if(this->locate_data(offset, len, fp, psz))
{
GInt32 value;
if(1 == VSIFReadL(&value, sizeof(value), 1, fp))
{
CPL_LSBPTR32(&value);
n = (int)value;
return true;
}
}
return false;
}
示例15: if
CPLErr BTRasterBand::SetUnitType(const char* psz)
{
BTDataset& ds = *(BTDataset*)poDS;
if(EQUAL(psz, "m"))
ds.m_fVscale = 1.0f;
else if(EQUAL(psz, "ft"))
ds.m_fVscale = 0.3048f;
else if(EQUAL(psz, "sft"))
ds.m_fVscale = 1200.0f / 3937.0f;
else
return CE_Failure;
float fScale = ds.m_fVscale;
CPL_LSBPTR32(&fScale);
// Update header's elevation scale field.
memcpy(ds.abyHeader + 62, &fScale, sizeof(fScale));
ds.bHeaderModified = TRUE;
return CE_None;
}