Files
geant4/source/externals/g4tools/include/tools/offscreen/sg_viewer
T
2022-12-09 14:43:28 +01:00

124 lines
3.8 KiB
Plaintext

// Copyright (C) 2010, Guy Barrand. All rights reserved.
// See the file tools.license for terms.
#ifndef tools_offscreen_sg_viewer
#define tools_offscreen_sg_viewer
#include "session"
#include "../sg/viewer"
#include "../sg/zb_manager"
#include "../sg/gl2ps_manager"
#include "../sg/write_paper"
namespace tools {namespace sg {class device_interactor;}}
namespace tools {
namespace offscreen {
class sg_viewer : public sg::viewer, public offscreen::viewer {
typedef sg::viewer parent;
protected:
virtual void render() {write_paper();}
public:
sg_viewer(session& a_session,
int /*a_x*/ = 0,int /*a_y*/ = 0,
unsigned int a_width = 500,unsigned int a_height = 500,
const std::string& /*a_win_title*/ = "")
:parent(a_session.out(),a_width,a_height)
,m_session(a_session)
,m_file_format("zb_ps")
,m_file_name("out_zb.ps")
,m_png_writer(0)
,m_jpeg_writer(0)
,m_do_transparency(true)
,m_top_to_bottom(true)
{}
virtual ~sg_viewer() {}
protected:
sg_viewer(const sg_viewer& a_from)
:parent(a_from)
,offscreen::viewer(a_from)
,m_session(a_from.m_session)
,m_zb_mgr(a_from.m_zb_mgr)
,m_gl2ps_mgr(a_from.m_gl2ps_mgr)
,m_file_format(a_from.m_file_format)
,m_file_name(a_from.m_file_name)
,m_png_writer(a_from.m_png_writer)
,m_jpeg_writer(a_from.m_jpeg_writer)
,m_do_transparency(a_from.m_do_transparency)
,m_top_to_bottom(a_from.m_top_to_bottom)
,m_opts_1(a_from.m_opts_1)
,m_opts_2(a_from.m_opts_2)
{}
sg_viewer& operator=(const sg_viewer& a_from){
parent::operator=(a_from);
m_file_format = a_from.m_file_format;
m_file_name = a_from.m_file_name;
m_png_writer = a_from.m_png_writer;
m_jpeg_writer = a_from.m_jpeg_writer;
m_do_transparency = a_from.m_do_transparency;
m_top_to_bottom = a_from.m_top_to_bottom;
m_opts_1 = a_from.m_opts_1;
m_opts_2 = a_from.m_opts_2;
return *this;
}
public:
bool has_window() const {return true;}
bool show() {
m_session.to_render(this);
return true;
}
void win_render() {
m_session.to_render(this);
}
void set_device_interactor(sg::device_interactor*) {}
public:
void set_file_format(const std::string& a_file_format) {m_file_format = a_file_format;}
void set_file_name(const std::string& a_file_name) {m_file_name = a_file_name;}
const std::string& file_format() const {return m_file_format;}
const std::string& file_name() const {return m_file_name;}
void set_png_writer(sg::png_writer a_png_writer) {m_png_writer = a_png_writer;}
void set_jpeg_writer(sg::jpeg_writer a_jpeg_writer) {m_jpeg_writer = a_jpeg_writer;}
void set_do_transparency(bool a_do_transparency) {m_do_transparency = a_do_transparency;}
void set_top_to_bottom(bool a_top_to_bottom) {m_top_to_bottom = a_top_to_bottom;}
void set_opts_1(const std::string& a_opts) {m_opts_1 = a_opts;}
void set_opts_2(const std::string& a_opts) {m_opts_2 = a_opts;}
bool write_paper() {
if(!m_ww) return false;
if(!m_wh) return false;
return sg::write_paper(m_out,m_gl2ps_mgr,m_zb_mgr,
m_png_writer,m_jpeg_writer,
m_clear_color.r(),
m_clear_color.g(),
m_clear_color.b(),
m_clear_color.a(),
m_sg,m_ww,m_wh,
m_file_name,m_file_format,
m_do_transparency,m_top_to_bottom,
m_opts_1,m_opts_2);
}
protected:
session& m_session;
sg::zb_manager m_zb_mgr;
sg::gl2ps_manager m_gl2ps_mgr;
std::string m_file_format;
std::string m_file_name;
sg::png_writer m_png_writer;
sg::jpeg_writer m_jpeg_writer;
bool m_do_transparency;
bool m_top_to_bottom;
std::string m_opts_1;
std::string m_opts_2;
};
}}
#endif