| 1046 | |
| 1047 | return; |
| 1048 | } |
| 1049 | |
| 1050 | void drawLegend_fill( std::stringstream &Content, const int nbfill, const double df, |
| 1051 | const int prec, const KNM<double> &palette, |
| 1052 | const double fmin, const double fmax, |
| 1053 | const bool monochrome, const bool logscale, |
| 1054 | const double sizex, const double textfontsize, |
| 1055 | const double scale, const double y1, const double y0, |
| 1056 | const double marginl, const double marginb ) |
| 1057 | { |
| 1058 | std::stringstream &st = Content; |
| 1059 | st << "q\n"; |
| 1060 | st << "1 w\n"; // setlinewidth |
| 1061 | st << "1 0 0 1 " << PLOTPDFVAR::PADDING+marginl << " " << PLOTPDFVAR::PADDING+marginb << " cm\n"; |
| 1062 | |
| 1063 | const double dy = scale*(y1-y0)/nbfill; |
| 1064 | |
| 1065 | for(int m = 0; m < nbfill; m++){ |
| 1066 | |
| 1067 | if( m == 0 ){ |
| 1068 | setrgbcolor(st, fmin, palette, fmin, fmax, monochrome, logscale); |
| 1069 | } else if( m == nbfill-1 ){ |
| 1070 | setrgbcolor(st, fmax, palette, fmin, fmax, monochrome, logscale); |
| 1071 | } else { |
| 1072 | const double f = (logscale)? fmin * pow(df,m+0.5): fmin + (m+0.5)*df; |
| 1073 | setrgbcolor(st, f, palette, fmin, fmax, monochrome, logscale); |
| 1074 | } |
| 1075 | st << "rg\n"; |
| 1076 | |
| 1077 | st << sizex-PLOTPDFVAR::PADDING << " " << m*dy << " m " |
| 1078 | << sizex-PLOTPDFVAR::PADDING/2 << " " << m*dy << " l " |
| 1079 | << sizex-PLOTPDFVAR::PADDING/2 << " " << (m+1)*dy << " l " |
| 1080 | << sizex-PLOTPDFVAR::PADDING << " " << (m+1)*dy << " l f\n"; |
| 1081 | } |
| 1082 | |
| 1083 | const double EPS = 1e-10; |
| 1084 | const double dl = (logscale)? |
| 1085 | pow( fmax/fmin, static_cast<double>(1)/(PLOTPDFVAR::NUM_LABELS-1) ): |
| 1086 | (fmax-fmin)/(PLOTPDFVAR::NUM_LABELS-1); |
| 1087 | |
| 1088 | for(int m = 0; m < PLOTPDFVAR::NUM_LABELS; m++){ |
| 1089 | |
| 1090 | const double f = (logscale)? fmin * pow(dl,m): fmin + m*dl; |
| 1091 | |
| 1092 | if( logscale ){ |
| 1093 | |
| 1094 | if( f <= fmin*df ){ |
| 1095 | setrgbcolor(st, fmin, palette, fmin, fmax, monochrome, logscale); |
| 1096 | } else if( f >= fmax/df ){ |
| 1097 | setrgbcolor(st, fmax, palette, fmin, fmax, monochrome, logscale); |
| 1098 | } else { |
| 1099 | const double dc = pow( fmax/fmin, static_cast<double>(1)/nbfill ); |
| 1100 | const int mc = static_cast<int>( log(f/fmin) / log(dc) ); |
| 1101 | const double c = fmin * pow(dc, mc+0.5); |
| 1102 | setrgbcolor(st, c, palette, fmin, fmax, monochrome, logscale); |
| 1103 | } |
| 1104 | |
| 1105 | } else { |
no test coverage detected