std::vector<ResultEntry> DataStore::findResultsForModelName(std::string modelName) { std::vector<ResultEntry> entries; const char *q = sqlite3_mprintf("select id, model_name, subject_name, notes, date, value, statistics from result where model_name = '%q'", modelName.c_str()); sqlite3_stmt *stmt = query(q); int rc; while((rc = sqlite3_step(stmt)) != SQLITE_DONE) { switch(rc) { case SQLITE_ROW: int id = sqlite3_column_int(stmt, 0); std::string modelName(reinterpret_cast<char const*>(sqlite3_column_text(stmt, 1))); std::string subjectName(reinterpret_cast<char const*>(sqlite3_column_text(stmt, 2))); std::string notes(reinterpret_cast<char const*>(sqlite3_column_text(stmt, 3))); std::string date(reinterpret_cast<char const*>(sqlite3_column_text(stmt, 4))); double value = sqlite3_column_double(stmt, 5); std::string statistics(reinterpret_cast<char const*>(sqlite3_column_text(stmt, 6))); entries.push_back(ResultEntry(id, modelName, subjectName, notes, date, value, "", "", statistics)); break; } } sqlite3_free((void *) q); sqlite3_finalize(stmt); return entries; }
// delete notes int notes(char *ch,int *i) { if (*ch == '/'){ char temp; if ('*' == (temp = getchar())) { *ch = getchar(); temp = getchar(); while(!(*ch == '*' && temp == '/')) { *ch = temp; temp = getchar(); } gBuf[(*i)++] = ' '; *ch = getchar(); } else { gBuf[(*i)++] = '/'; if (temp == '/') { notes(ch,i); } else *ch = temp; } return 1; } return 0; }
DynVolNN::DynVolNN() : min_z(inf), max_z(-inf) { // load the training set ifstream notes("data/zball_big/notes.txt"); while(notes) { string filename; notes >> filename; float z_min; notes >> z_min; float z_max; notes >> z_max; Mat T = read_depth_mm(safe_printf("data/zball_big/%",filename)); if(T.empty()) { log_file << "warning " << filename << " was empty" << endl; continue; } T = imclamp(T,z_min,z_max); log_im_decay_freq("Template",[&](){return eq(T);}); templates.push_back(DynVolTempl{T,z_min,z_max}); min_z = std::min(min_z,z_min); max_z = std::max(max_z,z_max); } // }
ResultEntry DataStore::findResultForIdWithExportdData(int id) { const char *q = sqlite3_mprintf("select id, model_name, subject_name, notes, date, value, exported_data, exported_message, statistics from result where id = '%d'", id); sqlite3_stmt *stmt = query(q); int rc; while((rc = sqlite3_step(stmt)) != SQLITE_DONE) { switch(rc) { case SQLITE_ROW: int id = sqlite3_column_int(stmt, 0); std::string modelName(reinterpret_cast<char const*>(sqlite3_column_text(stmt, 1))); std::string subjectName(reinterpret_cast<char const*>(sqlite3_column_text(stmt, 2))); std::string notes(reinterpret_cast<char const*>(sqlite3_column_text(stmt, 3))); std::string date(reinterpret_cast<char const*>(sqlite3_column_text(stmt, 4))); double value = sqlite3_column_double(stmt, 5); std::string exportedData(reinterpret_cast<char const*>(sqlite3_column_text(stmt, 6))); std::string exportedMessage(reinterpret_cast<char const*>(sqlite3_column_text(stmt, 7))); std::string statistics(reinterpret_cast<char const*>(sqlite3_column_text(stmt, 8))); ResultEntry entry = ResultEntry(id, modelName, subjectName, notes, date, value, exportedData, exportedMessage, statistics); sqlite3_free((void *) q); sqlite3_finalize(stmt); return entry; } } throw std::runtime_error("No result for given id"); }
void DivePlannerPointsModel::computeVariations() { bool oldRecalc = setRecalc(false); struct dive *dive = alloc_dive(); copy_dive(&displayed_dive, dive); struct decostop original[60], deeper[60], shallower[60], shorter[60], longer[60]; struct deco_state *cache = NULL, *save = NULL; struct diveplan plan_copy; struct divedatapoint *last_segment; if(in_planner() && prefs.display_variations) { cache_deco_state(&save); cloneDiveplan(&plan_copy); plan(&plan_copy, dive, 1, original, &cache, true, false); free_dps(&plan_copy); restore_deco_state(save, false); last_segment = cloneDiveplan(&plan_copy); last_segment->depth.mm += 1000; last_segment->next->depth.mm += 1000; plan(&plan_copy, dive, 1, deeper, &cache, true, false); free_dps(&plan_copy); restore_deco_state(save, false); last_segment = cloneDiveplan(&plan_copy); last_segment->depth.mm -= 1000; last_segment->next->depth.mm -= 1000; plan(&plan_copy, dive, 1, shallower, &cache, true, false); free_dps(&plan_copy); restore_deco_state(save, false); last_segment = cloneDiveplan(&plan_copy); last_segment->next->time += 60; plan(&plan_copy, dive, 1, longer, &cache, true, false); free_dps(&plan_copy); restore_deco_state(save, false); last_segment = cloneDiveplan(&plan_copy); last_segment->next->time -= 60; plan(&plan_copy, dive, 1, shorter, &cache, true, false); free_dps(&plan_copy); restore_deco_state(save, false); #ifdef SHOWSTOPVARIATIONS printf("\n\n"); #endif QString notes(displayed_dive.notes); free(displayed_dive.notes); char buf[200]; sprintf(buf, "+ %d:%02d /m + %d:%02d /min", FRACTION(analyzeVariations(shallower, original, deeper, "m"),60), FRACTION(analyzeVariations(shorter, original, longer, "min"), 60)); displayed_dive.notes = strdup(notes.replace("VARIATIONS", QString(buf)).toUtf8().data()); } setRecalc(oldRecalc); }
/// \brief Loads info from a property bag // // We get out of the bag the stat, modifier and roll settings. // /// \param propBag Bag containing properties to load // /// \sa LoadLegacy, Save /// \return true if stat was found // bool Value::Load( moPropBagRef& propBag ) { moPropStringRef stat ( f_statName ); moPropIntRef mod ( f_modName ); moPropIntRef roll ( f_rollName ); moPropStringRef notes ( f_notesName ); // stat.Link( propBag ); mod .Link( propBag ); roll.Link( propBag ); notes.Link( propBag ); if( stat.HasProp() ) { f_stat = StatManager::Instance().lock()->GetStat( static_cast<moName>(stat) ); if( !f_stat ) { return false; } } else { LoadLegacy( propBag ); } // assert(f_stat); // if( mod.HasProp() ) { f_mod = mod; } else { f_mod = 0; } // if( roll.HasProp() ) { f_roll = roll; } else { f_roll = 0; } // if( notes.HasProp() ) { f_notes = static_cast<moWCString>(notes).c_str(); } else { f_notes = ""; } return true; }
//////////////////// // Join successful void IRCClient::parseJoin(const IRCClient::IRCCommand& cmd) { m_connecting = false; // Re-request the nick names sendRequestNames(); // Callback for( std::set<IRCConnectCB>::const_iterator it = m_connectCallback.begin(); it != m_connectCallback.end(); it++ ) (*it)(); notes("IRC connected to " + m_chatServerChannel + "@" + m_chatServerAddrStr + "\n"); }
// Retrieve key/notes list for given (bank, prog) pair. const InstrumentData& Instrument::notes ( int iBank, int iProg ) const { if (m_pData->keys.contains(iBank)) { if (m_pData->keys[iBank].contains(iProg)) { return m_pData->keys[iBank][iProg]; } else { return m_pData->keys[iBank][-1]; } } else if (iBank >= 0) return notes(-1, iProg); return m_pData->keys[-1][-1]; }
void input() { char ch; int i=0; ch = getchar(); while('#' != ch) { if (ch == '\t' || ch == '\n') { gBuf[i++] = ' '; ch = getchar(); continue; } if(notes(&ch,&i)) continue; gBuf[i++] = ch; ch = getchar(); } gBuf[i++] = '#'; gBuflen = i; }
void runrun(int keepnote) { int on; on = nnote; unloadnote(); if(on != nnote){ notes(); error("not running: new notes pending"); } if(keepnote) loadnote(); else nnote = 0; flush(); msgpcs("startstop"); bpwait(); }
int nproc(char **argv) { char buf[128]; int pid, i, fd; pid = fork(); switch(pid) { case -1: error("new: fork %r"); case 0: rfork(RFNAMEG|RFNOTEG); sprint(buf, "/proc/%d/ctl", getpid()); fd = open(buf, ORDWR); if(fd < 0) fatal("new: open %s: %r", buf); write(fd, "hang", 4); close(fd); close(0); close(1); close(2); for(i = 3; i < NFD; i++) close(i); open("/dev/cons", OREAD); open("/dev/cons", OWRITE); open("/dev/cons", OWRITE); exec(argv[0], argv); fatal("new: exec %s: %r"); default: install(pid); msg(pid, "waitstop"); notes(pid); sproc(pid); dostop(pid); break; } return pid; }
void GMPParent::GetCrashID(nsString& aResult) { CrashReporterParent* cr = nullptr; if (ManagedPCrashReporterParent().Length() > 0) { cr = static_cast<CrashReporterParent*>(ManagedPCrashReporterParent()[0]); } if (NS_WARN_IF(!cr)) { return; } AnnotationTable notes(4); WriteExtraDataForMinidump(notes); nsCOMPtr<nsIFile> dumpFile; TakeMinidump(getter_AddRefs(dumpFile), nullptr); if (!dumpFile) { NS_WARNING("GMP crash without crash report"); return; } GetIDFromMinidump(dumpFile, aResult); cr->GenerateCrashReportForMinidump(dumpFile, ¬es); }
/// \brief Save values to property bag for persistence // /// \param propBag Bag containing properties to load // /// \sa Load void Value::Save( moPropBagRef& propBag ) { moPropStringRef stat ( f_statName ); moPropIntRef mod ( f_modName ); moPropIntRef roll ( f_rollName ); moPropStringRef notes ( f_notesName ); // stat.NewProp(); mod .NewProp(); roll.NewProp(); notes.NewProp(); // stat = static_cast<moWCString>(static_cast<moName>(f_stat->id())); mod = f_mod; roll = f_roll; notes = f_notes.c_str(); // propBag += stat; propBag += mod; propBag += roll; propBag += notes; }
QString SafeListViewEntry::text(int col) const { if(col == 0) { return entry()->name(); } else if(col == 1) { return entry()->user(); } else if(col == 2) { QString notes(entry()->notes()); if(isSelected() == false) { int pos = notes.find('\n'); if(pos > 0) return notes.left(pos); } return notes; } else if(col >= 3 && col < 6) { QDateTime time; if(col == 3) time = entry()->modifiedTime(); else if(col == 4) time = entry()->accessTime(); else if(col == 5) time = entry()->creationTime(); return time.toString(Qt::LocalDate); } else if(col == 6) { return entry()->lifetime().toString(); } else { return QString::null; } }
/////////////////////// // Disconnect from the server void IRCClient::disconnect() { // Disconnect only when connected if (!m_socketOpened) return; // Call the disconnect callback for( std::set<IRCDisconnectCB>::const_iterator it = m_disconnectCallback.begin(); it != m_disconnectCallback.end(); it++ ) (*it)(); // Close socket if (m_chatSocket.isReady()) m_chatSocket.Write("QUIT\r\n"); if (m_chatSocket.isOpen()) m_chatSocket.Close(); // Clear the variables m_socketConnected = false; m_socketIsReady = false; m_socketOpened = false; m_connecting = false; m_connectionClosedTime = tLX->currentTime; m_chatSocket.Clear(); SetNetAddrValid(m_chatServerAddr, false); m_netBuffer.clear(); m_authorizedState = AUTH_NONE; m_nickUniqueNumber = -1; m_updatingUserList = false; m_chatUsers.clear(); // Call the update user list callback for( std::set<IRCUpdateUserListCB>::const_iterator it = m_updateUsersCallback.begin(); it != m_updateUsersCallback.end(); it++ ) (*it)(m_chatUsers); notes("IRC: disconnected\n"); }
ctConfigItem* ctFindReplaceDialog::FindNextItem(ctConfigToolDoc* doc, ctConfigItem* item, const wxString& text, bool matchCase, bool matchWordOnly, bool wrap, bool skipFirst) { ctConfigItem* firstInDoc = NULL; wxString text2(text); if (!matchCase) text2.MakeLower(); ctConfigItem* found = NULL; ctConfigItem* next = item; int i = 0; do { // If starting the search from beginning, we can now // set the value of 'item' in the 2nd iteration without immediately // dropping out of the while loop because card == next if (!item && (i > 0)) item = firstInDoc; // We might want to start from this item if skipFirst is false. if ((i == 0) && !skipFirst && next) { } else next = doc->FindNextItem(next, wrap); // Save to be used in iteration 2 if ((i == 0) && !item) firstInDoc = next; if (next) { wxString str(next->GetName()); wxString description(next->GetPropertyString(wxT("description"))); wxString notes(next->GetPropertyString(wxT("notes"))); if (!matchCase) { str.MakeLower(); description.MakeLower(); notes.MakeLower(); } if (ctMatchString(str, text2, matchWordOnly) || ctMatchString(description, text2, matchWordOnly) || ctMatchString(notes, text2, matchWordOnly)) { found = next; } } else break; // Didn't find an item at all i ++; } while (!found && item != next); if (item == found && !firstInDoc) return NULL; else return found; }
QImage ImageProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize) { QImage result; const QStringList idSegments = id.split(QLatin1Char('/')); if (requestedSize.width() < 1 || requestedSize.height() < 1) { qDebug() << Q_FUNC_INFO << " requestedSize is invalid!" << requestedSize << id; return QImage(); } if (idSegments.count() < 2) { qDebug() << Q_FUNC_INFO << "Not enough parameters for the image provider: " << id; return QImage(); } const QString &elementId = idSegments.at(1); if (idSegments.first() == QStringLiteral("background")) { return renderedSvgElement(elementId, designRenderer(), Qt::KeepAspectRatioByExpanding, size, requestedSize); } else if (idSegments.first() == QStringLiteral("title")) { if (elementId == QStringLiteral("textmask")) result = renderedSvgElement(idSegments.first(), designRenderer(), Qt::KeepAspectRatio, size, requestedSize); else result = spectrum(size, requestedSize); } else if (idSegments.first() == QStringLiteral("specialbutton")) { result = renderedSvgElement(elementId, designRenderer(), Qt::IgnoreAspectRatio, size, requestedSize); } else if (idSegments.first() == buttonString) { result = renderedDesignElement(DesignElementTypeButton, elementId.toInt(), size, requestedSize); } else if (idSegments.first() == frameString) { result = renderedDesignElement(DesignElementTypeFrame, 0, size, requestedSize); } else if (idSegments.first() == QStringLiteral("object")) { result = renderedSvgElement(elementId, objectRenderer(), Qt::KeepAspectRatio, size, requestedSize); } else if (idSegments.first() == QStringLiteral("clock")) { if (idSegments.count() != 4) { qDebug() << Q_FUNC_INFO << "Wrong number of parameters for clock images:" << id; return QImage(); } result = clock(idSegments.at(1).toInt(), idSegments.at(2).toInt(), idSegments.at(3).toInt(), size, requestedSize); } else if (idSegments.first() == QStringLiteral("notes")) { result = notes(elementId.split(QLatin1Char(','), QString::SkipEmptyParts), size, requestedSize); } else if (idSegments.first() == QStringLiteral("quantity")) { if (idSegments.count() != 3) { qDebug() << Q_FUNC_INFO << "Wrong number of parameters for quantity images:" << id; return QImage(); } result = quantity(idSegments.at(1).toInt(), idSegments.at(2), size, requestedSize); } else if (idSegments.first() == QStringLiteral("lessonicon")) { if (idSegments.count() != 3) { qDebug() << Q_FUNC_INFO << "Wrong number of parameters for lessonicon:" << id; return QImage(); } result = renderedLessonIcon(idSegments.at(1), idSegments.at(2).toInt(), size, requestedSize); } else if (idSegments.first() == QStringLiteral("color")) { if (idSegments.count() != 3) { qDebug() << Q_FUNC_INFO << "Wrong number of parameters for color:" << id; return QImage(); } const QColor color(idSegments.at(1)); result = colorBlot(color, idSegments.at(2).toInt(), size, requestedSize); } else { qDebug() << Q_FUNC_INFO << "invalid image Id:" << id; } #if 0 if (idSegments.first() == QStringLiteral("object")) { QPainter p(&result); QPolygon points; for (int i = 0; i < result.width(); i += 2) for (int j = 0; j < result.height(); j += 2) points.append(QPoint(i, j)); p.drawPoints(points); p.setPen(Qt::white); p.translate(1, 1); p.drawPoints(points); } #endif return result; }
QString QUSongLine::toString() const { QString line; foreach(QUSongNoteInterface *note, notes()) line.append(note->syllable()); return line; }
/** save entire sequence to file */ void sequence::save ( const char *name ) const { smf f; /* open for writing */ f.open( name, smf::WRITE ); f.write_header( 2 ); DMESSAGE( "saving playlist" ); f.open_track( NULL, -1 ); DMESSAGE( "saving song info" ); f.write_song_info( song.play_mode, phrase::phrases(), pattern::patterns(), this->name(), notes() ); for ( int i = 0; i < _rd->num; ++i ) { char pat[256]; phrase *p = phrase::phrase_by_number( _rd->phrases[ i ] ); snprintf( pat, 256, "%d: %s", p->number(), p->name() ); f.write_meta_event( smf::CUEPOINT, pat ); } f.close_track( 0 ); DMESSAGE( "saving phrases" ); for ( int i = 0; i < phrase::phrases(); i++ ) { phrase *p = phrase::phrase_by_number( i + 1 ); p->dump( &f ); } DMESSAGE( "saving patterns" ); for ( int i = 0; i < pattern::patterns(); i++ ) { pattern *p = pattern::pattern_by_number( i + 1 ); p->dump( &f ); } }
/*! Returns a rich text formatted QString representing the contents the contact. */ QString OPimContact::toRichText() const { QString text; QString value, comp, state; QString str; bool marker = false; Config cfg( "qpe" ); cfg.setGroup( "Appearance" ); int addressformat = cfg.readNumEntry( "AddressFormat", Zip_City_State ); // name, jobtitle and company if ( !( value = fullName() ).isEmpty() ) text += "<b><h3><img src=\"addressbook/AddressBook\"> " + Qtopia::escapeString( value ) + "</h3></b>"; if ( !( value = jobTitle() ).isEmpty() ) text += Qtopia::escapeString( value ) + " "; comp = company(); if ( !( value = department() ).isEmpty() ) { text += Qtopia::escapeString( value ); if ( comp ) text += ", " + Qtopia::escapeString( comp ); } else if ( comp ) text += "<br>" + Qtopia::escapeString( comp ); text += "<br><hr>"; // defailt email QString defEmail = defaultEmail(); if ( !defEmail.isEmpty() ) { text += "<b><img src=\"addressbook/email\"> " + QObject::tr( "Default Email: " ) + "</b>" + Qtopia::escapeString( defEmail ); marker = true; } // business address if ( !businessStreet().isEmpty() || !businessCity().isEmpty() || !businessZip().isEmpty() || !businessCountry().isEmpty() ) { text += QObject::tr( "<br><b>Work Address:</b>" ); marker = true; } if ( !( value = businessStreet() ).isEmpty() ) { text += "<br>" + Qtopia::escapeString( value ); marker = true; } switch ( addressformat ) { case Zip_City_State: { // Zip_Code City, State state = businessState(); if ( !( value = businessZip() ).isEmpty() ) { text += "<br>" + Qtopia::escapeString( value ) + " "; marker = true; } if ( !( value = businessCity() ).isEmpty() ) { marker = true; if ( businessZip().isEmpty() && !businessStreet().isEmpty() ) text += "<br>"; text += Qtopia::escapeString( value ); if ( state ) text += ", " + Qtopia::escapeString( state ); } else if ( !state.isEmpty() ) { text += "<br>" + Qtopia::escapeString( state ); marker = true; } break; } case City_State_Zip: { // City, State Zip_Code state = businessState(); if ( !( value = businessCity() ).isEmpty() ) { marker = true; text += "<br>" + Qtopia::escapeString( value ); if ( state ) text += ", " + Qtopia::escapeString( state ); } else if ( !state.isEmpty() ) { text += "<br>" + Qtopia::escapeString( state ); marker = true; } if ( !( value = businessZip() ).isEmpty() ) { text += " " + Qtopia::escapeString( value ); marker = true; } break; } } if ( !( value = businessCountry() ).isEmpty() ) { text += "<br>" + Qtopia::escapeString( value ); marker = true; } // rest of Business data str = office(); if ( !str.isEmpty() ) { text += "<br><b>" + QObject::tr( "Office: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = businessWebpage(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/webpagework\"> " + QObject::tr( "Business Web Page: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = businessPhone(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/phonework\"> " + QObject::tr( "Business Phone: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = businessFax(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/faxwork\"> " + QObject::tr( "Business Fax: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = businessMobile(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/mobilework\"> " + QObject::tr( "Business Mobile: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = businessPager(); if ( !str.isEmpty() ) { text += "<br><b>" + QObject::tr( "Business Pager: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } // text += "<br>"; // home address if ( !homeStreet().isEmpty() || !homeCity().isEmpty() || !homeZip().isEmpty() || !homeCountry().isEmpty() ) { text += QObject::tr( "<br><b>Home Address:</b>" ); marker = true; } if ( !( value = homeStreet() ).isEmpty() ) { text += "<br>" + Qtopia::escapeString( value ); marker = true; } switch ( addressformat ) { case Zip_City_State: { // Zip_Code City, State state = homeState(); if ( !( value = homeZip() ).isEmpty() ) { text += "<br>" + Qtopia::escapeString( value ) + " "; marker = true; } if ( !( value = homeCity() ).isEmpty() ) { marker = true; if ( homeZip().isEmpty() && !homeStreet().isEmpty() ) text += "<br>"; text += Qtopia::escapeString( value ); if ( !state.isEmpty() ) text += ", " + Qtopia::escapeString( state ); } else if ( !state.isEmpty() ) { text += "<br>" + Qtopia::escapeString( state ); marker = true; } break; } case City_State_Zip: { // City, State Zip_Code state = homeState(); if ( !( value = homeCity() ).isEmpty() ) { marker = true; text += "<br>" + Qtopia::escapeString( value ); if ( state ) text += ", " + Qtopia::escapeString( state ); } else if ( !state.isEmpty() ) { text += "<br>" + Qtopia::escapeString( state ); marker = true; } if ( !( value = homeZip() ).isEmpty() ) { text += " " + Qtopia::escapeString( value ); marker = true; } break; } } if ( !( value = homeCountry() ).isEmpty() ) { text += "<br>" + Qtopia::escapeString( value ); marker = true; } // rest of Home data str = homeWebpage(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/webpagehome\"> " + QObject::tr( "Home Web Page: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = homePhone(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/phonehome\"> " + QObject::tr( "Home Phone: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = homeFax(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/faxhome\"> " + QObject::tr( "Home Fax: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } str = homeMobile(); if ( !str.isEmpty() ) { text += "<br><b><img src=\"addressbook/mobilehome\"> " + QObject::tr( "Home Mobile: " ) + "</b>" + Qtopia::escapeString( str ); marker = true; } if ( marker ) text += "<br><hr>"; // the rest... str = emails(); if ( !str.isEmpty() && ( str != defEmail ) ) text += "<br><b>" + QObject::tr( "All Emails: " ) + "</b>" + Qtopia::escapeString( str ); str = profession(); if ( !str.isEmpty() ) text += "<br><b>" + QObject::tr( "Profession: " ) + "</b>" + Qtopia::escapeString( str ); str = assistant(); if ( !str.isEmpty() ) text += "<br><b>" + QObject::tr( "Assistant: " ) + "</b>" + Qtopia::escapeString( str ); str = manager(); if ( !str.isEmpty() ) text += "<br><b>" + QObject::tr( "Manager: " ) + "</b>" + Qtopia::escapeString( str ); str = gender(); if ( !str.isEmpty() && str.toInt() != 0 ) { text += "<br>"; if ( str.toInt() == 1 ) str = QObject::tr( "Male" ); else if ( str.toInt() == 2 ) str = QObject::tr( "Female" ); text += "<b>" + QObject::tr( "Gender: " ) + "</b>" + str; } str = spouse(); if ( !str.isEmpty() ) text += "<br><b>" + QObject::tr( "Spouse: " ) + "</b>" + Qtopia::escapeString( str ); if ( birthday().isValid() ) { str = TimeString::numberDateString( birthday() ); text += "<br><b>" + QObject::tr( "Birthday: " ) + "</b>" + Qtopia::escapeString( str ); } if ( anniversary().isValid() ) { str = TimeString::numberDateString( anniversary() ); text += "<br><b>" + QObject::tr( "Anniversary: " ) + "</b>" + Qtopia::escapeString( str ); } str = children(); if ( !str.isEmpty() ) text += "<br><b>" + QObject::tr( "Children: " ) + "</b>" + Qtopia::escapeString( str ); str = nickname(); if ( !str.isEmpty() ) text += "<br><b>" + QObject::tr( "Nickname: " ) + "</b>" + Qtopia::escapeString( str ); // categories if ( categoryNames( "Contacts" ).count() ) { text += "<br><b>" + QObject::tr( "Category:" ) + "</b> "; text += categoryNames( "Contacts" ).join( ", " ); } // notes last if ( !( value = notes() ).isEmpty() ) { text += "<br><hr><b>" + QObject::tr( "Notes:" ) + "</b> "; QRegExp reg( "\n" ); //QString tmp = Qtopia::escapeString(value); QString tmp = QStyleSheet::convertFromPlainText( value ); //tmp.replace( reg, "<br>" ); text += "<br>" + tmp + "<br>"; } return text; }
static void _write(liqRibParticleData* pData, const structJob ¤tJob__) { CM_TRACE_FUNC("rm_writeParticleData.cpp::write("<<pData->getFullPathName().asChar()<<","<<currentJob__.name.asChar()<<",...)"); LIQDEBUGPRINTF( "-> writing particles\n"); #ifdef DEBUG RiArchiveRecord( RI_COMMENT, "Number of Valid Particles: %d", pData->m_numValidParticles ); RiArchiveRecord( RI_COMMENT, "Number of Discarded Particles: %d", pData->m_numParticles - pData->m_numValidParticles ); #endif MString notes("Make sure the particle is generated(e.g. sometimes particle is not generated, drag the time slider from frame0 to generate particles.)"); if(pData->m_numValidParticles <= 0 ){ RiArchiveRecord( RI_COMMENT, "Number of Valid Particles: %d. %s", pData->m_numValidParticles, notes.asChar() ); liquidMessage2(messageError, "%s. [%s]", notes.asChar(), pData->getFullPathName().asChar()); return; } unsigned numTokens( pData->tokenPointerArray.size() ); boost::scoped_array< RtToken > tokenArray( new RtToken[ numTokens ] ); boost::scoped_array< RtPointer > pointerArray( new RtPointer[ numTokens ] ); assignTokenArraysV( pData->tokenPointerArray, tokenArray.get(), pointerArray.get() ); switch( pData->particleType ) { case liqRibParticleData::MPTBlobbies: { // Build an array that can be given to RiBlobby std::vector< RtString > stringArray; for( int i(0); i < pData->m_stringArray.size(); i++ ) { stringArray.push_back( const_cast<char *>( pData->m_stringArray[i].c_str()) ); } RiBlobbyV( pData->m_numValidParticles, pData->m_codeArray.size(), const_cast< RtInt* >( &pData->m_codeArray[0] ), pData->m_floatArray.size(), const_cast< RtFloat* >( &pData->m_floatArray[0] ), stringArray.size(), const_cast< RtString* >( &stringArray[0] ), numTokens, tokenArray.get(), const_cast< RtPointer* >( pointerArray.get() ) ); pData->grain = 0; } break; case liqRibParticleData::MPTMultiPoint: case liqRibParticleData::MPTPoints: RiArchiveRecord( RI_COMMENT, "normal has to be reversed to show the MultiPoint/Points particles. // [10/9/2012 yaoyansi]" ); RiReverseOrientation(); #ifdef DELIGHT case liqRibParticleData::MPTSpheres: case liqRibParticleData::MPTSprites: #endif { RiPointsV( pData->m_numValidParticles * pData->m_multiCount, numTokens, tokenArray.get(), pointerArray.get() ); } break; case liqRibParticleData::MPTMultiStreak: case liqRibParticleData::MPTStreak: { unsigned nStreaks( pData->m_numValidParticles * pData->m_multiCount / 2 ); std::vector< RtInt > verts( nStreaks, 2 ); // Alternatively: // scoped_array< RtInt >verts( new RtInt[ nStreaks ] ); // fill( verts.get(), verts.get() + nStreaks, ( RtInt )2 ); // Both ways are way faster than the frickin for() lop that was here before -- Moritz RiCurvesV( "linear", nStreaks, &verts[ 0 ], "nonperiodic", numTokens, tokenArray.get(), pointerArray.get() ); } break; #ifndef DELIGHT case liqRibParticleData::MPTSpheres: { int posAttr = -1, radAttr = -1, colAttr = -1, opacAttr = -1; for ( unsigned i = 0; i < pData->tokenPointerArray.size(); i++ ) { const std::string tokenName( pData->tokenPointerArray[i].getTokenName() ); if ( "P" == tokenName ) { posAttr = i; } else if ( "radius" == tokenName ) { radAttr = i; } else if ( "Cs" == tokenName ) { colAttr = i; } else if ( "Os" == tokenName ) { opacAttr = i; } } for ( unsigned i = 0; i < pData->m_numValidParticles; i++) { RiAttributeBegin(); if ( colAttr != -1 ) { RiColor( &((RtFloat*)pointerArray[colAttr])[i*3] ); } if ( opacAttr != -1 ) { RiOpacity( &((RtFloat*)pointerArray[opacAttr])[i*3] ); } RiTransformBegin(); RiTranslate(((RtFloat*)pointerArray[posAttr])[i*3+0], ((RtFloat*)pointerArray[posAttr])[i*3+1], ((RtFloat*)pointerArray[posAttr])[i*3+2]); RtFloat radius = ((RtFloat*)pointerArray[radAttr])[i]; RiSphere(radius, -radius, radius, 360, RI_NULL); RiTransformEnd(); RiAttributeEnd(); } } break; case liqRibParticleData::MPTSprites: { int posAttr = -1, numAttr = -1, twistAttr = -1, scaleXAttr = -1, scaleYAttr = -1, colAttr = -1, opacAttr = -1; for ( unsigned i( 0 ); i < pData->tokenPointerArray.size(); i++ ) { const std::string tokenName( pData->tokenPointerArray[i].getTokenName() ); if ( "P" == tokenName ) { posAttr = i; } else if ( "spriteNum" == tokenName ) { numAttr = i; } else if ( "spriteTwist" == tokenName ) { twistAttr = i; } else if ( "spriteScaleX" == tokenName ) { scaleXAttr = i; } else if ( "spriteScaleY" == tokenName ) { scaleYAttr = i; } else if ( "Cs" == tokenName ) { colAttr = i; } else if ( "Os" == tokenName ) { opacAttr = i; } } MVector camUp( 0, 1, 0 ); MVector camRight( 1, 0, 0 ); MVector camEye( 0, 0, 1 ); camUp *= currentJob__.camera[0].mat.inverse(); camRight *= currentJob__.camera[0].mat.inverse(); camEye *= currentJob__.camera[0].mat.inverse(); for( unsigned ui( 0 ); ui < pData->m_numValidParticles; ui++ ) { MVector up( camUp ); MVector right( camRight ); float spriteRadiusX( 0.5 ); float spriteRadiusY( 0.5 ); RiAttributeBegin(); RiArchiveRecord( RI_COMMENT, "normal has to be reversed to show the Sprite particles. // [10/9/2012 yaoyansi]" ); RiReverseOrientation(); if ( -1 != colAttr ) RiColor( &( ( RtFloat* )pointerArray[ colAttr ] )[ ui * 3 ] ); if ( -1 != opacAttr ) RiOpacity( &( ( RtFloat* )pointerArray[ opacAttr ] )[ ui * 3 ] ); if ( -1 != twistAttr ) { float twist( -( ( RtFloat* )pointerArray[ twistAttr ] )[ ui ] * M_PI / 180 ); MQuaternion twistQ( twist, camEye ); right = camRight.rotateBy( twistQ ); up = camUp.rotateBy( twistQ ); } if ( scaleXAttr != -1 ) spriteRadiusX *= ( ( RtFloat* )pointerArray[ scaleXAttr ] )[ ui ]; if ( scaleYAttr != -1 ) spriteRadiusY *= ( ( RtFloat* )pointerArray[ scaleYAttr ] )[ ui ]; if ( posAttr != -1 ) { float *P( &( ( RtFloat* ) pointerArray[ posAttr ] )[ ui * 3 ] ); float spriteNumPP = 0; if ( numAttr != -1 ) spriteNumPP = ( ( RtFloat* )pointerArray[ numAttr ] )[ ui ]; float x0 = P[ 0 ] - spriteRadiusX * right[ 0 ] + spriteRadiusY * up[ 0 ]; float y0 = P[ 1 ] - spriteRadiusX * right[ 1 ] + spriteRadiusY * up[ 1 ]; float z0 = P[ 2 ] - spriteRadiusX * right[ 2 ] + spriteRadiusY * up[ 2 ]; float x1 = P[ 0 ] + spriteRadiusX * right[ 0 ] + spriteRadiusY * up[ 0 ]; float y1 = P[ 1 ] + spriteRadiusX * right[ 1 ] + spriteRadiusY * up[ 1 ]; float z1 = P[ 2 ] + spriteRadiusX * right[ 2 ] + spriteRadiusY * up[ 2 ]; float x2 = P[ 0 ] - spriteRadiusX * right[ 0 ] - spriteRadiusY * up[ 0 ]; float y2 = P[ 1 ] - spriteRadiusX * right[ 1 ] - spriteRadiusY * up[ 1 ]; float z2 = P[ 2 ] - spriteRadiusX * right[ 2 ] - spriteRadiusY * up[ 2 ]; float x3 = P[ 0 ] + spriteRadiusX * right[ 0 ] - spriteRadiusY * up[ 0 ]; float y3 = P[ 1 ] + spriteRadiusX * right[ 1 ] - spriteRadiusY * up[ 1 ]; float z3 = P[ 2 ] + spriteRadiusX * right[ 2 ] - spriteRadiusY * up[ 2 ]; float patch[ 12 ] = { x0, y0, z0, x1, y1, z1, x2, y2, z2, x3, y3, z3 }; // !!! if not GENERIC_RIBLIB use RiPatch( "bilinear", "P", &patch, "float spriteNum", &spriteNum, RI_NULL ); // RiPatch( "bilinear", "P", &patch, "float spriteNum", (RtFloat*)&spriteNumPP, RI_NULL ); // Patch "bilinear" "P" [0.446265 0.316269 -0.647637 1.27725 0.316269 -1.20393 0.615752 -0.636188 -0.39446 1.44674 -0.636188 -0.950756 ] "float spriteNum" [2 0 0 0 ] RiArchiveRecord( RI_VERBATIM, "Patch \"bilinear\" \"P\" [%f %f %f %f %f %f %f %f %f %f %f %f] \"float spriteNum\" [%f]", x0, y0, z0,x1, y1, z1, x2, y2, z2,x3, y3, z3, spriteNumPP ); } else { RiIdentity(); } RiAttributeEnd(); }//for } break; #endif // #ifndef DELIGHT case liqRibParticleData::MPTCloudy: { int posAttr = -1, radAttr = -1, colAttr = -1, opacAttr = -1, rotAttr = -1; for ( unsigned i = 0; i < pData->tokenPointerArray.size(); i++ ) { const std::string tokenName( pData->tokenPointerArray[i].getTokenName() ); if ( "P" == tokenName ) { posAttr = i; } else if ( "radius" == tokenName ) { radAttr = i; } else if ( "Cs" == tokenName ) { colAttr = i; } else if ( "Os" == tokenName ) { opacAttr = i; } else if ( "rotation" == tokenName ) { rotAttr = i; } } // Build an array that can be given to RiBlobby std::vector< RtString > stringArray; for( unsigned int i(0); i < pData->m_stringArray.size(); i++ ) { stringArray.push_back( const_cast<char *>( pData->m_stringArray[i].c_str()) ); } if(stringArray.size()==0)//added by yaoyansi, or it leads a crash on windows stringArray.push_back( "" ); boost::scoped_array< RtToken > ithTokenArray( new RtToken[ numTokens ] ); boost::scoped_array< RtPointer > ithPointerArray( new RtPointer[ numTokens ] ); for ( unsigned i = 0; i < pData->m_numValidParticles; i++) { assignIthTokenArraysV( pData->tokenPointerArray, ithTokenArray.get(), ithPointerArray.get(), i ); RiAttributeBegin(); if ( colAttr != -1 ) { RiColor( &((RtFloat*)pointerArray[colAttr])[i*3] ); } if ( opacAttr != -1 ) { RiOpacity( &((RtFloat*)pointerArray[opacAttr])[i*3] ); } RiTransformBegin(); RiTranslate(((RtFloat*)pointerArray[posAttr])[i*3+0], ((RtFloat*)pointerArray[posAttr])[i*3+1], ((RtFloat*)pointerArray[posAttr])[i*3+2]); if ( rotAttr != -1 ) { RiRotate( (( RtFloat *) pointerArray[rotAttr])[i*3] * 360.0, 1.0, 0.0, 0.0 ); RiRotate( (( RtFloat *) pointerArray[rotAttr])[i*3+1] * 360.0, 0.0, 1.0, 0.0 ); RiRotate( (( RtFloat *) pointerArray[rotAttr])[i*3+2] * 360.0, 0.0, 0.0, 1.0 ); } RtFloat radius = ((RtFloat*)pointerArray[radAttr])[i]; RiScale( radius, radius, radius ); //RiSphere(radius, -radius, radius, 360, RI_NULL); float dummy[] = { 0.0, 0.0, 0.0 }; // Worst case : three floats are needed RiBlobbyV( 1, pData->m_codeArray.size(), const_cast< RtInt* >( &pData->m_codeArray[0] ), pData->m_floatArray.size(), const_cast< RtFloat* >( &pData->m_floatArray[0] ), stringArray.size(), const_cast< RtString* >( &stringArray[0] ), numTokens, ithTokenArray.get(), ithPointerArray.get() ); // "vertex color incandescence", (RtPointer *)( dummy ), // "vertex color Cs", (RtPointer *)( dummy ), // "vertex float selfshadow", (RtPointer *)( dummy ), // RI_NULL ); RiTransformEnd(); RiAttributeEnd(); } break; } case liqRibParticleData::MPTNumeric: RiArchiveRecord( RI_COMMENT, "Numeric Particles are not supported" ); break; case liqRibParticleData::MPTTube: RiArchiveRecord( RI_COMMENT, "Tube Particles are not supported" ); break; break; } }