34 #if defined(TOOLS_USE_FREETYPE)
35 #include <tools/sg/text_freetype>
36 #include <tools/xml/xml_style>
37 #include <tools/xml/wrap_viewplot_style>
44 void HD_style(tools::sg::plots& a_plots,
float a_line_width) {
45 std::vector<tools::sg::plotter*> plotters;
46 a_plots.plotters(plotters);
47 tools_vforcit(tools::sg::plotter*,plotters,it) {
48 tools::sg::plotter* _plotter = *it;
49 _plotter->bins_style(0).line_width = a_line_width;
50 _plotter->inner_frame_style().line_width = a_line_width;
51 _plotter->grid_style().line_width = a_line_width;
52 _plotter->x_axis().line_style().width = a_line_width;
53 _plotter->x_axis().ticks_style().width = a_line_width;
54 _plotter->y_axis().line_style().width = a_line_width;
55 _plotter->y_axis().ticks_style().width = a_line_width;
56 _plotter->z_axis().line_style().width = a_line_width;
57 _plotter->z_axis().ticks_style().width = a_line_width;
60 _plotter->title_style().line_width = a_line_width;
61 _plotter->infos_style().line_width = a_line_width;
62 _plotter->title_box_style().line_width = a_line_width;
64 _plotter->x_axis().labels_style().line_width = a_line_width;
65 _plotter->x_axis().mag_style().line_width = a_line_width;
66 _plotter->x_axis().title_style().line_width = a_line_width;
68 _plotter->y_axis().labels_style().line_width = a_line_width;
69 _plotter->y_axis().mag_style().line_width = a_line_width;
70 _plotter->y_axis().title_style().line_width = a_line_width;
72 _plotter->z_axis().labels_style().line_width = a_line_width;
73 _plotter->z_axis().mag_style().line_width = a_line_width;
74 _plotter->z_axis().title_style().line_width = a_line_width;
80 void regions_style(tools::sg::plots& a_plots,
float a_plotter_scale = 1) {
86 float ww_wc = a_plots.width;
87 float wh_wc = a_plots.height;
88 float rw_wc = ww_wc/a_plots.cols;
89 float rh_wc = wh_wc/a_plots.rows;
93 float wfac = (rw_wc/ww_wc)*cooking;
94 float hfac = (rh_wc/wh_wc)*cooking;
96 float label_cooking = 1.6f;
98 if((a_plots.cols.value()>=4)&&(a_plots.cols.value()>a_plots.rows.value())) label_cooking = 0.9f;
100 float title_cooking = 1.1f;
102 a_plots.plotter_scale = a_plotter_scale;
104 std::vector<tools::sg::plotter*> plotters;
105 a_plots.plotters(plotters);
106 tools_vforcit(tools::sg::plotter*,plotters,it) {
107 tools::sg::plotter* _plotter = *it;
109 _plotter->left_margin = _plotter->left_margin * wfac;
110 _plotter->right_margin = _plotter->right_margin * wfac;
111 _plotter->bottom_margin = _plotter->bottom_margin * hfac;
112 _plotter->top_margin = _plotter->top_margin * hfac;
114 _plotter->x_axis().tick_length = _plotter->x_axis().tick_length * wfac;
115 _plotter->y_axis().tick_length = _plotter->y_axis().tick_length * hfac;
117 _plotter->title_to_axis = _plotter->title_to_axis * hfac;
118 _plotter->title_height = _plotter->title_height * hfac * title_cooking;
120 _plotter->x_axis().label_height = _plotter->x_axis().label_height * hfac * label_cooking;
121 _plotter->y_axis().label_height = _plotter->y_axis().label_height * hfac * label_cooking;
128 bool load_embeded_styles(tools::xml::styles& a_styles) {
131 const char** lines = viewplot_style(linen);
132 for(
unsigned int index=0;index<linen;index++) {
133 std::string
s = lines[index];
134 tools::replace(s,
"@@double_quote@@",
"\"");
135 tools::replace(s,
"@@back_slash@@",
"\\");
138 return tools::xml::load_style_string(a_styles,ss);
161 #if defined(TOOLS_USE_FREETYPE)
167 G4cout <<
"... using high resolution with Freetype fonts" <<
G4endl;
173 static tools::sg::text_freetype ttf;
174 fViewer.reset(
new tools::viewplot(
G4cout, ttf,
179 fViewer->plots().view_border =
false;
180 load_embeded_styles(fViewer->styles());
181 fViewer->styles().add_colormap(
"default",tools::sg::style_default_colormap());
182 fViewer->styles().add_colormap(
"ROOT",tools::sg::style_ROOT_colormap());
187 G4cout <<
"... using low resolution with Hershey fonts" <<
G4endl;
189 fViewer.reset(
new tools::viewplot(
G4cout,
194 fViewer->plots().view_border =
false;
207 G4bool G4PlotManager::WritePage()
214 #if defined(TOOLS_USE_FREETYPE)
215 HD_style(fViewer->plots(), 5);
216 regions_style(fViewer->plots(), fgPlotParameters.
GetScale());
222 description <<
" " <<
"Cannot write a page in the plot file " << fFileName;
228 fViewer->plots().init_sg();
252 fFileName = fileName;
254 G4bool result = fViewer->open_file(fileName);
257 description <<
" " <<
"Cannot open plot file " << fileName;
278 G4bool result = fViewer->close_file();
281 description <<
" " <<
"Cannot close the plot file.";
G4double G4ParticleHPJENDLHEData::G4double result
void Message(const G4String &action, const G4String &object, const G4String &objectName, G4bool success=true) const
G4PlotManager(const G4AnalysisManagerState &state)
std::ostringstream G4ExceptionDescription
const G4AnalysisVerbose * GetVerboseL3() const
G4GLOB_DLL std::ostream G4cout
const G4AnalysisVerbose * GetVerboseL4() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4bool OpenFile(const G4String &fileName)
const G4AnalysisVerbose * GetVerboseL1() const