void IncomeDataThread::run() { //Receiving Record data from the server. //std::cout << "IDT_RUN" << std::endl; char buff[2048]; while (fd >= 0) { int temp1, readLen; read(fd, &temp1, 4); //memcpy(&temp1,buff,4); //std::cout << temp1 << std::endl; char fn[temp1 + 1]; read(fd, fn, temp1); fn[temp1] = '\0'; read(fd, &temp1, 4); //memcpy(&temp1,buff,4); emit recordHeader(temp1, QString::fromLatin1(fn)); int slideCount = temp1; for (int i = 0; i < slideCount; i++) { int animCount; int noteLen; read(fd, &animCount, 4); //memcpy(&animCount,buff,4); read(fd, ¬eLen, 4); if (noteLen != 0) { char note[noteLen + 1]; int offset = 0; int remain = noteLen; while (remain) { if (remain < 2048) readLen = read(fd, buff, remain); else readLen = read(fd, buff, 2048); memcpy(note + offset, buff, readLen); offset += readLen; remain -= readLen; } note[noteLen] = '\0'; emit slide(i, animCount, QString::fromLatin1(note)); } else emit slide(i, animCount, QString::fromLatin1('\0')); } emit received(); QDir dir; dir.rmpath("data/image/tempData"); dir.mkpath("data/image/tempData"); //dir.mkpath("app/native/assets/images/temp"); //dir.mkpath("images/tempData"); QString first("data/image/tempData/s"); //QString first("app/native/assets/images/temp/s"); QString last(".png"); for (int i = 0; i < slideCount; i++) { int fileLen; read(fd, &fileLen, 4); std::cout << fileLen << std::endl; //char bufk[fileLen]; char *bufk = (char*)malloc(fileLen); int remain = fileLen; int offset = 0; /*readLen = read(fd,bufk,fileLen); std::cout<<readLen<<std::endl; return;*/ while (remain) { if (remain < 2048) readLen = read(fd, buff, remain); else readLen = read(fd, buff, 2048); memcpy(bufk + offset, buff, readLen); offset += readLen; remain -= readLen; std::cout<<remain<<std::endl; //usleep(1); } QByteArray ba(bufk, fileLen); QImage file = QImage::fromData(ba, "PNG"); QString no; no.setNum(i + 1); file.save(first + no + last, "PNG"); free(bufk); //usleep(700000); //ba.clear(); } /*long fileLen; read(fd, &fileLen, 8); std::cout << fileLen << std::endl; char bufk[(int) fileLen]; int remain = (int) fileLen; int offset = 0; int count = 0; while (remain) { if (remain < 2048) readLen = read(fd, buff, remain); else readLen = read(fd, buff, 2048); memcpy(bufk + offset, buff, readLen); offset += readLen; count += readLen; remain -= readLen; }*/ //std::cout << count << std::endl; //QDir dir; //std::cout<<dir.currentPath().toStdString()<<std::endl; //dir.mkpath("data/image/tempData"); /*QFile textfile("data/files/text/newfile.txt"); textfile.open(QIODevice::WriteOnly | QIODevice::Text); QTextStream out(&textfile); out << "This is a text file\n"; textfile.close();*/ //QFile file("data/image/tempData/s2.png"); //QByteArray ba(bufk, (int) fileLen); //QImage file = QImage::fromData(ba, "PNG"); //file.save("data/image/tempData/s2.png", "PNG"); //file.open(QIODevice::WriteOnly); //QDataStream out(&file); //out.writeBytes(bufk,(int)fileLen); //out<<bufk; //file.save(QIODevice::WriteOnly,"PNG"); /*ofstream outfile; outfile.open("data/images/tempData/s1.png"); outfile.write(bufk,(int)fileLen); outfile.close();*/ /////////Read PNG file //Not yet implement.*/ } }
///////// // SHPFile SHPFile::SHPFile(InStream &src) { mHeader = 0; Record *record = 0; try { mHeader = new FileHeader(src); while(!src.EndOfData()) { RecordHeader recordHeader(src); switch(recordHeader.mShapeType) { case ShapeTypeNull: assert(!"not implemented yet"); break; case ShapeTypePoint: assert(!"not implemented yet"); break; case ShapeTypePolyline: assert(!"not implemented yet"); break; case ShapeTypePolygon: record = new PolygonRecord(src); break; case ShapeTypeMultiPoint: assert(!"not implemented yet"); break; case ShapeTypePointZ: assert(!"not implemented yet"); break; case ShapeTypePolyLineZ: assert(!"not implemented yet"); break; case ShapeTypePolygonZ: assert(!"not implemented yet"); break; case ShapeTypeMultiPointZ: assert(!"not implemented yet"); break; case ShapeTypePointM: assert(!"not implemented yet"); break; case ShapeTypePolyLineM: assert(!"not implemented yet"); break; case ShapeTypePolygonM: assert(!"not implemented yet"); break; case ShapeTypeMultiPointM: assert(!"not implemented yet"); break; case ShapeTypeMultiPatch: assert(!"not implemented yet"); break; default: assert(!"invalid shape type"); break; } mRecords.push_back(record); record = 0; } } catch(...) { delete mHeader; for(Record *rec : mRecords) rec->Unref(); if(record) record->Unref(); throw; } }