Changeset 642:562c41493a79


Ignore:
Timestamp:
05/13/08 22:05:04 (2 years ago)
Author:
Frank Warmerdam <warmerdam@…>
Branch:
default
Convert:
svn:1766ff46-f334-0410-ab20-d63176f87757/trunk@709
Message:

some rework to ReadGeoreference?() ReadVLR() and SetData?() method

Location:
src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/detail/reader10.cpp

    r641 r642  
    225225        read_n(vlrh, m_ifs, sizeof(VLRHeader)); 
    226226 
    227         int16_t count = vlrh.recordLengthAfterHeader / sizeof(uint8_t); 
    228         uint8_t *rawdata = new uint8_t[count]; 
    229           
    230         read_n(rawdata, m_ifs, vlrh.recordLengthAfterHeader); 
     227        int16_t count = vlrh.recordLengthAfterHeader; 
    231228          
    232229        std::vector<uint8_t> data; 
    233         for (int j=0; j< count; ++j) { 
    234             data.push_back(rawdata[j]); 
    235         } 
     230        data.resize( count ); 
     231 
     232        unsigned char *ptr = &(data[0]); // we need a real variable because 
     233                                         // read_n() is f'ing evil magic.  
     234        read_n(ptr, m_ifs, count ); 
    236235          
    237236        LASVLR vlr; 
     
    242241        vlr.SetRecordId(vlrh.recordId); 
    243242        vlr.SetData(data); 
    244         delete[] rawdata; 
     243 
    245244        header.AddVLR(vlr); 
    246245    } 
     
    278277 
    279278            printf("count for int16_t: %d\n", count); 
    280             uint16_t *geokeys = new uint16_t[count]; 
    281             for (int j = 0; j< count; ++j) { 
    282                 geokeys[j] = (uint16_t)data[j]; 
    283             } 
    284             ST_SetKey( st, record.GetRecordId(), count, STT_SHORT, geokeys ); 
    285             delete[] geokeys; 
    286              
     279 
     280            ST_SetKey( st, record.GetRecordId(), count, STT_SHORT,  
     281                       &(data[0]) ); 
    287282        } 
    288283 
     
    294289            printf("count for int: %d\n", count); 
    295290 
    296             double *geokeys = new double[count]; 
    297             for (int j = 0; j< count; ++j) { 
    298                 geokeys[j] = (double)data[j]; 
    299             } 
    300             ST_SetKey( st, record.GetRecordId(), count, STT_DOUBLE, geokeys ); 
    301             delete[] geokeys; 
    302  
     291            ST_SetKey( st, record.GetRecordId(), count, STT_DOUBLE,  
     292                       &(data[0]) ); 
    303293        }         
    304294 
     
    310300             
    311301            printf("count for string: %d data.size(): %d", count, (int)data.size()); 
    312  
    313             char *geokeys = new char[count]; 
    314             for (int j = 0; j< count; ++j) { 
    315                 geokeys[j] = (uint8_t)data[j]; 
    316             } 
    317 //            geokeys[count] = '\0'; 
    318             printf("Geokeys: '%s'", geokeys); 
    319             ST_SetKey( st, record.GetRecordId(), count, STT_ASCII, geokeys ); 
    320             delete[] geokeys; 
    321  
    322  
    323         }         
    324         // else if (uid == record.GetUserId() && record.GetRecordId()) 
    325         // { 
    326         //     int count = vlrh.recordLengthAfterHeader / sizeof(double); 
    327         //     double *values = new double[count]; 
    328         //     read_n(values, m_ifs, vlrh.recordLengthAfterHeader); 
    329         //     ST_SetKey( st, vlrh.recordId, count, STT_DOUBLE, values ); 
    330         //     delete[] values; 
    331         // } 
    332         // else if (uid == record.GetUserId() && record.GetRecordId()) 
    333         // { 
    334         //     uint8_t count = vlrh.recordLengthAfterHeader / sizeof(uint8_t); 
    335         //     char *values = new char[count]; 
    336         //     read_n(values, m_ifs, vlrh.recordLengthAfterHeader); 
    337         //     ST_SetKey( st, vlrh.recordId, count, STT_ASCII, values ); 
    338         //     delete[] values; 
    339         // } 
    340      //   else 
    341         // { 
    342         //     std::istream::pos_type const pos = m_ifs.tellg(); 
    343         //     m_ifs.seekg(pos + std::istream::pos_type(vlrh.recordLengthAfterHeader)); 
    344         // } 
     302            ST_SetKey( st, record.GetRecordId(), count, STT_ASCII,  
     303                       &(data[0]) ); 
     304        } 
    345305    } 
    346306 
    347307    GTIF *gtif = GTIFNewSimpleTags( st ); 
     308 
     309    //GTIFPrint(gtif,0,0); 
     310 
    348311    GTIFDefn defn; 
    349312    if (GTIFGetDefn(gtif, &defn))  
  • src/lasrecordheader.cpp

    r641 r642  
    195195void LASVLR::SetData(const std::vector<uint8_t>& v)  
    196196{ 
    197     std::vector<uint8_t> m_data(v); 
     197    m_data = v; 
    198198} 
    199199 
Note: See TracChangeset for help on using the changeset viewer.