⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 esrishape.cpp

📁 最新osg包
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        {            if( readVal<Double>(fd, mArray[i], LittleEndian ) == false )                return false;        }    }    return true;}PolygonM::PolygonM():     ShapeObject(ShapeTypePolygonM),     numParts(0),     numPoints(0),     parts(0L),     points(0L) ,    mArray(0L){}PolygonM::PolygonM(const PolygonM &p):     ShapeObject(ShapeTypePolygonM),     numParts(p.numParts),     numPoints(p.numPoints),     parts(0L),     points(0L) ,    mArray(0L){    parts = new Integer[numParts];    Integer i;    for( i = 0; i < numParts; i++ )        parts[i] = p.parts[i];    points = new Point[numPoints];    mArray = new Double[numPoints];    for( i = 0; i < numPoints; i++ )    {        points[i] = p.points[i];        mArray[i] = p.mArray[i];    }}PolygonM::~PolygonM(){    delete[] parts;    delete[] points;    delete[] mArray;};bool PolygonM::read( int fd ){    RecordHeader rh;    if( rh.read(fd) == false )        return false;    SAFE_DELETE_ARRAY( parts );    SAFE_DELETE_ARRAY( points );    SAFE_DELETE_ARRAY( mArray );    Integer shapeType;    if( readVal<Integer>(fd, shapeType, LittleEndian ) == false )        return false;    if( shapeType != ShapeTypePolygonM )        return false;    if( bbox.read(fd) == false )        return false;    if( readVal<Integer>(fd, numParts, LittleEndian ) == false )        return false;    if( readVal<Integer>(fd, numPoints, LittleEndian ) == false )        return false;    parts  = new Integer[numParts];    int i;    for( i = 0; i < numParts; i++ )    {        if( readVal<Integer>(fd, parts[i], LittleEndian ) == false )            return false;    }    points = new struct Point[numPoints];    for( i = 0; i < numPoints; i++ )    {        if( points[i].read(fd ) == false )            return false;    }    int X = 44 + (4 * numParts);    int Y = X + (16 * numPoints);    if( rh.contentLength > Y )    {        if( mRange.read(fd) == false )            return false;        mArray = new Double[numPoints];        for( i = 0; i < numPoints; i++ )        {            if( readVal<Double>(fd, mArray[i], LittleEndian ) == false )                return false;        }    }    return true;}//////////////////////////////////////////////////////////////////////PointZ::PointZ():     ShapeObject(ShapeTypePointZ),      x(0.0),    y(0.0),     z(0.0),    m(0.0) {}PointZ::PointZ(const PointZ &p):     ShapeObject(ShapeTypePointZ),     x(p.x),     y(p.y),     z(p.z),    m(p.m) {}PointZ::~PointZ() {}bool PointZ::read( int fd ){    RecordHeader rh;    if( rh.read(fd) == false )        return false;    Integer shapeType;    if( readVal<Integer>(fd, shapeType, LittleEndian ) == false )        return false;    if( shapeType != ShapeTypePointZ )        return false;    if( readVal<Double>( fd, x, LittleEndian ) == false )        return false;    if( readVal<Double>( fd, y, LittleEndian ) == false )        return false;    if( readVal<Double>( fd, z, LittleEndian ) == false )        return false;    // Sometimes, M field is not supplied    if( rh.contentLength >= 18 )        if( readVal<Double>( fd, m, LittleEndian ) == false )            return false;    return true;}void PointZ::print(){    printf( "    %G %G %G (%G)\n", x, y, z, m );}MultiPointZ::MultiPointZ():     ShapeObject(ShapeTypeMultiPointZ),     numPoints(0),     points(0L),    zArray(0L),    mArray(0L)    {}MultiPointZ::MultiPointZ( const struct MultiPointZ &mpointm ):     ShapeObject(ShapeTypeMultiPointZ),     bbox(mpointm.bbox),    numPoints(mpointm.numPoints),    zRange(mpointm.zRange),    mRange(mpointm.mRange){    points = new Point[numPoints];    zArray = new Double[numPoints];    mArray = new Double[numPoints];    for( int i = 0; i < numPoints; i++ )    {        points[i] = mpointm.points[i];        zArray[i] = mpointm.zArray[i];        mArray[i] = mpointm.mArray[i];    }}MultiPointZ::~MultiPointZ(){    delete [] points;    delete [] zArray;    delete [] mArray;}bool MultiPointZ::read( int fd ){    RecordHeader rh;    if( rh.read(fd) == false )        return false;    SAFE_DELETE_ARRAY( points );    SAFE_DELETE_ARRAY( zArray );    SAFE_DELETE_ARRAY( mArray );    Integer shapeType;    if( readVal<Integer>(fd, shapeType, LittleEndian ) == false )        return false;    if( shapeType != ShapeTypeMultiPointZ )        return false;    if( bbox.read(fd) == false )        return false;    if( readVal<Integer>(fd, numPoints, LittleEndian ) == false )        return false;        points = new struct Point[numPoints];    Integer i;    for( i = 0; i < numPoints; i++ )    {        if( points[i].read(fd) == false )            return false;    }    if( zRange.read(fd) == false )        return false;    zArray = new Double[numPoints];    for( i = 0; i < numPoints; i++ )    {        if( readVal<Double>(fd, zArray[i], LittleEndian) == false )            return false;    }    int X = 40 + (16*numPoints);    int Y = X + 16 + (8*numPoints);    if( rh.contentLength > Y )    {        if( mRange.read(fd) == false )            return false;        mArray = new Double[numPoints];        for( i = 0; i < numPoints; i++ )        {            if( readVal<Double>(fd, mArray[i], LittleEndian ) == false )                return false;        }    }    return true;}void MultiPointZ::print(){    printf( "Point - numPoints: %d\n", numPoints );    for( int i= 0; i < numPoints; i++ )        points[i].print();}PolyLineZ::PolyLineZ():     ShapeObject(ShapeTypePolyLineZ),     numParts(0),     numPoints(0),     parts(0L),     points(0L),    zArray(0L) ,    mArray(0L) {}PolyLineZ::PolyLineZ(const PolyLineZ &p):     ShapeObject(ShapeTypePolyLineZ),     numParts(p.numParts),     numPoints(p.numPoints),     parts(0L),     points(0L),    zArray(0L) ,    mArray(0L) {    parts = new Integer[numParts];    Integer i;    for( i = 0; i < numParts; i++ )        parts[i] = p.parts[i];    points = new Point[numPoints];    zArray = new Double[numPoints];    for( i = 0; i < numPoints; i++ )    {        points[i] = p.points[i];        zArray[i] = p.zArray[i];    }    // Sometimes, M Array is not present on the file    if( p.mArray != NULL )    {        mArray = new Double[numPoints];        for( i = 0; i < numPoints; i++ )            mArray[i] = p.mArray[i];    }}PolyLineZ::~PolyLineZ(){    delete [] parts;    delete [] points;    delete [] zArray;    delete [] mArray;}bool PolyLineZ::read( int fd ){    RecordHeader rh;    if( rh.read(fd) == false )        return false;    SAFE_DELETE_ARRAY( parts );    SAFE_DELETE_ARRAY( points );    SAFE_DELETE_ARRAY( zArray );    SAFE_DELETE_ARRAY( mArray );    Integer shapeType;    if( readVal<Integer>(fd, shapeType, LittleEndian ) == false )        return false;    if( shapeType != ShapeTypePolyLineZ )        return false;    if( bbox.read(fd) == false )        return false;    if( readVal<Integer>(fd, numParts, LittleEndian ) == false )        return false;    if( readVal<Integer>(fd, numPoints, LittleEndian ) == false )        return false;    parts  = new Integer[numParts];    int i;    for( i = 0; i < numParts; i++ )    {        if( readVal<Integer>(fd, parts[i], LittleEndian ) == false )            return false;    }    points = new struct Point[numPoints];    for( i = 0; i < numPoints; i++ )    {        if( points[i].read(fd ) == false )            return false;    }    zRange.read(fd);    zArray = new Double[numPoints];    for( i = 0; i < numPoints; i++ )    {        if( readVal<Double>(fd, zArray[i], LittleEndian ) == false )            return false;    }    int X = 44 + (4 * numParts);    int Y = X + (15 * numPoints);    int Z = Y + 16 + (8 * numPoints);    if( rh.contentLength != Z )    {         mRange.read(fd);        mArray = new Double[numPoints];        for( i = 0; i < numPoints; i++ )        {            if( readVal<Double>(fd, mArray[i], LittleEndian ) == false )                return false;        }    }    return true;}PolygonZ::PolygonZ():     ShapeObject(ShapeTypePolygonZ),     numParts(0),     numPoints(0),     parts(0L),     points(0L),    zArray(0L),    mArray(0L){}PolygonZ::PolygonZ(const PolygonZ &p):     ShapeObject(ShapeTypePolygonZ),     numParts(p.numParts),     numPoints(p.numPoints),     parts(0L),     points(0L) ,    mArray(0L){    parts = new Integer[numParts];    Integer i;    for( i = 0; i < numParts; i++ )        parts[i] = p.parts[i];    points = new Point[numPoints];    zArray = new Double[numPoints]; // jcm     mArray = new Double[numPoints];    for( i = 0; i < numPoints; i++ )    {        points[i] = p.points[i];        zArray[i] = p.zArray[i]; // jcm     // M-Array seems to be missing sometimes    if(p.mArray)             mArray[i] = p.mArray[i];    }}PolygonZ::~PolygonZ(){    delete [] parts;    delete [] points;    delete [] zArray;    delete [] mArray;}bool PolygonZ::read( int fd ){    RecordHeader rh;    if( rh.read(fd) == false )        return false;        SAFE_DELETE_ARRAY( parts );    SAFE_DELETE_ARRAY( points );    SAFE_DELETE_ARRAY( zArray );    SAFE_DELETE_ARRAY( mArray );    Integer shapeType;    if( readVal<Integer>(fd, shapeType, LittleEndian ) == false )        return false;    if( shapeType != ShapeTypePolygonZ )        return false;    if( bbox.read(fd) == false )        return false;    if( readVal<Integer>(fd, numParts, LittleEndian ) == false )        return false;    if( readVal<Integer>(fd, numPoints, LittleEndian ) == false )        return false;    parts  = new Integer[numParts];    int i;    for( i = 0; i < numParts; i++ )    {        if( readVal<Integer>(fd, parts[i], LittleEndian ) == false )            return false;    }    points = new struct Point[numPoints];    for( i = 0; i < numPoints; i++ )    {        if( points[i].read(fd ) == false )            return false;    }    if( zRange.read(fd) == false )        return false;    zArray = new Double[numPoints];    for( i = 0; i < numPoints; i++ )    {        if( readVal<Double>(fd, zArray[i], LittleEndian ) == false )            return false;    }    int  X = 44 + (4*numParts);    int  Y = X + (16*numPoints);    int  Z = Y + 16 + (8*numPoints);    if( rh.contentLength != Z )    {        if( mRange.read(fd) == false )            return false;        mArray = new Double[numPoints];        for( i = 0; i < numPoints; i++ )        {            if( readVal<Double>(fd, mArray[i], LittleEndian ) == false )                return false;        }    }    return true;}///////////////////////////////////////////////////////////////////////*struct MultiPatch{    Box             bbox;    Integer         numParts;    Integer         numPoints;    Integer         *parts;    Integer         *partTypes;    struct Point    *points;    Range           zRange;    Double          *zArray;    Range           mRange;    Double          *mArray;    MultiPatch();    MultiPatch( const MultiPatch &);    virtual ~MultiPatch();    bool read( fd );};*/MultiPatch::MultiPatch():    numParts(0),    numPoints(0),    parts(0L),    partTypes(0L),    points(0L),    zArray(0L),    mArray(0L){ }MultiPatch::MultiPatch( const MultiPatch &mp):    bbox(mp.bbox),    numParts(mp.numParts),    numPoints(mp.numPoints),    zRange(mp.zRange),    mRange(mp.mRange){    parts = new Integer[numParts];    partTypes = new Integer[numParts];    Integer i;    for( i = 0; i < numParts; i++ )    {        parts[i] = mp.parts[i];        partTypes[i] = mp.partTypes[i];    }    points = new Point[numPoints];    zArray = new Double[numPoints];    mArray = new Double[numPoints];    for( i = 0; i < numPoints; i++ )    {        points[i] = mp.points[i];        zArray[i] = mp.zArray[i];        if( mp.mArray != 0L )            mArray[i] = mp.mArray[i];    }}MultiPatch::~MultiPatch(){    delete [] parts;    delete [] partTypes;    delete [] points;    delete [] zArray;    delete [] mArray;}bool MultiPatch::read( int fd ){    RecordHeader rh;    if( rh.read(fd) == false )        return false;    SAFE_DELETE_ARRAY( parts );    SAFE_DELETE_ARRAY( partTypes );    SAFE_DELETE_ARRAY( points );    SAFE_DELETE_ARRAY( zArray );    SAFE_DELETE_ARRAY( mArray );    Integer shapeType;    if( readVal<Integer>(fd, shapeType, LittleEndian ) == false )        return false;    if( shapeType != ShapeTypeMultiPatch )        return false;    if( bbox.read(fd) == false )        return false;    if( readVal<Integer>(fd, numParts, LittleEndian ) == false )        return false;    if( readVal<Integer>(fd, numPoints, LittleEndian ) == false )        return false;    parts  = new Integer[numParts];    int i;    for( i = 0; i < numParts; i++ )    {        if( readVal<Integer>(fd, parts[i], LittleEndian ) == false )            return false;    }    partTypes = new Integer[numParts];    for( i = 0; i < numParts; i++ )    {        if( readVal<Integer>(fd, partTypes[i], LittleEndian ) == false )            return false;    }    points = new struct Point[numPoints];    for( i = 0; i < numPoints; i++ )    {        if( points[i].read(fd ) == false )            return false;    }    if( zRange.read(fd) == false )        return false;    zArray = new Double[numPoints];    for( i = 0; i < numPoints; i++ )    {        if( readVal<Double>(fd, zArray[i], LittleEndian ) == false )            return false;    }    int  W = 44 + (4*numParts);    int  X = W + (4 * numParts);    int  Y = X + (16 *numPoints);    int  Z = Y + 16 + (8 *numPoints);    if( rh.contentLength > Z )    {        if( mRange.read(fd) == false )            return false;        mArray = new Double[numPoints];        for( i = 0; i < numPoints; i++ )        {            if( readVal<Double>(fd, mArray[i], LittleEndian ) == false )                return false;        }    }    return true;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -