void CPiano::drawPianoInputLines(CChord* chord, CColour colour, int lineLength) { int i; drColour(colour); CStavePos stavePos; for ( i = 0; i < chord->length(); i++) { if (!m_rhythmTapping) { int pitch = chord->getNote(i).pitch(); stavePos.notePos(chord->getNote(i).part(), pitch); glLineWidth (3.0); if (stavePos.getAccidental() != 0) { glEnable (GL_LINE_STIPPLE); glLineStipple (1, 0x0f0f); /* dashed */ glLineWidth (3.0); } float posY; posY = stavePos.getPosYAccidental(); oneLine(Cfg::playZoneX() - lineLength, posY, Cfg::playZoneX(), posY); glDisable (GL_LINE_STIPPLE); } else { // draw a vertical line instead whichPart_t hand = chord->getNote(i).part(); CStavePos top = CStavePos(hand, 6); CStavePos bottom = CStavePos(hand, -6); glLineWidth (3.0); oneLine(Cfg::playZoneX(), top.getPosY(), Cfg::playZoneX(), bottom.getPosY()); } } }
OsStatus OsConfigDb::updateFile(const char* filename) const { UtlString originalFileContents; long fileLength = OsFile::openAndRead(filename, originalFileContents); const char* unparsedBits = originalFileContents; int unparsedLength = originalFileContents.length(); // Loop through and try to preserve comments, space and order int lineStart = 0; int lineEnd = 0; UtlHashBag writtenNames; UtlString newFileContents; UtlString name; UtlString value; UtlString newValue; while(lineStart < unparsedLength) { lineEnd = UtlTokenizer::nextDelim(unparsedBits, lineStart, unparsedLength, "\n\r"); //printf("start: %d end: %d length: %d\n", lineStart, lineEnd, unparsedLength); UtlString oneLine(&unparsedBits[lineStart], lineEnd - lineStart); //printf("Line: <%s>\n", oneLine.data()); // If line contains a parameter if(parseLine(oneLine, mCapitalizeName, filename, name, value)) { //printf("name<%s> value<%s>\n", name.data(), value.data()); if(get(name, newValue) == OS_SUCCESS && !writtenNames.contains(&name)) { //printf("Wrote name<%s>\n", name.data()); // The parameter still exists in the configDb and we have not yet // written it out, write the potentially changed value newFileContents.appendFormat("%s : %s\n", name.data(), newValue.data()); // Save names/parameters written so that we can figure out what has not // been written out writtenNames.insert(new UtlString(name)); } // else the parameter was removed, do nothing } // The line was a comment or blank line, write it back out the same else { newFileContents.appendFormat("%s\n", oneLine.data()); } lineStart = lineEnd + 1; } int paramIndex; int paramCount = numEntries(); DbEntry* paramEntry; for (paramIndex = 0; paramIndex < paramCount; paramIndex++) { paramEntry = (DbEntry*) mDb.at(paramIndex); removeNewlineReturns(paramEntry->key); removeNewlineReturns(paramEntry->value); // We have not written the value yet if(!writtenNames.contains(&(paramEntry->key))) { newFileContents.appendFormat("%s : %s\n", paramEntry->key.data(), paramEntry->value.data()); writtenNames.insert(new UtlString(paramEntry->key)); } } fileLength = OsFile::openAndWrite(filename, newFileContents); writtenNames.destroyAll(); return(fileLength > 0 ? OS_SUCCESS : OS_INVALID_ARGUMENT); }
void CDraw::drawSymbol(CSymbol symbol, float x, float y) { CColour colour = symbol.getColour(); bool playable = true; if (m_displayHand != symbol.getHand() && m_displayHand != PB_PART_both) { if (colour == Cfg::noteColour()) colour = Cfg::noteColourDim(); if (colour == Cfg::staveColour()) colour = Cfg::staveColourDim(); playable = false; } float topY, bottomY, topYrel, bottomYrel; if (m_settings->getActiveHand() == PB_PART_right) { topY = CStavePos(PB_PART_right, m_beatMarkerHeight).getPosY(); topYrel = CStavePos(PB_PART_right, m_beatMarkerHeight).getPosYRelative(); bottomY = CStavePos(PB_PART_right, -m_beatMarkerHeight).getPosY(); bottomYrel = CStavePos(PB_PART_right, -m_beatMarkerHeight).getPosYRelative(); } else if (m_settings->getActiveHand() == PB_PART_left) { topY = CStavePos(PB_PART_left, m_beatMarkerHeight).getPosY(); bottomY = CStavePos(PB_PART_left, -m_beatMarkerHeight).getPosY(); topYrel = CStavePos(PB_PART_left, m_beatMarkerHeight).getPosYRelative(); bottomYrel = CStavePos(PB_PART_left, -m_beatMarkerHeight).getPosYRelative(); } else { topY = CStavePos(PB_PART_right, m_beatMarkerHeight).getPosY(); bottomY = CStavePos(PB_PART_left, -m_beatMarkerHeight).getPosY(); topYrel = CStavePos(PB_PART_right, m_beatMarkerHeight).getPosYRelative(); bottomYrel = CStavePos(PB_PART_left, -m_beatMarkerHeight).getPosYRelative(); } switch (symbol.getType()) { case PB_SYMBOL_gClef: // The Treble Clef y += 4; drColour(colour); glLineWidth (3.0); glBegin(GL_LINE_STRIP); glVertex2f( -0.011922 + x, -16.11494 + y); // 1 glVertex2f( -3.761922 + x, -12.48994 + y); // 2 glVertex2f( -4.859633 + x, -8.85196 + y); // 3 glVertex2f( -4.783288 + x, -5.42815 + y); // 4 glVertex2f( -0.606711 + x, -1.11108 + y); // 5 glVertex2f( 5.355545 + x, 0.48711 + y); // 6 glVertex2f( 10.641104 + x, -1.6473 + y); // 7 glVertex2f( 14.293812 + x, -6.18241 + y); // 8 glVertex2f( 14.675578 + x, -11.42744 + y); // 9 glVertex2f( 12.550578 + x, -17.30244 + y); // 10 glVertex2f( 7.912166 + x, -20.944 + y); // 11 glVertex2f( 3.049705 + x, -21.65755 + y); // 12 glVertex2f( -1.711005 + x, -21.36664 + y); // 13 glVertex2f( -6.283661 + x, -19.66739 + y); // 14 glVertex2f( -10.123329 + x, -16.79162 + y); // 15 glVertex2f( -13.363008 + x, -12.28184 + y); // 16 glVertex2f( -14.675578 + x, -5.79969 + y); // 17 glVertex2f( -13.66821 + x, 0.20179 + y); // 18 glVertex2f( -10.385341 + x, 6.27562 + y); // 19 glVertex2f( 5.539491 + x, 20.32671 + y); // 20 glVertex2f( 10.431588 + x, 28.20584 + y); // 21 glVertex2f( 11.00141 + x, 34.71585 + y); // 22 glVertex2f( 9.204915 + x, 39.62875 + y); // 23 glVertex2f( 7.854166 + x, 42.08262 + y); // 24 glVertex2f( 5.481415 + x, 42.66649 + y); // 25 glVertex2f( 3.57972 + x, 41.4147 + y); // 26 glVertex2f( 1.507889 + x, 37.35642 + y); // 27 glVertex2f( -0.381338 + x, 31.14317 + y); // 28 glVertex2f( -0.664306 + x, 25.51354 + y); // 29 glVertex2f( 8.296044 + x, -32.22694 + y); // 30 glVertex2f( 8.050507 + x, -36.6687 + y); // 31 glVertex2f( 6.496615 + x, -39.52999 + y); // 32 glVertex2f( 3.368583 + x, -41.7968 + y); // 33 glVertex2f( 0.253766 + x, -42.66649 + y); // 34 glVertex2f( -3.599633 + x, -42.23514 + y); // 35 glVertex2f( -8.098754 + x, -39.46637 + y); // 36 glVertex2f( -9.463279 + x, -35.49796 + y); // 37 glVertex2f( -7.08037 + x, -31.36512 + y); // 38 glVertex2f( -3.336421 + x, -31.14057 + y); // 39 glVertex2f( -1.360313 + x, -34.07738 + y); // 40 glVertex2f( -1.608342 + x, -37.11828 + y); // 41 glVertex2f( -5.729949 + x, -39.24759 + y); // 42 glVertex2f( -7.480646 + x, -36.2136 + y); // 43 glVertex2f( -6.826918 + x, -33.36919 + y); // 44 glVertex2f( -4.069083 + x, -32.9226 + y); // 45 glVertex2f( -3.040669 + x, -34.433 + y); // 46 glVertex2f( -3.737535 + x, -36.38759 + y); // 47 glVertex2f( -5.496558 + x, -36.97633 + y); // 48 glVertex2f( -5.295932 + x, -34.01951 + y); // 49 glEnd(); break; case PB_SYMBOL_fClef: // The Base Clef drColour(colour); glLineWidth (3.0); glBegin(GL_LINE_STRIP); glVertex2f( -15.370325 + x, -17.42068 + y); // 1 glVertex2f( -7.171025 + x, -13.75432 + y); // 2 glVertex2f( -2.867225 + x, -10.66642 + y); // 3 glVertex2f( 0.925165 + x, -7.03249 + y); // 4 glVertex2f( 4.254425 + x, -0.65527 + y); // 5 glVertex2f( 4.762735 + x, 7.77848 + y); // 6 glVertex2f( 2.693395 + x, 13.92227 + y); // 7 glVertex2f( -1.207935 + x, 16.80317 + y); // 8 glVertex2f( -5.526425 + x, 17.42068 + y); // 9 glVertex2f( -10.228205 + x, 15.65609 + y); // 10 glVertex2f( -13.453995 + x, 10.7128 + y); // 11 glVertex2f( -13.133655 + x, 5.43731 + y); // 12 glVertex2f( -9.475575 + x, 3.00714 + y); // 13 glVertex2f( -5.846445 + x, 4.72159 + y); // 14 glVertex2f( -5.395545 + x, 9.72918 + y); // 15 glVertex2f( -8.850025 + x, 11.64372 + y); // 16 glVertex2f( -11.519385 + x, 10.35816 + y); // 17 glVertex2f( -11.706365 + x, 6.8704 + y); // 18 glVertex2f( -9.463505 + x, 5.01391 + y); // 19 glVertex2f( -7.172075 + x, 5.81649 + y); // 20 glVertex2f( -7.189565 + x, 8.62975 + y); // 21 glVertex2f( -9.175055 + x, 9.82019 + y); // 22 glVertex2f( -10.696425 + x, 8.08395 + y); // 23 glVertex2f( -8.843065 + x, 6.66726 + y); // 24 glVertex2f( -8.995775 + x, 8.71136 + y); // 25 glEnd(); glBegin(GL_POLYGON); glVertex2f( 10 + x, 14 + y); // 26 glVertex2f( 14 + x, 14 + y); // 27 glVertex2f( 14 + x, 10 + y); // 28 glVertex2f( 10 + x, 10 + y); // 29 glVertex2f( 10 + x, 14 + y); // 30 glEnd(); glBegin(GL_POLYGON); glVertex2f( 10 + x, 4 + y); // 31 glVertex2f( 14 + x, 4 + y); // 32 glVertex2f( 14 + x, 0 + y); // 33 glVertex2f( 10 + x, 0 + y); // 34 glVertex2f( 10 + x, 4 + y); // 35 glEnd(); break; case PB_SYMBOL_note: //ppLogTrace("PB_SYMBOL_note x %f y %f", x, y); if (!CChord::isNotePlayable(symbol.getNote(), 0)) { colour = Cfg::noteColourDim(); playable = false; } drawStaveExtentsion(symbol, x, 16, playable); drColour(colour); glBegin(GL_POLYGON); glVertex2f(-7.0 + x, 2.0 + y); // 1 glVertex2f(-5.0 + x, 4.0 + y); // 2 glVertex2f(-1.0 + x, 6.0 + y); // 3 glVertex2f( 4.0 + x, 6.0 + y); // 4 glVertex2f( 7.0 + x, 4.0 + y); // 5 glVertex2f( 7.0 + x, 1.0 + y); // 6 glVertex2f( 6.0 + x, -2.0 + y); // 7 glVertex2f( 4.0 + x, -4.0 + y); // 8 glVertex2f( 0.0 + x, -6.0 + y); // 9 glVertex2f(-4.0 + x, -6.0 + y); // 10 glVertex2f(-8.0 + x, -3.0 + y); // 11 glVertex2f(-8.0 + x, -0.0 + y); // 12 glEnd(); checkAccidental(symbol, x, y); break; case PB_SYMBOL_drum: if (!CChord::isNotePlayable(symbol.getNote(), 0)) colour = Cfg::noteColourDim(); drColour(colour); glLineWidth (3.0); glBegin(GL_LINES); glVertex2f( 5.0 + x,-5.0 + y); glVertex2f(-5.0 + x, 5.0 + y); glVertex2f(-5.0 + x,-5.0 + y); glVertex2f( 5.0 + x, 5.0 + y); glEnd(); checkAccidental(symbol, x, y); break; case PB_SYMBOL_sharp: glLineWidth (2.0); glBegin(GL_LINES); glVertex2f(-2.0 + x, -14.0 + y); glVertex2f(-2.0 + x, 14.0 + y); glVertex2f( 2.0 + x, -13.0 + y); glVertex2f( 2.0 + x, 15.0 + y); glVertex2f(-5.0 + x, 4.0 + y); glVertex2f( 5.0 + x, 7.0 + y); glVertex2f(-5.0 + x, -6.0 + y); glVertex2f( 5.0 + x, -3.0 + y); glEnd(); break; case PB_SYMBOL_flat: glLineWidth (2.0); glBegin(GL_LINE_STRIP); glVertex2f(-4.0 + x, 17.0 + y); // 1 glVertex2f(-4.0 + x, -6.0 + y); // 2 glVertex2f( 2.0 + x, -2.0 + y); // 3 glVertex2f( 5.0 + x, 2.0 + y); // 4 glVertex2f( 5.0 + x, 4.0 + y); // 5 glVertex2f( 3.0 + x, 5.0 + y); // 6 glVertex2f( 0.0 + x, 5.0 + y); // 7 glVertex2f(-4.0 + x, 2.0 + y); // 8 glEnd(); break; case PB_SYMBOL_natural: glLineWidth (2.0); glBegin(GL_LINES); glVertex2f( 3 + x, -15 + y); // 1 glVertex2f( 3 + x, 8 + y); // 2 glVertex2f( -3 + x, -8 + y); // 3 glVertex2f( -3 + x, 15 + y); // 4 glVertex2f( 3 + x, 8 + y); // 5 glVertex2f( -3 + x, 2 + y); // 6 glVertex2f( 3 + x, -2 + y); // 7 glVertex2f( -3 + x, -8 + y); // 8 glEnd(); break; case PB_SYMBOL_barLine: x += BEAT_MARKER_OFFSET * HORIZONTAL_SPACING_FACTOR; // the beat markers where entered early so now move them correctly glLineWidth (4.0); drColour ((m_displayHand == PB_PART_left) ? Cfg::staveColourDim() : Cfg::staveColour()); oneLine(x, CStavePos(PB_PART_right, 4).getPosYRelative(), x, CStavePos(PB_PART_right, -4).getPosYRelative()); drColour ((m_displayHand == PB_PART_right) ? Cfg::staveColourDim() : Cfg::staveColour()); oneLine(x, CStavePos(PB_PART_left, 4).getPosYRelative(), x, CStavePos(PB_PART_left, -4).getPosYRelative()); break; case PB_SYMBOL_barMarker: x += BEAT_MARKER_OFFSET * HORIZONTAL_SPACING_FACTOR; // the beat markers where entered early so now move them correctly glLineWidth (5.0); drColour(Cfg::barMarkerColour()); oneLine(x, topYrel, x, bottomYrel); glDisable (GL_LINE_STIPPLE); break; case PB_SYMBOL_beatMarker: x += BEAT_MARKER_OFFSET * HORIZONTAL_SPACING_FACTOR; // the beat markers where entered early so now move them correctly glLineWidth (4.0); drColour(Cfg::beatMarkerColour()); oneLine(x, topYrel, x, bottomYrel); glDisable (GL_LINE_STIPPLE); break; case PB_SYMBOL_playingZone: { float early = Cfg::playZoneEarly() * HORIZONTAL_SPACING_FACTOR; float late = Cfg::playZoneLate() * HORIZONTAL_SPACING_FACTOR; //glColor3f (0.7, 1.0, 0.7); glColor3f (0.0, 0.0, 0.3); glRectf(x-late, topY, x + early, bottomY); glLineWidth (2.0); glColor3f (0.0, 0.0, 0.8); oneLine(x, topY, x, bottomY ); glLineWidth (1.0); glColor3f (0.0, 0.0, 0.6); oneLine(x-late, topY, x-late, bottomY ); oneLine(x+early, topY, x+early, bottomY ); } break; default: ppDEBUG(("ERROR drawSymbol unhandled symbol\n")); break; } if (symbol.getType() == PB_SYMBOL_note) { float pianistX = symbol.getPianistTiming(); if ( pianistX != NOT_USED) { pianistX = x + pianistX * HORIZONTAL_SPACING_FACTOR; drColour(CColour(1.0, 1.0, 1.0)); glLineWidth (2.0); glBegin(GL_LINES); glVertex2f( 4.0 + pianistX, 4.0 + y); glVertex2f(-5.0 + pianistX,-5.0 + y); glVertex2f( 4.0 + pianistX,-4.0 + y); // draw pianist note timing markers glVertex2f(-5.0 + pianistX, 5.0 + y); glEnd(); } if ( playable ) drawStaveNoteName(symbol, x, y); } }
int HTTPRequest::ParseMore(vector<char>& io_buf) { if (!mGotWholeHeader) { for (int n = 1; n < io_buf.size(); ++n) { if (io_buf[n-1] == '\r' && io_buf[n ] == '\n') { // We have a line!! if (n == 1) { if (mResponseNum >= 200) { mGotWholeHeader = true; if (!mDestFileName.empty()) mDestFile = fopen(mDestFileName.c_str(), "wb"); FieldMap::iterator i = mFields.find("Content-Length"); if (i != mFields.end()) mIncomingLength = atoi(i->second.c_str()); } io_buf.erase(io_buf.begin(), io_buf.begin() + 2); break; } else { string oneLine(io_buf.begin(), io_buf.begin() + n - 1); if (oneLine.substr(0, 5) == "HTTP/") { string rev = oneLine.substr(5, 3); string code = oneLine.substr(9, 3); mResponseName = oneLine.substr(13); mResponseNum = atoi(code.c_str()); } else { string::size_type p = oneLine.find(": "); if (p != oneLine.npos) { mFields.insert(FieldMap::value_type( oneLine.substr(0, p), oneLine.substr(p+2))); } } } io_buf.erase(io_buf.begin(), io_buf.begin() + n + 1); n = 0; } } } if (mGotWholeHeader) { if (!io_buf.empty() && mIncomingLength != mReceivedPayload) { int write_size = mIncomingLength - mReceivedPayload; if (write_size > io_buf.size()) write_size = io_buf.size(); if (mDestFile) fwrite(&*io_buf.begin(), 1, write_size, mDestFile); else mPayload.insert(mPayload.end(),io_buf.begin(),io_buf.begin() + write_size); mReceivedPayload += write_size; io_buf.erase(io_buf.begin(), io_buf.begin()+write_size); } } if (IsDone()) { if (mDestFile) { fclose(mDestFile); mDestFile = NULL; } mConnection = NULL; return 1; } return 0; }
/** * Log a buffer as ascii-hex * * @param indent the number of spaces to indent the buffer * * @param verbosity the level of detail the message contains * * @param pBytes the buffer to log * * @param numBytes the number of bytes to log * * @param format the format string to use to process the * remaining arguments, where the format + remaining args * describe @p pBytes. The resulting string should not * contain a newline. Only the first 255 characters of the * resulting string (not including the NUL terminator) make * it to the log callback or stdout. */ void Log::hexDump( uint8_t indent, MP4LogLevel verbosity_, const uint8_t* pBytes, uint32_t numBytes, const char* format, ... ) { va_list ap; ASSERT(pBytes || (numBytes == 0)); ASSERT(format); if (verbosity_ > this->_verbosity) { // We're not set verbose enough to log this return; } // Build the description by processing format and the // remaining args. Since we don't have asprintf, pick // an arbitrary length for the string and use snprintf. // To save a memory allocation, only do this if there's // a non-empty format string or non-zero indent char *desc = NULL; if (format[0] || indent) { desc = (char *)MP4Calloc(256 + indent); sprintf(desc,"%*c",indent,' '); va_start(ap,format); vsnprintf(desc + indent,255,format,ap); va_end(ap); } // From here we can use the C++ standard lib classes and // build a string for each line for (uint32_t i = 0;(i < numBytes);i += 16) { // ios_base::ate means at end. With out this desc // gets overwritten with each << operation ostringstream oneLine(desc ? desc : "",ios_base::ate); // Append the byte offset this line starts with as // an 8 character, leading 0, hex number. Leave the // fill character set to 0 for the remaining // operations oneLine << ':' << hex << setw(8) << setfill('0') << std::right << i << setw(0) << setfill(' ') << ": "; uint32_t curlen = min((uint32_t)16,numBytes - i); const uint8_t *b = pBytes + i; uint32_t j; for (j = 0;(j < curlen);j++) { oneLine << hex << setw(2) << setfill('0') << right << static_cast<uint32_t>(b[j]); oneLine << setw(0) << setfill(' ') << ' '; } for (; j < 16; j++) { oneLine << " "; } b = pBytes + i; for (j = 0;(j < curlen);j++) { if (isprint(static_cast<int>(b[j]))) { oneLine << static_cast<char>(b[j]); } else { oneLine << '.'; } } // We can either call the callback directly or use // the Log::printf function. To call the callback // directly, we need a va_list. (I think) we need // and extra function call to build that, so we may // as well call Log::printf. It's going to // double-check the verbosity and the callback // function pointer, but that seems OK (13-feb-09, // dbyron) this->printf(verbosity_,"%s",oneLine.str().c_str()); } if (desc) { MP4Free(desc); desc = NULL; } }