MCPcopy Create free account
hub / github.com/FreeFem/FreeFem-sources / drawLegend_fill

Function drawLegend_fill

plugin/seq/plotPDF.cpp:1048–1134  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1046
1047 return;
1048}
1049
1050void 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 {

Callers 4

plot_P1_fillFunction · 0.85
plot_P0_fillFunction · 0.85
plot_P2_fillFunction · 0.85
plot_vector2flowFunction · 0.85

Calls 4

setrgbcolorFunction · 0.85
powFunction · 0.50
logFunction · 0.50
fabsFunction · 0.50

Tested by

no test coverage detected