void ShellContent::output ( std::string out ) { TextSpan b_end (_output->end(), _output->end()); _output->insertSpan( out, b_end ); }
int compare_filenames(const std::string& a, const std::string& b) { utf8_const_iterator a_begin(a.begin()), a_end(a.end()); utf8_const_iterator b_begin(b.begin()), b_end(b.end()); utf8_const_iterator a_it(a_begin); utf8_const_iterator b_it(b_begin); for (; a_it != a_end && b_it != b_end; ) { int a_chr = *a_it; int b_chr = *b_it; if ((a_chr >= '0') && (a_chr <= '9') && (b_chr >= '0') && (b_chr <= '9')) { utf8_const_iterator a_it2 = a_it; utf8_const_iterator b_it2 = b_it; while (a_it2 != a_end && (*a_it2 >= '0') && (*a_it2 <= '9')) ++a_it2; while (b_it2 != b_end && (*b_it2 >= '0') && (*b_it2 <= '9')) ++b_it2; int a_num = std::strtol(std::string(a_it, a_it2).c_str(), NULL, 10); int b_num = std::strtol(std::string(b_it, b_it2).c_str(), NULL, 10); if (a_num != b_num) return a_num - b_num < 0 ? -1: 1; a_it = a_it2; b_it = b_it2; } else if (is_path_separator(a_chr) && is_path_separator(b_chr)) { ++a_it; ++b_it; } else { a_chr = std::tolower(a_chr); b_chr = std::tolower(b_chr); if (a_chr != b_chr) return a_chr - b_chr < 0 ? -1: 1; ++a_it; ++b_it; } } if (a_it == a_end && b_it == b_end) return 0; else if (a_it == a_end) return -1; else return 1; }
char * ovOverlap::toString(char *str, ovOverlapDisplayType type, bool newLine) { switch (type) { case ovOverlapAsHangs: sprintf(str, "%10"F_U32P" %10"F_U32P" %c %6"F_S32P" %6"F_U32P" %6"F_S32P" %7.6f%s%s", a_iid, b_iid, flipped() ? 'I' : 'N', a_hang(), span(), b_hang(), erate(), (overlapIsDovetail()) ? "" : " PARTIAL", (newLine) ? "\n" : ""); break; case ovOverlapAsCoords: sprintf(str, "%10"F_U32P" %10"F_U32P" %c %6"F_U32P" %6"F_U32P" %6"F_U32P" %6"F_U32P" %6"F_U32P" %7.6f%s", a_iid, b_iid, flipped() ? 'I' : 'N', span(), a_bgn(), a_end(), b_bgn(), b_end(), erate(), (newLine) ? "\n" : ""); break; case ovOverlapAsRaw: sprintf(str, "%10"F_U32P" %10"F_U32P" %c %6"F_U32P" %6"F_U64P" %6"F_U64P" %6"F_U64P" %6"F_U64P" %7.6f %s %s %s%s", a_iid, b_iid, flipped() ? 'I' : 'N', span(), dat.ovl.ahg5, dat.ovl.ahg3, dat.ovl.bhg5, dat.ovl.bhg3, erate(), dat.ovl.forOBT ? "OBT" : " ", dat.ovl.forDUP ? "DUP" : " ", dat.ovl.forUTG ? "UTG" : " ", (newLine) ? "\n" : ""); break; case ovOverlapAsCompat: sprintf(str, "%8"F_U32P" %8"F_U32P" %c %6d %6d %5.2f %5.2f%s", a_iid, b_iid, dat.ovl.flipped ? 'I' : 'N', a_hang(), b_hang(), erate() * 100.0, erate() * 100.0, (newLine) ? "\n" : ""); break; case ovOverlapAsPaf: // miniasm/map expects entries to be separated by tabs // no padding spaces on names we don't confuse read identifiers sprintf(str, "%"F_U32P"\t%6"F_U32P"\t%6"F_U32P"\t%6"F_U32P"\t%c\t%"F_U32P"\t%6"F_U32P"\t%6"F_U32P"\t%6"F_U32P"\t%6"F_U32P"\t%6"F_U32P"\t%6"F_U32P" %s", a_iid, (g->gkStore_getRead(a_iid)->gkRead_sequenceLength()), a_bgn(), a_end(), flipped() ? '-' : '+', b_iid, (g->gkStore_getRead(b_iid)->gkRead_sequenceLength()), flipped() ? b_end() : b_bgn(), flipped() ? b_bgn() : b_end(), (uint32)floor(span() == 0 ? (1-erate() * (a_end()-a_bgn())) : (1-erate()) * span()), span() == 0 ? a_end() - a_bgn() : span(), 255, (newLine) ? "\n" : ""); break; } return(str); }
MObject LSystemNode::createMesh(const double & angle, const double & step, const MString & grammar, const MTime& time, MObject& outData, MStatus& stat) { //int numVertices, frame; //float cubeSize; //MFloatPointArray points; MPointArray points; MIntArray faceCounts; MIntArray faceConnects; MFnMesh meshFS; LSystem lsys; lsys.setDefaultAngle(angle); //angle lsys.setDefaultStep(step); //step size string gram = grammar.asChar(); //grammar lsys.loadProgramFromString(gram); std::vector<LSystem::Branch> branches; lsys.process((int)time.value(),branches); CylinderMesh*cm; for(int j = 0;j<branches.size();j++) { vec3 Bstart = branches[j].first; vec3 Bend = branches[j].second; MPoint b_start(Bstart[0],Bstart[1],Bstart[2]); MPoint b_end(Bend[0],Bend[1],Bend[2]); cm = new CylinderMesh(b_start,b_end); cm->appendToMesh(points,faceCounts,faceConnects); } /* // Scale the cube on the frame number, wrap every 10 frames. frame = (int)time.as( MTime::kFilm ); if (frame == 0) frame = 1; cubeSize = 0.5f * (float)( frame % 10); const int numFaces = 6; numVertices = 8; const int numFaceConnects = 24;*/ /* MFloatPoint vtx_1( -cubeSize, -cubeSize, -cubeSize ); MFloatPoint vtx_2( cubeSize, -cubeSize, -cubeSize ); MFloatPoint vtx_3( cubeSize, -cubeSize, cubeSize ); MFloatPoint vtx_4( -cubeSize, -cubeSize, cubeSize ); MFloatPoint vtx_5( -cubeSize, cubeSize, -cubeSize ); MFloatPoint vtx_6( -cubeSize, cubeSize, cubeSize ); MFloatPoint vtx_7( cubeSize, cubeSize, cubeSize ); MFloatPoint vtx_8( cubeSize, cubeSize, -cubeSize ); points.append( vtx_1 ); points.append( vtx_2 ); points.append( vtx_3 ); points.append( vtx_4 ); points.append( vtx_5 ); points.append( vtx_6 ); points.append( vtx_7 ); points.append( vtx_8 ); // Set up an array containing the number of vertices // for each of the 6 cube faces (4 verticies per face) // int face_counts[numFaces] = { 4, 4, 4, 4, 4, 4 }; MIntArray faceCounts( face_counts, numFaces ); // Set up and array to assign vertices from points to each face // int face_connects[ numFaceConnects ] = { 0, 1, 2, 3, 4, 5, 6, 7, 3, 2, 6, 5, 0, 3, 5, 4, 0, 4, 7, 1, 1, 7, 6, 2 }; MIntArray faceConnects( face_connects, numFaceConnects ); MObject newMesh = meshFS.create(numVertices, numFaces, points, faceCounts, faceConnects, outData, &stat); return newMesh;*/ MObject newMesh = meshFS.create(points.length() ,faceCounts.length(),points,faceCounts ,faceConnects,outData,&stat); return newMesh; }