diff --git a/contrib/mobile/drawContext.cpp b/contrib/mobile/drawContext.cpp index 7163dc3454dc566a6c1acbdc773d8e8049b7d72d..1eeffe7ad2e2a22ed254f0c6dd0bbc43fba623b0 100644 --- a/contrib/mobile/drawContext.cpp +++ b/contrib/mobile/drawContext.cpp @@ -491,19 +491,54 @@ void drawContext::drawScale() glDisableClientState(GL_VERTEX_ARRAY); char label[1024]; + int nt = data->getNumTimeSteps(); - if((opt->showTime == 1 && nt > 1) || opt->showTime == 2){ - char tmp[256]; - sprintf(tmp, opt->format.c_str(), data->getTime(opt->timeStep)); - sprintf(label, "%s (%s)", data->getName().c_str(), tmp); - } - else if((opt->showTime == 3 && nt > 1) || opt->showTime == 4){ - sprintf(label, "%s (%d/%d)", data->getName().c_str(), opt->timeStep, - data->getNumTimeSteps() - 1); + int n0 = data->getFirstNonEmptyTimeStep(); + int n = (nt - n0 > 0) ? nt - n0 : 1; + char time[256]; + sprintf(time, opt->format.c_str(), data->getTime(opt->timeStep)); + int choice = opt->showTime; + if(choice == 3){ // automatic + if(n == 1) choice = 0; // nothing + else if(n == 2) choice = 2; // harmonic + else choice = 5; // multi-step data } - else{ + switch(choice){ + case 1: // time series + sprintf(label, "%s - time %s", data->getName().c_str(), time); + break; + case 2: // harmonic data + if(n <= 2) + sprintf(label, "%s - %s part", data->getName().c_str(), + ((opt->timeStep - n0) % 2) ? "imaginary" : "real"); + else + sprintf(label, "%s - harmonic %s (%s part)", + data->getName().c_str(), time, + ((opt->timeStep - n0) % 2) ? "imaginary" : "real"); + break; + case 3: // automatic + // never here + break; + case 4: // step data + sprintf(label, "%s - step %d", data->getName().c_str(), opt->timeStep); + break; + case 5: // multi-step data + sprintf(label, "%s - step %d in [0,%d]", data->getName().c_str(), + opt->timeStep, data->getNumTimeSteps() - 1); + break; + case 6: // real eigenvalues + sprintf(label, "%s - eigenvalue %s", data->getName().c_str(), + time); + break; + case 7: // complex eigenvalues + sprintf(label, "%s - eigenvalue %s (%s part)", data->getName().c_str(), + time, ((opt->timeStep - n0) % 2) ? "imaginary" : "real"); + break; + default: sprintf(label, "%s", data->getName().c_str()); + break; } + drawString lbl(label, 20 * _fontFactor); lbl.draw(xmin + width / 2, ymin + 2.8 * dh, 0., _width/(_right-_left), _height/(_top-_bottom));