Exemplo n.º 1
0
SpectraDocumentFrame::SpectraDocumentFrame(
	SpectraApp& app,
	SpectraMainFrame* parent,
	wxGLContext* parent_ctxt,
	const SpectraDocumentFrame::VisualisationGetter& get_doc_vis,
	const SpectraDocumentFrame::RendererGetter& get_renderer
): wxFrame(
	(wxWindow*)parent,
	wxID_ANY,
	wxGetTranslation(wxT("Opening document")),
	wxDefaultPosition,
	wxDefaultSize
), parent_app(app)
 , main_frame(parent)
 , main_menu(new wxMenuBar())
 , main_panel(
	new wxPanel(
		this,
		wxID_ANY,
		wxDefaultPosition,
		wxDefaultSize
	)
), status_bar(new wxStatusBar(this))
 , parent_context(parent_ctxt)
 , gl_canvas(
	new SpectraDocumentCanvas(
		(wxEvtHandler*)this,
		(wxWindow*)main_panel
	)
), document_vis()
 , renderer()
 , idle_call_count(0)
{
	assert(gl_canvas);

	InitMainMenu();
	InitComponents();
	Show();

	document_vis = get_doc_vis(
		parent_app,
		main_frame,
		gl_canvas,
		parent_context
	);
	assert(document_vis);
	document_vis->AddCanvas(gl_canvas);

	renderer = get_renderer(
		parent_app,
		main_frame,
		document_vis,
		gl_canvas
	);
	assert(renderer);

	document_view.SetMaxTime(document_vis->Document().MaxTime());

	ConnectEventHandlers();

	HandleResize();

	SetTitle(document_vis->Name());
	SetStatus(wxT("TODO: short document info"));
}
Exemplo n.º 2
0
SpectraMainFrame::SpectraMainFrame(SpectraApp& app)
 : wxFrame(
	(wxWindow*)nullptr,
	wxID_ANY,
	wxT("OGLplus Spectra"),
	wxDefaultPosition,
	wxSize(300, 400)
), parent_app(app)
 , main_menu(new wxMenuBar())
 , status_bar(new wxStatusBar(this))
 , gl_canvas(
	new wxGLCanvas(
		(wxWindow*)this,
		wxID_ANY,
		SpectraGLConfig(),
		wxDefaultPosition,
		wxDefaultSize
	)
), gl_context(gl_canvas)
 , gl_api_init()
 , shared_objects()
 , coroutine_exec()
{
	InitMainMenu();
	InitComponents();
	Show();

	coroutine_exec = std::make_shared<SpectraCoroutineExecutor>(
		parent_app,
		this //TODO progress panel + sizer
	);

	SetStatus(wxGetTranslation(wxT("Initializing GL"), wxT("Status")));

	gl_context.SetCurrent(*gl_canvas);
	gl_api_init.reset(new oglplus::GLAPIInitializer());
	gl_canvas->Hide();

	gl_vendor->SetLabel(wxString(
		(const char*)glGetString(GL_VENDOR),
		wxConvUTF8
	));
	gl_renderer->SetLabel(wxString(
		(const char*)glGetString(GL_RENDERER),
		wxConvUTF8
	));
	gl_version->SetLabel(wxString(
		(const char*)glGetString(GL_VERSION),
		wxConvUTF8
	));
	sl_version->SetLabel(wxString(
		(const char*)glGetString(GL_SHADING_LANGUAGE_VERSION),
		wxConvUTF8
	));

	SetStatus(wxGetTranslation(wxT("Creating shared objects"), wxT("Status")));

	shared_objects = std::make_shared<SpectraSharedObjects>(&gl_context, gl_canvas);

	SetStatus(wxGetTranslation(wxT("Ready"), wxT("Status")));

	ConnectEventHandlers();

	SetStatus(wxGetTranslation(wxT("Running"), wxT("Status")));
}