Example #1
0
	virtual bool show_config_popup(HWND wnd_parent)
	{
		uie::visualisation_ptr p_vis;
		service_ptr_t<spectrum_extension> p_this;
		get_vis_ptr(p_vis);
		if (p_vis.is_valid())
			p_this = static_cast<spectrum_extension*>(p_vis.get_ptr());

		service_ptr_t<spectrum_extension> p_temp = p_this;
		if (!p_temp.is_valid())
			uie::visualization::create_by_guid(get_visualisation_guid(), reinterpret_cast<uie::visualisation_ptr &>(p_temp));

		pfc::array_t<t_uint8> m_data;
		if (!p_temp->b_active)
		{
			try{
			get_vis_data(m_data);
			p_temp->set_config(&stream_reader_memblock_ref(m_data.get_ptr(), m_data.get_size()),m_data.get_size(),abort_callback_impl());
			}catch (const exception_io &) {};
		}

		spec_param param(p_temp->cr_fore, p_temp->cr_back, p_temp->mode, p_temp->m_scale, p_temp->m_vertical_scale, p_temp.get_ptr(), true, get_frame_style());

		bool rv = !!uDialogBox(IDD_POPUP_SPECTRUM_NEW, wnd_parent, SpectrumPopupProc, (LPARAM)(&param));
		if (rv)
		{
			p_temp->cr_fore = param.cr_fore;
			cfg_vis2 = param.cr_fore;
			p_temp->cr_back = param.cr_back;
			cfg_vis = param.cr_back;
			p_temp->mode = param.mode;
			cfg_vis_mode = param.mode;
			p_temp->m_scale = param.m_scale;
			cfg_scale = param.m_scale;
			p_temp->m_vertical_scale = param.m_vertical_scale;
			cfg_vertical_scale = param.m_vertical_scale;
			set_frame_style(param.frame);
			if (p_temp->b_active)
			{
				p_temp->flush_brushes();
				p_temp->clear();
			}
			else
			{
				m_data.set_size(0);
				try{
				p_temp->get_config(&stream_writer_memblock_ref(m_data), abort_callback_impl());
				set_vis_data(m_data.get_ptr(), m_data.get_size());
				}
				catch (pfc::exception &)
				{};
			}

		}
		return rv;
	}
Example #2
0
void window_visualisation::get_name(pfc::string_base & out)const
{
	uie::visualization_ptr ptr;
	uie::visualization::create_by_guid(get_visualisation_guid(), ptr);
	ptr->get_name(out);
}
Example #3
0
LRESULT window_visualisation::on_message(HWND wnd,UINT msg,WPARAM wp,LPARAM lp)
{
	if(msg == WM_CREATE)
	{
		m_wnd = wnd;
		long flags = WS_EX_CONTROLPARENT;
		if (m_frame == 1) flags |= WS_EX_CLIENTEDGE;
		if (m_frame == 2) flags |= WS_EX_STATICEDGE;
			
		uSetWindowLong(wnd, GWL_EXSTYLE, flags);
		SetWindowPos(wnd,0,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHANGED);

		list_vis.add_item(this);
		initialised = true;

		ui_extension::visualisation::create_by_guid(get_visualisation_guid(), p_vis);
		if (p_vis.is_valid())
		{
			GetClientRect(wnd, &rc_client);
			window_visualisation_interface::g_create(m_interface, this);
			try{
			p_vis->set_config(&stream_reader_memblock_ref(m_data.get_ptr(), m_data.get_size()),m_data.get_size(),abort_callback_impl());
			}catch(const exception_io &){};
			p_vis->enable(ui_extension::visualisation_host_ptr(m_interface.get_ptr()));
		}
	}
	else if (msg == WM_DESTROY)
	{
		if (p_vis.is_valid())
			p_vis->disable();
		flush_bitmap();
		m_interface.release();
		initialised = false;
		list_vis.remove_item(this);
		m_wnd=0;
	}
	else if (msg == WM_PAINT)
	{
		if (p_vis.is_valid())
		{
			RECT rc_paint;
			if (!GetUpdateRect(wnd, &rc_paint, 0))
			{
				rc_paint = rc_client;
			}
			HDC dc = GetDC(wnd);
			HDC dc_bmp = CreateCompatibleDC(0);
			if (!bm_display) make_bitmap(dc);
			HGDIOBJ meh = SelectObject(dc_bmp,bm_display);
			BitBlt(dc,0,0,rc_client.right,rc_client.bottom,dc_bmp,0,0,SRCCOPY);
			SelectObject(dc_bmp,meh);
			DeleteDC(dc_bmp);
			ReleaseDC(wnd, dc);
			ValidateRect(wnd, &rc_paint);
		}
	}
	else if (msg == WM_WINDOWPOSCHANGED)
	{
		LPWINDOWPOS lpwp = (LPWINDOWPOS)lp;
		if (!(lpwp->flags & SWP_NOSIZE))
		{
			GetClientRect(wnd, &rc_client);
			flush_bitmap();
		}
	}
	else if (msg == WM_ERASEBKGND)
	{
		return FALSE;
	}

	return uDefWindowProc(wnd,msg,wp,lp);
}