本文整理汇总了C++中progress函数的典型用法代码示例。如果您正苦于以下问题:C++ progress函数的具体用法?C++ progress怎么用?C++ progress使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了progress函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: train_one_round
void train_one_round(const Fast5Map& name_map, size_t round)
{
const PoreModelMap& current_models = PoreModelSet::get_models(opt::trained_model_type);
// Initialize the training summary stats for each kmer for each model
ModelTrainingMap model_training_data;
for(auto current_model_iter = current_models.begin(); current_model_iter != current_models.end(); current_model_iter++) {
// one summary entry per kmer in the model
std::vector<StateSummary> summaries(current_model_iter->second.get_num_states());
model_training_data[current_model_iter->first] = summaries;
}
// Open the BAM and iterate over reads
// load bam file
htsFile* bam_fh = sam_open(opt::bam_file.c_str(), "r");
assert(bam_fh != NULL);
// load bam index file
std::string index_filename = opt::bam_file + ".bai";
hts_idx_t* bam_idx = bam_index_load(index_filename.c_str());
assert(bam_idx != NULL);
// read the bam header
bam_hdr_t* hdr = sam_hdr_read(bam_fh);
// load reference fai file
faidx_t *fai = fai_load(opt::genome_file.c_str());
hts_itr_t* itr;
// If processing a region of the genome, only emit events aligned to this window
int clip_start = -1;
int clip_end = -1;
if(opt::region.empty()) {
// TODO: is this valid?
itr = sam_itr_queryi(bam_idx, HTS_IDX_START, 0, 0);
} else {
fprintf(stderr, "Region: %s\n", opt::region.c_str());
itr = sam_itr_querys(bam_idx, hdr, opt::region.c_str());
hts_parse_reg(opt::region.c_str(), &clip_start, &clip_end);
}
#ifndef H5_HAVE_THREADSAFE
if(opt::num_threads > 1) {
fprintf(stderr, "You enabled multi-threading but you do not have a threadsafe HDF5\n");
fprintf(stderr, "Please recompile nanopolish's built-in libhdf5 or run with -t 1\n");
exit(1);
}
#endif
// Initialize iteration
std::vector<bam1_t*> records(opt::batch_size, NULL);
for(size_t i = 0; i < records.size(); ++i) {
records[i] = bam_init1();
}
int result;
size_t num_reads_realigned = 0;
size_t num_records_buffered = 0;
Progress progress("[methyltrain]");
do {
assert(num_records_buffered < records.size());
// read a record into the next slot in the buffer
result = sam_itr_next(bam_fh, itr, records[num_records_buffered]);
num_records_buffered += result >= 0;
// realign if we've hit the max buffer size or reached the end of file
if(num_records_buffered == records.size() || result < 0) {
#pragma omp parallel for
for(size_t i = 0; i < num_records_buffered; ++i) {
bam1_t* record = records[i];
size_t read_idx = num_reads_realigned + i;
if( (record->core.flag & BAM_FUNMAP) == 0) {
add_aligned_events(name_map, fai, hdr, record, read_idx, clip_start, clip_end, round, model_training_data);
}
}
num_reads_realigned += num_records_buffered;
num_records_buffered = 0;
}
if(opt::progress) {
fprintf(stderr, "Realigned %zu reads in %.1lfs\r", num_reads_realigned, progress.get_elapsed_seconds());
}
} while(result >= 0);
assert(num_records_buffered == 0);
progress.end();
// open the summary file
std::stringstream summary_fn;
summary_fn << "methyltrain" << opt::out_suffix << ".summary";
FILE* summary_fp = fopen(summary_fn.str().c_str(), "w");
fprintf(summary_fp, "model_short_name\tkmer\tnum_matches\tnum_skips\t"
"num_stays\tnum_events_for_training\twas_trained\t"
"trained_level_mean\ttrained_level_stdv\n");
//.........这里部分代码省略.........
示例2: Q_UNUSED
ErrorList topolTest::checkPointInPolygon( double tolerance, QgsVectorLayer *layer1, QgsVectorLayer *layer2, bool isExtent )
{
Q_UNUSED( tolerance );
int i = 0;
ErrorList errorList;
if ( layer1->geometryType() != QgsWkbTypes::PointGeometry )
{
return errorList;
}
if ( layer2->geometryType() != QgsWkbTypes::PolygonGeometry )
{
return errorList;
}
QgsSpatialIndex *index = mLayerIndexes[layer2->id()];
QgsGeometry canvasExtentPoly = QgsGeometry::fromWkt( qgsInterface->mapCanvas()->extent().asWktPolygon() );
QList<FeatureLayer>::Iterator it;
for ( it = mFeatureList1.begin(); it != mFeatureList1.end(); ++it )
{
if ( !( ++i % 100 ) )
emit progress( i );
if ( testCanceled() )
break;
QgsGeometry g1 = it->feature.geometry();
QgsRectangle bb = g1.boundingBox();
QList<QgsFeatureId> crossingIds;
crossingIds = index->intersects( bb );
QList<QgsFeatureId>::ConstIterator cit = crossingIds.begin();
QList<QgsFeatureId>::ConstIterator crossingIdsEnd = crossingIds.end();
bool touched = false;
for ( ; cit != crossingIdsEnd; ++cit )
{
QgsFeature &f = mFeatureMap2[*cit].feature;
QgsGeometry g2 = f.geometry();
if ( g2.isNull() || !_canExportToGeos( g2 ) )
{
QgsMessageLog::logMessage( tr( "Second geometry missing or GEOS import failed." ), tr( "Topology plugin" ) );
continue;
}
if ( g2.contains( g1 ) )
{
touched = true;
break;
}
}
if ( !touched )
{
QgsGeometry conflictGeom = g1;
if ( isExtent )
{
if ( canvasExtentPoly.disjoint( conflictGeom ) )
{
continue;
}
}
QList<FeatureLayer> fls;
fls << *it << *it;
//bb.scale(10);
TopolErrorPointNotInPolygon *err = new TopolErrorPointNotInPolygon( bb, conflictGeom, fls );
errorList << err;
}
}
return errorList;
}
示例3: main
int main() {
// The physical computations run at about 1500 Hz. 30 consecutive
// time steps are mixed into a frame buffer for motion blur. But
// this is not only about motion blur. This higher temporal resolution
// is necessary to avoid discretization errors to grow too large and
// to keep the whole thing "stable".
//
// The framebuffer is "oversampled" (higher resolution) for
// anti-aliasing.
const int num_particles = 10;
const int substeps = 30; // temporal oversampling
const int sover = 5; // spatial oversampling
std::srand(std::time(0));
std::vector<particle> ps;
ps.push_back( // bottom border particle that is not moving
make_particle(
make_random_color(),
-1
)
);
for (int i = 0; i < num_particles; ++i) {
ps.push_back( // almost equidistantly spaced particles
make_particle(
make_random_color(),
(i + 0.9f + 0.2f * uniform_random()) / (1 + num_particles) * (num_leds + 1) - 1
)
);
}
ps.push_back( // top border particle that is not moving
make_particle(
make_random_color(),
num_leds
)
);
std::vector<int> framebuff (num_leds * 3 * sover);
std::vector<unsigned char> scratch;
int time = -1;
int period = 10000; // time steps until next impulse
int part_change_color_index = 1;
color part_change_color_new = {{0}}, part_change_color_old = {{0}};
#ifdef WRITE_PPM
const int iters = 500; // for debugging purposes
write_binary_ppm_header(num_leds, iters, std::cout);
for (int i = 0; i < iters; ++i) {
#else
for (;;) {
#endif
// blank frame buffer (black)
std::fill(framebuff.begin(), framebuff.end(), 0);
for (int s = 0; s < substeps; ++s) {
render_frame(ps, sover, substeps, framebuff);
time = (time + 1) % period;
if (time <= 1000) { // impulse phase
if (time == 0) {
period = 5000 + std::rand() % 10000;
part_change_color_index = (std::rand() % num_particles) + 1;
part_change_color_old = ps[part_change_color_index].col;
part_change_color_new = make_random_color();
}
float s1 = squared(std::sin(time * (3.14159265 / 2000)));
float s2 = squared(std::sin(time * (3.14159265 / 1000)));
ps[0].pos = s2 * 15 - 1; // move bottom particle around
// also change the color of a random particle once in a while
ps[part_change_color_index].col = fade(
part_change_color_old,
part_change_color_new, s1);
}
update_accels(ps);
progress(ps);
}
write_frame(framebuff, 1.0f/substeps, sover, scratch, std::cout);
#ifndef WRITE_PPM
usleep(20000); // wait 20 ms (=> about 50 frames/sec)
#endif
}
return 0;
}
示例4: deadValue
/**
* Apply the detector test criterion
* @param counts1 :: A workspace containing the integrated counts of the first
* white beam run
* @param counts2 :: A workspace containing the integrated counts of the first
* white beam run
* @param average :: The computed median
* @param variation :: The allowed variation in terms of number of medians, i.e
* those spectra where
* the ratio of the counts outside this range will fail the tests and will be
* masked on counts1
* @return number of detectors for which tests failed
*/
int DetectorEfficiencyVariation::doDetectorTests(
API::MatrixWorkspace_const_sptr counts1,
API::MatrixWorkspace_const_sptr counts2, const double average,
double variation) {
// DIAG in libISIS did this. A variation of less than 1 doesn't make sense in
// this algorithm
if (variation < 1) {
variation = 1.0 / variation;
}
// criterion for if the the first spectrum is larger than expected
double largest = average * variation;
// criterion for if the the first spectrum is lower than expected
double lowest = average / variation;
const int numSpec = static_cast<int>(counts1->getNumberHistograms());
const int progStep = static_cast<int>(std::ceil(numSpec / 30.0));
// Create a workspace for the output
MaskWorkspace_sptr maskWS = this->generateEmptyMask(counts1);
bool checkForMask = false;
Geometry::Instrument_const_sptr instrument = counts1->getInstrument();
if (instrument != nullptr) {
checkForMask = ((instrument->getSource() != nullptr) &&
(instrument->getSample() != nullptr));
}
const double deadValue(1.0);
int numFailed(0);
PARALLEL_FOR3(counts1, counts2, maskWS)
for (int i = 0; i < numSpec; ++i) {
PARALLEL_START_INTERUPT_REGION
// move progress bar
if (i % progStep == 0) {
advanceProgress(progStep * static_cast<double>(RTMarkDetects) / numSpec);
progress(m_fracDone);
interruption_point();
}
if (checkForMask) {
const std::set<detid_t> &detids =
counts1->getSpectrum(i)->getDetectorIDs();
if (instrument->isMonitor(detids))
continue;
if (instrument->isDetectorMasked(detids)) {
// Ensure it is masked on the output
maskWS->dataY(i)[0] = deadValue;
continue;
}
}
const double signal1 = counts1->readY(i)[0];
const double signal2 = counts2->readY(i)[0];
// Mask out NaN and infinite
if (boost::math::isinf(signal1) || boost::math::isnan(signal1) ||
boost::math::isinf(signal2) || boost::math::isnan(signal2)) {
maskWS->dataY(i)[0] = deadValue;
PARALLEL_ATOMIC
++numFailed;
continue;
}
// Check the ratio is within the given range
const double ratio = signal1 / signal2;
if (ratio < lowest || ratio > largest) {
maskWS->dataY(i)[0] = deadValue;
PARALLEL_ATOMIC
++numFailed;
}
PARALLEL_END_INTERUPT_REGION
}
PARALLEL_CHECK_INTERUPT_REGION
// Register the results with the ADS
setProperty("OutputWorkspace", maskWS);
return numFailed;
}
示例5: DimensionReductionBestPath
void DimensionReductionBestPath(Thread* start, Thread* target, int n, vector<Thread*>& traj, vector<vector<VectorXd> >& mot)
{
Thread* st = new Thread(*start);
Thread* en = new Thread(*target);
// need to call minimize energy on start from outside this method
if (n == 0) {
glThreads[4]->setThread(new Thread(*start));
glThreads[4]->updateThreadPoints();
glThreads[5]->setThread(new Thread(*target));
glThreads[5]->updateThreadPoints();
glThreads[6]->setThread(new Thread(*target));
glThreads[6]->updateThreadPoints();
planner.initialize(new Thread(*st), new Thread(*en));
initialized = true;
Thread goal_thread; Thread prev_thread; Thread next_thread;
while(!interruptEnabled) {
#pragma omp parallel for num_threads(NUM_CPU_THREADS)
for (int i = 0; i < 999999; i++) {
if (!interruptEnabled) {
planner.planStep(goal_thread, prev_thread, next_thread);
}
}
}
planner.updateBestPath();
RRTNode* node = planner.getTree()->front();
node = node->next;
while (node != NULL) {
traj.push_back(new Thread(*node->thread));
vector<VectorXd> wrapper_mot;
wrapper_mot.push_back(node->motion);
mot.push_back(wrapper_mot);
node = node->next;
}
} else {
Thread* approxStart = planner.halfDimApproximation(st);
Thread* approxTarget = planner.halfDimApproximation(en);
vector<Thread*> path;
vector<vector<VectorXd> > motions;
DimensionReductionBestPath(approxStart, approxTarget, n-1, path, motions);
/* use Trajectory Follower to follow the path in higher D space. */
// transform the path to higher D space
vector<Thread*> transformed_path;
transformed_path.resize(path.size());
boost::progress_display progress(path.size());
for (int i = 0; i < path.size(); i++) {
transformed_path[i] = planner.doubleDimApproximation(path[i]);
++progress;
}
// follow the trajectory of the transformed approximation
Trajectory_Follower *pathFollower =
new Trajectory_Follower(transformed_path, motions, st);
pathFollower->control_to_finish();
pathFollower->getReachedStates(traj);
cout << traj.size() << endl;
pathFollower->getMotions(mot);
}
apprxNodes[n] = new RRTNode(new Thread(*st));
curApprxNodes[n] = apprxNodes[n];
RRTNode* prevNode = apprxNodes[n];
for (int i = 0; i < traj.size(); i++) {
RRTNode* node = new RRTNode(new Thread(*traj[i]));
node->prev = prevNode;
prevNode->next = node;
prevNode = node;
}
}
示例6: dsa_generate_keypair
/* Valid sizes, according to FIPS 186-3 are (1024, 160), (2048. 224),
(2048, 256), (3072, 256). Currenty, we use only q_bits of 160 or
256. */
int
dsa_generate_keypair(struct dsa_public_key *pub,
struct dsa_private_key *key,
void *random_ctx, nettle_random_func *random,
void *progress_ctx, nettle_progress_func *progress,
unsigned p_bits, unsigned q_bits)
{
mpz_t p0, p0q, r;
unsigned p0_bits;
unsigned a;
switch (q_bits)
{
case 160:
if (p_bits < DSA_SHA1_MIN_P_BITS)
return 0;
break;
case 256:
if (p_bits < DSA_SHA256_MIN_P_BITS)
return 0;
break;
default:
return 0;
}
mpz_init (p0);
mpz_init (p0q);
mpz_init (r);
nettle_random_prime (pub->q, q_bits, 0, random_ctx, random,
progress_ctx, progress);
p0_bits = (p_bits + 3)/2;
nettle_random_prime (p0, p0_bits, 0,
random_ctx, random,
progress_ctx, progress);
if (progress)
progress (progress_ctx, 'q');
/* Generate p = 2 r q p0 + 1, such that 2^{n-1} < p < 2^n.
*
* We select r in the range i + 1 < r <= 2i, with i = floor (2^{n-2} / (p0 q). */
mpz_mul (p0q, p0, pub->q);
_nettle_generate_pocklington_prime (pub->p, r, p_bits, 0,
random_ctx, random,
p0, pub->q, p0q);
if (progress)
progress (progress_ctx, 'p');
mpz_mul (r, r, p0);
for (a = 2; ; a++)
{
mpz_set_ui (pub->g, a);
mpz_powm (pub->g, pub->g, r, pub->p);
if (mpz_cmp_ui (pub->g, 1) != 0)
break;
}
if (progress)
progress (progress_ctx, 'g');
mpz_set(r, pub->q);
mpz_sub_ui(r, r, 2);
nettle_mpz_random(key->x, random_ctx, random, r);
mpz_add_ui(key->x, key->x, 1);
mpz_powm(pub->y, pub->g, key->x, pub->p);
if (progress)
progress (progress_ctx, '\n');
mpz_clear (p0);
mpz_clear (p0q);
mpz_clear (r);
return 1;
}
示例7: main
int main(int argc, char **argv)
{
kumy_file_t *kumy;
miniseed_file_t *mseed[KUMY_FILE_CHANNELS];
int32_t frame[KUMY_FILE_CHANNELS];
uint64_t frames, l, frames_per_file, frames_total, frame_count = 0;
int i;
char oname[1024], folder[1024];
uint32_t sample_rate, seconds_per_file;
int percent = 0, old_percent = -1;
int compression = 1, show_progress = 1;
char *infile = 0;
struct taia start_time; /* 1871 */
struct taia stop_time; /* 1951 */
struct taia sync_time; /* 2031 */
struct taia skew_time; /* 2111 */
struct caltime ct;
struct taia tt, dt;
program = argv[0];
parse_options(&argc, &argv, OPTIONS(
FLAG('n', "no-compression", compression, 0),
FLAG('q', "quiet", show_progress, 0),
FLAG_CALLBACK('h', "help", usage)
));
if (argc < 2) {
usage(0, 0, 0);
}
infile = argv[1];
if (!(kumy = kumy_file_open(infile))) {
fprintf(stderr, "Invalid file: %s.\n", infile);
return -1;
}
parse_text_date(&start_time, kumy->text_header[0].content + 1871);
parse_text_date(&stop_time, kumy->text_header[0].content + 1951);
parse_text_date(&sync_time, kumy->text_header[0].content + 2031);
parse_text_date(&skew_time, kumy->text_header[0].content + 2111);
sample_rate = 1000000 / kumy->binary_header[0].sample_interval;
if (sample_rate <= 250) {
seconds_per_file = 86400;
} else if (sample_rate <= 500) {
seconds_per_file = 43200;
} else if (sample_rate <= 1000) {
seconds_per_file = 21600;
} else if (sample_rate <= 2000) {
seconds_per_file = 10800;
} else {
seconds_per_file = 5400;
}
frames_per_file = sample_rate * seconds_per_file;
frames_total = kumy->binary_header[0].num_samples;
caltime_utc(&ct, &start_time.sec, 0, 0);
ct.hour = 0;
ct.minute = 0;
ct.second = 0;
caltime_tai(&ct, &tt.sec);
tt.nano = tt.atto = 0;
while (!taia_less(&start_time, &tt)) {
tt.sec.x += seconds_per_file;
}
taia_sub(&dt, &tt, &start_time);
frames = taia_approx(&dt) / seconds_per_file * frames_per_file;
l = last('.', infile);
if (l == -1 || l >= sizeof(folder)) return -1;
/* Create folder. */
copy(folder, l, infile);
folder[l] = 0;
mkdir_p(folder);
for (i = 0; i < KUMY_FILE_CHANNELS; ++i) {
caltime_utc(&ct, &start_time.sec, 0, 0);
snprintf(oname, sizeof(oname), "%s/%lld.%02lld.%02lld.%02lld.%02lld.%02lld.%s.seed",
folder, (long long)ct.date.year, (long long)ct.date.month, (long long)ct.date.day, (long long)ct.hour, (long long)ct.minute, (long long)ct.second, channel_names[i]);
if (!(mseed[i] = miniseed_file_create((char*)oname))) {
fprintf(stderr, "Invalid file: %s.\n", oname);
return -1;
}
miniseed_file_set_sample_rate(mseed[i], sample_rate);
miniseed_file_set_start_time(mseed[i], &start_time);
miniseed_file_set_info(mseed[i], "OBS", "DE", channel_names[i], "K");
miniseed_file_set_compression(mseed[i], compression);
}
while (kumy_file_read_int_frame(kumy, frame) >= 0) {
if (frames == 0) {
/* Create new files.*/
//.........这里部分代码省略.........
示例8: progress
void ProgressReceiver::timeout()
{
emit progress(mReader->progress() * mScale);
}
示例9: progress
void
GrdPlugin::saveTrimmed(QString trimFile,
int dmin, int dmax,
int wmin, int wmax,
int hmin, int hmax)
{
QProgressDialog progress("Saving trimmed volume",
0,
0, 100,
0);
progress.setMinimumDuration(0);
int nX, nY, nZ;
nX = m_depth;
nY = m_width;
nZ = m_height;
int mX, mY, mZ;
mX = dmax-dmin+1;
mY = wmax-wmin+1;
mZ = hmax-hmin+1;
int nbytes = nY*nZ*m_bytesPerVoxel;
uchar *tmp = new uchar[nbytes];
uchar vt;
if (m_voxelType == _UChar) vt = 0; // unsigned byte
if (m_voxelType == _Char) vt = 1; // signed byte
if (m_voxelType == _UShort) vt = 2; // unsigned short
if (m_voxelType == _Short) vt = 3; // signed short
if (m_voxelType == _Int) vt = 4; // int
if (m_voxelType == _Float) vt = 8; // float
QFile fout(trimFile);
fout.open(QFile::WriteOnly);
fout.write((char*)&vt, 1);
fout.write((char*)&mX, 4);
fout.write((char*)&mY, 4);
fout.write((char*)&mZ, 4);
for(uint i=dmin; i<=dmax; i++)
{
//----------------------------
QFile fin(m_imageList[i]);
fin.open(QFile::ReadOnly);
fin.seek(m_headerBytes);
fin.read((char*)tmp, nbytes);
fin.close();
//----------------------------
for(uint j=wmin; j<=wmax; j++)
{
memcpy(tmp+(j-wmin)*mZ*m_bytesPerVoxel,
tmp+(j*nZ + hmin)*m_bytesPerVoxel,
mZ*m_bytesPerVoxel);
}
fout.write((char*)tmp, mY*mZ*m_bytesPerVoxel);
progress.setValue((int)(100*(float)(i-dmin)/(float)mX));
qApp->processEvents();
}
fout.close();
delete [] tmp;
m_headerBytes = 13; // to be used for applyMapping function
}
示例10: main
//.........这里部分代码省略.........
&& (getconf_int("c_auth_mode") != AUTHMODE_LDAP)
&& (getconf_int("c_auth_mode") != AUTHMODE_LDAP_AD)
) {
curr += 5; /* skip LDAP questions if we're not authenticating against LDAP */
}
if (curr == eSysAdminName) {
if (getconf_int("c_auth_mode") == AUTHMODE_NATIVE) {
/* for native auth mode, fetch the admin's existing pw */
snprintf(buf, sizeof buf, "AGUP %s", admin_name);
serv_puts(buf);
serv_gets(buf);
if (buf[0] == '2') {
extract_token(admin_pass, &buf[4], 1, '|', sizeof admin_pass);
}
}
else {
++curr; /* skip the password question for non-native auth modes */
}
}
}
if ((pw = getpwuid( getconf_int("c_ctdluid") )) == NULL) {
gid = getgid();
} else {
gid = pw->pw_gid;
}
if (create_run_directories(getconf_int("c_ctdluid"), gid) != 0) {
display_error("%s\n", _("failed to create directories"));
}
activity = _("Reconfiguring Citadel server");
progress(activity, 0, 5);
sleep(1); /* Let the message appear briefly */
/*
* Create the administrator account. It's ok if the command fails if this user already exists.
*/
progress(activity, 1, 5);
snprintf(buf, sizeof buf, "CREU %s|%s", admin_name, admin_pass);
serv_puts(buf);
progress(activity, 2, 5);
serv_gets(buf);
progress(activity, 3, 5);
/*
* Assign the desired password and access level to the administrator account.
*/
snprintf(buf, sizeof buf, "AGUP %s", admin_name);
serv_puts(buf);
progress(activity, 4, 5);
serv_gets(buf);
if (buf[0] == '2') {
int admin_flags = extract_int(&buf[4], 2);
int admin_times_called = extract_int(&buf[4], 3);
int admin_msgs_posted = extract_int(&buf[4], 4);
snprintf(buf, sizeof buf, "ASUP %s|%s|%d|%d|%d|6",
admin_name, admin_pass, admin_flags, admin_times_called, admin_msgs_posted
);
serv_puts(buf);
serv_gets(buf);
}
progress(activity, 5, 5);
#ifndef __CYGWIN__
示例11: if
void
GrdPlugin::findMinMaxandGenerateHistogram()
{
float rSize;
float rMin;
m_histogram.clear();
if (m_voxelType == _UChar ||
m_voxelType == _Char)
{
if (m_voxelType == _UChar) rMin = 0;
if (m_voxelType == _Char) rMin = -127;
rSize = 255;
for(uint i=0; i<256; i++)
m_histogram.append(0);
}
else if (m_voxelType == _UShort ||
m_voxelType == _Short)
{
if (m_voxelType == _UShort) rMin = 0;
if (m_voxelType == _Short) rMin = -32767;
rSize = 65535;
for(uint i=0; i<65536; i++)
m_histogram.append(0);
}
else
{
QMessageBox::information(0, "Error", "Why am i here ???");
return;
}
// //==================
// // do not calculate histogram
// if (m_voxelType == _UChar)
// {
// m_rawMin = 0;
// m_rawMax = 255;
// return;
// }
// //==================
int nbytes = m_width*m_height*m_bytesPerVoxel;
uchar *tmp = new uchar[nbytes];
m_rawMin = 10000000;
m_rawMax = -10000000;
QProgressDialog progress("Generating Histogram",
0,
0, 100,
0);
progress.setMinimumDuration(0);
for(uint i=0; i<m_depth; i++)
{
progress.setValue((int)(100.0*(float)i/(float)m_depth));
qApp->processEvents();
//----------------------------
QFile fin(m_imageList[i]);
fin.open(QFile::ReadOnly);
fin.seek(m_headerBytes);
fin.read((char*)tmp, nbytes);
fin.close();
//----------------------------
if (m_voxelType == _UChar)
{
uchar *ptr = tmp;
MINMAXANDHISTOGRAM();
}
else if (m_voxelType == _Char)
{
char *ptr = (char*) tmp;
MINMAXANDHISTOGRAM();
}
if (m_voxelType == _UShort)
{
ushort *ptr = (ushort*) tmp;
MINMAXANDHISTOGRAM();
}
else if (m_voxelType == _Short)
{
short *ptr = (short*) tmp;
MINMAXANDHISTOGRAM();
}
else if (m_voxelType == _Int)
{
int *ptr = (int*) tmp;
MINMAXANDHISTOGRAM();
}
else if (m_voxelType == _Float)
{
float *ptr = (float*) tmp;
MINMAXANDHISTOGRAM();
}
}
delete [] tmp;
// while(m_histogram.last() == 0)
//.........这里部分代码省略.........
示例12: updateStateMachine
void KeyframeAnimation::animate(CompositeAnimation* animation, RenderObject* renderer, const RenderStyle* currentStyle,
const RenderStyle* targetStyle, RefPtr<RenderStyle>& animatedStyle)
{
// If we have not yet started, we will not have a valid start time, so just start the animation if needed.
if (isNew() && m_animation->playState() == AnimPlayStatePlaying)
updateStateMachine(AnimationStateInputStartAnimation, -1);
// If we get this far and the animation is done, it means we are cleaning up a just finished animation.
// If so, we need to send back the targetStyle.
if (postActive()) {
if (!animatedStyle)
animatedStyle = const_cast<RenderStyle*>(targetStyle);
return;
}
// If we are waiting for the start timer, we don't want to change the style yet.
// Special case - if the delay time is 0, then we do want to set the first frame of the
// animation right away. This avoids a flash when the animation starts.
if (waitingToStart() && m_animation->delay() > 0)
return;
// FIXME: we need to be more efficient about determining which keyframes we are animating between.
// We should cache the last pair or something.
// Find the first key
double elapsedTime = (m_startTime > 0) ? ((!paused() ? currentTime() : m_pauseTime) - m_startTime) : 0;
if (elapsedTime < 0)
elapsedTime = 0;
double t = m_animation->duration() ? (elapsedTime / m_animation->duration()) : 1;
int i = static_cast<int>(t);
t -= i;
if (m_animation->direction() && (i & 1))
t = 1 - t;
const RenderStyle* fromStyle = 0;
const RenderStyle* toStyle = 0;
double scale = 1;
double offset = 0;
Vector<KeyframeValue>::const_iterator endKeyframes = m_keyframes.endKeyframes();
for (Vector<KeyframeValue>::const_iterator it = m_keyframes.beginKeyframes(); it != endKeyframes; ++it) {
if (t < it->key()) {
// The first key should always be 0, so we should never succeed on the first key
if (!fromStyle)
break;
scale = 1.0 / (it->key() - offset);
toStyle = it->style();
break;
}
offset = it->key();
fromStyle = it->style();
}
// If either style is 0 we have an invalid case, just stop the animation.
if (!fromStyle || !toStyle) {
updateStateMachine(AnimationStateInputEndAnimation, -1);
return;
}
// Run a cycle of animation.
// We know we will need a new render style, so make one if needed.
if (!animatedStyle)
animatedStyle = RenderStyle::clone(targetStyle);
const TimingFunction* timingFunction = 0;
if (fromStyle->animations() && fromStyle->animations()->size() > 0)
timingFunction = &(fromStyle->animations()->animation(0)->timingFunction());
double prog = progress(scale, offset, timingFunction);
HashSet<int>::const_iterator endProperties = m_keyframes.endProperties();
for (HashSet<int>::const_iterator it = m_keyframes.beginProperties(); it != endProperties; ++it) {
if (blendProperties(this, *it, animatedStyle.get(), fromStyle, toStyle, prog))
setAnimating();
}
}
示例13: progress
void ConfigureDiveComputer::progressEvent(int percent)
{
emit progress(percent);
}
示例14: folderDiscovered
void SyncEngine::slotDiscoveryJobFinished(int discoveryResult)
{
// To clean the progress info
emit folderDiscovered(false, QString());
if (discoveryResult < 0 ) {
handleSyncError(_csync_ctx, "csync_update");
return;
}
qDebug() << "<<#### Discovery end #################################################### " << _stopWatch.addLapTime(QLatin1String("Discovery Finished"));
// Sanity check
if (!_journal->isConnected()) {
qDebug() << "Bailing out, DB failure";
emit csyncError(tr("Cannot open the sync journal"));
finalize();
return;
} else {
// Commits a possibly existing (should not though) transaction and starts a new one for the propagate phase
_journal->commitIfNeededAndStartNewTransaction("Post discovery");
}
if( csync_reconcile(_csync_ctx) < 0 ) {
handleSyncError(_csync_ctx, "csync_reconcile");
return;
}
_stopWatch.addLapTime(QLatin1String("Reconcile Finished"));
_progressInfo = Progress::Info();
_hasNoneFiles = false;
_hasRemoveFile = false;
bool walkOk = true;
_seenFiles.clear();
if( csync_walk_local_tree(_csync_ctx, &treewalkLocal, 0) < 0 ) {
qDebug() << "Error in local treewalk.";
walkOk = false;
}
if( walkOk && csync_walk_remote_tree(_csync_ctx, &treewalkRemote, 0) < 0 ) {
qDebug() << "Error in remote treewalk.";
}
if (_csync_ctx->remote.root_perms) {
_remotePerms[QLatin1String("")] = _csync_ctx->remote.root_perms;
qDebug() << "Permissions of the root folder: " << _remotePerms[QLatin1String("")];
}
// The map was used for merging trees, convert it to a list:
_syncedItems = _syncItemMap.values().toVector();
// Adjust the paths for the renames.
for (SyncFileItemVector::iterator it = _syncedItems.begin();
it != _syncedItems.end(); ++it) {
it->_file = adjustRenamedPath(it->_file);
}
// Sort items per destination
std::sort(_syncedItems.begin(), _syncedItems.end());
// make sure everything is allowed
checkForPermission();
// To announce the beginning of the sync
emit aboutToPropagate(_syncedItems);
_progressInfo._completedFileCount = ULLONG_MAX; // indicate the start with max
emit transmissionProgress(_progressInfo);
_progressInfo._completedFileCount = 0;
if (!_hasNoneFiles && _hasRemoveFile) {
qDebug() << Q_FUNC_INFO << "All the files are going to be changed, asking the user";
bool cancel = false;
emit aboutToRemoveAllFiles(_syncedItems.first()._direction, &cancel);
if (cancel) {
qDebug() << Q_FUNC_INFO << "Abort sync";
finalize();
return;
}
}
ne_session_s *session = 0;
// that call to set property actually is a get which will return the session
csync_set_module_property(_csync_ctx, "get_dav_session", &session);
Q_ASSERT(session);
// post update phase script: allow to tweak stuff by a custom script in debug mode.
if( !qgetenv("OWNCLOUD_POST_UPDATE_SCRIPT").isEmpty() ) {
#ifndef NDEBUG
QString script = qgetenv("OWNCLOUD_POST_UPDATE_SCRIPT");
qDebug() << "OOO => Post Update Script: " << script;
QProcess::execute(script.toUtf8());
#else
qDebug() << "**** Attention: POST_UPDATE_SCRIPT installed, but not executed because compiled with NDEBUG";
#endif
}
// do a database commit
_journal->commit("post treewalk");
//.........这里部分代码省略.........
示例15: printf
// Scene Methods
void Scene::Render() {
/*if(!Spectrum::SpectrumTest())
{
printf("FAILED spectrum unit test. NO rendering allowed.\n");
return;
}else{
printf("PASSED spectrum unit test. YES!\n");
}*/
// Allocate and initialize _sample_
Sample *sample = new Sample(surfaceIntegrator,
volumeIntegrator,
this);
// Allow integrators to do pre-processing for the scene
surfaceIntegrator->Preprocess(this);
volumeIntegrator->Preprocess(this);
camera->AutoFocus(this);
// Trace rays: The main loop
ProgressReporter progress(sampler->TotalSamples(), "Rendering");
while (sampler->GetNextSample(sample)) {
// Find camera ray for _sample_
RayDifferential ray;
float rayWeight = camera->GenerateRay(*sample, &ray);
// Generate ray differentials for camera ray
++(sample->imageX);
float wt1 = camera->GenerateRay(*sample, &ray.rx);
--(sample->imageX);
++(sample->imageY);
float wt2 = camera->GenerateRay(*sample, &ray.ry);
if (wt1 > 0 && wt2 > 0) ray.hasDifferentials = true;
--(sample->imageY);
// Evaluate radiance along camera ray
float alpha = 1.f;//initialized to count rayWeight 0 as opaque black
Spectrum Ls = 0.f;
if (rayWeight > 0.f)
{
Ls = rayWeight * Li(ray, sample, &alpha);
// Ls = Li(ray, sample, &alpha);
//printf("Li Value: ");
//Ls.printSelf();
}
// Issue warning if unexpected radiance value returned
if (Ls.IsNaN()) {
Error("Not-a-number radiance value returned "
"for image sample. Setting to black.");
Ls = Spectrum(0.f);
//printf("NAN ALERT\n");
}
else if (Ls.y() < -1e-5) {
Error("Negative luminance value, %g, returned "
"for image sample. Setting to black.", Ls.y());
Ls = Spectrum(0.f);
//printf("NEGATIVE LUMINANCE ALERT\n");
}
else if (isinf(Ls.y())) {
Error("Infinite luminance value returned "
"for image sample. Setting to black.");
Ls = Spectrum(0.f);
//printf("INFINITE LUMINANCE ALERT\n");
}
// Add sample contribution to image
camera->film->AddSample(*sample, ray, Ls, alpha);
// Free BSDF memory from computing image sample value
BSDF::FreeAll();
// Report rendering progress
static StatsCounter cameraRaysTraced("Camera", "Camera Rays Traced");
++cameraRaysTraced;
progress.Update();
}
// Clean up after rendering and store final image
delete sample;
progress.Done();
camera->film->WriteImage();
}