Files
geant4/source/externals/g4tools/include/tools/sg/plotter_some_styles
T
2025-12-05 08:54:02 +01:00

347 lines
12 KiB
Plaintext

// Copyright (C) 2010, Guy Barrand. All rights reserved.
// See the file tools.license for terms.
#ifndef tools_sg_plotter_some_styles
#define tools_sg_plotter_some_styles
// Functions to set some common styles.
// Typically ROOT_default (the default style of ROOT), hippodraw
// or return/reset to the default inlib style.
#include "plotter"
#include "style_colormap"
namespace tools {
namespace sg {
inline bool set_style_color(std::ostream& a_out,const cmaps_t& a_cmaps,const std::string& a_s,colorf& a_col){
if(!find_color(a_cmaps,a_s,a_col)) {
a_out << "tools::sg::set_style_color: color " << sout(a_s) << " not found." << std::endl;
return false;
}
return true;
}
// a_font = font_arialbd_ttf(); //idem ROOT 62.
// a_font = font_roboto_bold_ttf(); //open source replacement for arialbd.
inline void set_style_font(text_style& a_style,const std::string& a_font){
a_style.font = a_font;
a_style.front_face = winding_cw;
a_style.smoothing = true;
}
inline void set_ROOT_default_style(std::ostream& a_out,const cmaps_t& a_cmaps,plotter& a_plotter,const std::string& a_font) {
a_plotter.value_top_margin = 0.05f;
a_plotter.bottom_margin = 0.1f;
a_plotter.top_margin = 0.1f;
a_plotter.left_margin = 0.1f;
a_plotter.right_margin = 0.1f;
{style& _style = a_plotter.background_style();
_style.visible = true;
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.line_width = 0.003; // 0 = no border. In % of width.
}
{style& _style = a_plotter.grid_style();
_style.visible = false;
}
// plot title done with the title_box (and not plotter title):
{text_style& _style = a_plotter.title_style();
_style.visible = false;
}
{text_style& _style = a_plotter.title_box_style();
_style.visible = true;
if(!set_style_color(a_out,a_cmaps,"ROOT/grey19",_style.back_color.value())) {}
_style.back_shadow = 0.015f; //% of width.
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
set_style_font(_style,a_font);}
a_plotter.infos_width = 0.35f;
a_plotter.infos_x_margin = 0.01f; //from right border.
a_plotter.infos_y_margin = 0.005f; //from top border.
{text_style& _style = a_plotter.infos_style();
_style.visible = true;
if(!set_style_color(a_out,a_cmaps,"ROOT/grey19",_style.back_color.value())) {}
_style.back_shadow = 0.015f; //% of width.
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.modeling = infos_modeling_ROOT(); //to have histo name as info title.
set_style_font(_style,a_font);}
{style& _style = a_plotter.inner_frame_style();
_style.visible = true;
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.line_width = 1.0f;
}
//////////////////////////////////////////////////////////
/// x axis: //////////////////////////////////////////////
//////////////////////////////////////////////////////////
{axis& _axis = a_plotter.x_axis();
_axis.modeling = tick_modeling_hplot();
_axis.divisions = 510;
_axis.title_hjust = right;
_axis.label_to_axis = 0.005f;
_axis.label_height = 0.04f;
_axis.tick_length = 0.03f;
_axis.title_to_axis = 0.05f; //YLAB = 0.05
_axis.title_height = 0.04f;
_axis.is_log = false;
{line_style& _style = _axis.line_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.width = 1.0f;}
{line_style& _style = _axis.ticks_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.width = 1.0f;}
{text_style& _style = _axis.labels_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.scale = 0.6; //To have a good matching with ROOT text size.
set_style_font(_style,a_font);}
{text_style& _style = _axis.title_style();
_style.visible = true;
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.scale = 0.6; //To have a good matching with ROOT text size.
set_style_font(_style,a_font);}
{text_style& _style = _axis.mag_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.scale = 0.6; //To have a good matching with ROOT text size.
set_style_font(_style,a_font);}
}
//////////////////////////////////////////////////////////
/// y axis: //////////////////////////////////////////////
//////////////////////////////////////////////////////////
{axis& _axis = a_plotter.y_axis();
_axis.modeling = tick_modeling_hplot();
_axis.divisions = 510;
_axis.title_hjust = right;
_axis.label_to_axis = 0.005f;
_axis.label_height = 0.04f;
_axis.tick_length = 0.03f;
_axis.title_to_axis = 0.07f; //XLAB = 0.07
_axis.title_height = 0.04f;
_axis.is_log = false;
{line_style& _style = _axis.line_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.width = 1.0f;}
{line_style& _style = _axis.ticks_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.width = 1.0f;}
{text_style& _style = _axis.labels_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.scale = 0.6;
set_style_font(_style,a_font);}
{text_style& _style = _axis.title_style();
_style.visible = true;
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.scale = 0.6; //To have a good matching with ROOT text size.
set_style_font(_style,a_font);}
{text_style& _style = _axis.mag_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.scale = 0.6; //To have a good matching with ROOT text size.
set_style_font(_style,a_font);}
}
//////////////////////////////////////////////////////////
/// z axis: //////////////////////////////////////////////
//////////////////////////////////////////////////////////
{axis& _axis = a_plotter.z_axis();
_axis.modeling = tick_modeling_hplot();
_axis.is_log = false;
{line_style& _style = _axis.line_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.width = 1.0f;}
{line_style& _style = _axis.ticks_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.width = 1.0f;}
{text_style& _style = _axis.labels_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.scale = 0.6;}
{text_style& _style = _axis.title_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.scale = 0.6;}
{text_style& _style = _axis.mag_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.scale = 0.6;}
}
//////////////////////////////////////////////////////////
/// colormap axis: ///////////////////////////////////////
//////////////////////////////////////////////////////////
{axis& _axis = a_plotter.colormap_axis();
_axis.modeling = tick_modeling_hplot();
_axis.divisions = 510;
_axis.title_hjust = right;
_axis.label_to_axis = 0.005f;
_axis.label_height = 0.04f;
_axis.tick_length = 0.03f;
_axis.title_to_axis = 0.07f; //XLAB = 0.07
_axis.title_height = 0.04f;
_axis.is_log = false;
{line_style& _style = _axis.line_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.width = 1.0f;}
{line_style& _style = _axis.ticks_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.width = 1.0f;}
{text_style& _style = _axis.labels_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.scale = 0.6; //To have a good matching with ROOT text size.
set_style_font(_style,a_font);}
{text_style& _style = _axis.title_style();
_style.visible = true;
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.scale = 0.6; //To have a good matching with ROOT text size.
set_style_font(_style,a_font);}
{text_style& _style = _axis.mag_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.scale = 0.6; //To have a good matching with ROOT text size.
set_style_font(_style,a_font);}
}
{style& _style = a_plotter.bins_style(0);
_style.modeling = modeling_top_lines();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.line_width = 1.0f;
//_style.line_pattern = line_solid;
}
{style& _style = a_plotter.func_style(0);
_style.modeling = modeling_top_lines();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.line_width = 3.0f;
}
}
inline void set_hippodraw_style(std::ostream& a_out,const cmaps_t& a_cmaps,plotter& a_plotter,const std::string& a_font) {
// In memory of P.Kunz.
a_plotter.value_top_margin = 0.05f;
a_plotter.bottom_margin = 0.12f;
a_plotter.top_margin = 0.16f;
a_plotter.left_margin = 0.16f;
a_plotter.right_margin = 0.16f;
a_plotter.title_to_axis = 0.1f;
a_plotter.title_height = 0.03f;
{style& _style = a_plotter.grid_style();
_style.visible = false;}
{style& _style = a_plotter.inner_frame_style();
_style.visible = true;}
{text_style& _style = a_plotter.infos_style();
_style.visible = false;}
{text_style& _style = a_plotter.title_style();
set_style_font(_style,a_font);
_style.visible = true;}
//////////////////////////////////////////////////////////
/// x axis: //////////////////////////////////////////////
//////////////////////////////////////////////////////////
{axis& _axis = a_plotter.x_axis();
_axis.modeling = tick_modeling_hippo();
_axis.title_hjust = center;
_axis.label_to_axis = 0.015f;
_axis.title_to_axis = 0.07f;
_axis.title_height = 0.035f;
_axis.label_height = 0.02625f; //0.0175F * 1.5F
{text_style& _style = _axis.title_style();
_style.visible = true;
set_style_font(_style,a_font);}
{text_style& _style = _axis.labels_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
set_style_font(_style,a_font);}
}
//////////////////////////////////////////////////////////
/// y axis: //////////////////////////////////////////////
//////////////////////////////////////////////////////////
{axis& _axis = a_plotter.y_axis();
_axis.modeling = tick_modeling_hippo();
_axis.title_hjust = center;
_axis.title_to_axis = 0.2f;
_axis.title_height = 0.035f;
_axis.label_height = 0.02625f; //0.0175F * 1.5F
{text_style& _style = _axis.title_style();
_style.visible = true;
set_style_font(_style,a_font);}
{text_style& _style = _axis.labels_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
set_style_font(_style,a_font);}
}
//////////////////////////////////////////////////////////
/// z axis: //////////////////////////////////////////////
//////////////////////////////////////////////////////////
{axis& _axis = a_plotter.z_axis();
{text_style& _style = _axis.title_style();
_style.visible = true;
set_style_font(_style,a_font);}
{text_style& _style = _axis.labels_style();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
set_style_font(_style,a_font);}
}
{style& _style = a_plotter.bins_style(0);
_style.modeling = modeling_top_lines();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.line_width = 1.0f;
}
{style& _style = a_plotter.func_style(0);
_style.modeling = modeling_top_lines();
if(!set_style_color(a_out,a_cmaps,"black",_style.color.value())) {}
_style.line_width = 1.0f;
}
{style& _style = a_plotter.errors_style(0);
_style.visible = false;
}
}
inline void set_inlib_default_style(std::ostream&,const cmaps_t&,plotter& a_plotter,const std::string&) {
{axis& _axis = a_plotter.colormap_axis();
_axis.label_to_axis = 0.01f;}
}
}}
#endif