⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 masterpart.h

📁 光滑质点无网格法SPH并行计算程序
💻 H
字号:
//      ___                       ___           ___           ___       ___     //     /\__\          ___        /\__\         /\  \         /\__\     /\  \.   //    /::|  |        /\  \      /::|  |       /::\  \       /:/  /    /::\  \.  //   /:|:|  |        \:\  \    /:|:|  |      /:/\:\  \     /:/  /    /:/\:\  \. //  /:/|:|__|__      /::\__\  /:/|:|  |__   /:/  \:\  \   /:/  /    /::\~\:\  \.// /:/ |::::\__\  __/:/\/__/ /:/ |:| /\__\ /:/__/_\:\__\ /:/__/    /:/\:\ \:\__\.// \/__/~~/:/  / /\/:/  /    \/__|:|/:/  / \:\  /\ \/__/ \:\  \    \:\~\:\ \/__///       /:/  /  \::/__/         |:/:/  /   \:\ \:\__\    \:\  \    \:\ \:\__\. //      /:/  /    \:\__\         |::/  /     \:\/:/  /     \:\  \    \:\ \/__/  //     /:/  /      \/__/         /:/  /       \::/  /       \:\__\    \:\__\.   //     \/__/                     \/__/         \/__/         \/__/     \/__/    // // =============================================================================//                       Minimalist OpenGL Environment//                       Parallel Rendering Extension// =============================================================================//// Copyright 2007 Balazs Domonkos// // This program is free software; you can redistribute it and/or// modify it under the terms of the GNU General Public License// as published by the Free Software Foundation; either version 2// of the License, or (at your option) any later version.// // This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// // You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA./// @file MasterPart.h/// ParaComp master part window proxy#ifndef __MINGLE_PARALLEL_PARACOMP_MASTERPART_H__#define __MINGLE_PARALLEL_PARACOMP_MASTERPART_H__// Include class definitions#include <parallel-classes.h>#include <paracomp/include/Part.h>#include <string>#include <vector>#if MINGLE_PARACOMP_SUPPORT == 1namespace MinGLE {	class ParaCompMasterPart : public ParaCompPart {		protected:			std::vector<std::string> mHostList;			EventCollector *mEventCollector;			EventQueueWindowProxy *mEventQueueWindowProxy;			    public:	    	ParaCompMasterPart(Window *window, std::vector<std::string> hostlist, ParaCompSupport *support, ParallelRenderingSupport::CompositingOperator compositingOperator);	    	virtual ~ParaCompMasterPart();	    	virtual void createContext();	    				// Override render method    		inline virtual bool onRender() {                // Update size of the global context based on the master window                pcContextSetInteger(mContext, PC_FRAME_WIDTH, /*PC_MASTER_INDEX*/ 0, mWindow->getWidth());                pcContextSetInteger(mContext, PC_FRAME_HEIGHT, /*PC_MASTER_INDEX*/ 0, mWindow->getHeight());				//printf("global frame size: %d %d\n", mWindow->getWidth(), mWindow->getHeight());				// Get the full output                pcContextSetInteger(mContext, PC_OUTPUT_X_OFFSET, PC_MASTER_INDEX, 0);                pcContextSetInteger(mContext, PC_OUTPUT_Y_OFFSET, PC_MASTER_INDEX, 0);                pcContextSetInteger(mContext, PC_OUTPUT_WIDTH, PC_MASTER_INDEX, mWindow->getWidth());                pcContextSetInteger(mContext, PC_OUTPUT_HEIGHT, PC_MASTER_INDEX, mWindow->getHeight());    	    	// Contributepixels and retrieve output    	    	pixelTransfer();				// Inject events after rendering a frame     			mEventQueueWindowProxy->getEventInjector()->injectQueuedEvents();								return false;    		}	    	    		inline virtual bool onKeyEvent(int key, unsigned modifiers, KeyEventState state) {				// Send the event to the slave parts				mEventCollector->getEventSerializer()->serializeKeyEvent(key, modifiers, state);				mEventCollector->sendEvent();				// Fullfill request on this host				mEventQueueWindowProxy->getEventInjector()->addEventToQueue((const WindowListener::WindowEvent *) mEventCollector->getEventSerializer()->getData());				return false;    		}	    	    		inline virtual bool onMouseButtonEvent(int x, int y, InputListener::MouseButton button, InputListener::MouseEventState state) {				// Send the event to the slave parts				mEventCollector->getEventSerializer()->serializeMouseButtonEvent(x, y, button, state);				mEventCollector->sendEvent();				// Fullfill request on this host				mEventQueueWindowProxy->getEventInjector()->addEventToQueue((const WindowListener::WindowEvent *) mEventCollector->getEventSerializer()->getData());				return false;    		}	    		    	inline virtual bool onMouseMoveEvent(int x, int y, InputListener::MouseMoveState state) {				// Send the event to the slave parts				mEventCollector->getEventSerializer()->serializeMouseMoveEvent(x, y, state);				mEventCollector->sendEvent();				// Fullfill request on this host				mEventQueueWindowProxy->getEventInjector()->addEventToQueue((const WindowListener::WindowEvent *) mEventCollector->getEventSerializer()->getData());				return false;	    	}    		inline virtual bool onMouseMoveEvent(InputListener::MouseMoveState state) {				// Send the event to the slave parts				// TODO: should provide invalid mouse coordinates				mEventCollector->getEventSerializer()->serializeMouseMoveEvent(-1, -1, state);				mEventCollector->sendEvent();				// Fullfill request on this host				mEventQueueWindowProxy->getEventInjector()->addEventToQueue((const WindowListener::WindowEvent *) mEventCollector->getEventSerializer()->getData());				return false;    		}    		inline virtual bool onMouseWheelEvent(int x, int y, int delta) {				// Send the event to the slave parts				mEventCollector->getEventSerializer()->serializeMouseWheelEvent(x, y, delta);				mEventCollector->sendEvent();				// Fullfill request on this host				mEventQueueWindowProxy->getEventInjector()->addEventToQueue((const WindowListener::WindowEvent *) mEventCollector->getEventSerializer()->getData());				return false;    		}	    	    		inline virtual void _registerKeyboardEvent(int key, InputListener::KeyEventState state) {				// Send the event to the slave parts				mEventCollector->getEventSerializer()->serializeRegisterKeyboardEvent(key, state);				mEventCollector->sendEvent();				// Fullfill request on this host				mEventQueueWindowProxy->getEventInjector()->addEventToQueue((const WindowListener::WindowEvent *) mEventCollector->getEventSerializer()->getData());    		}    		    		inline virtual void _registerKeyboardModifierEvent(unsigned modifiers) {				// Send the event to the slave parts				mEventCollector->getEventSerializer()->serializeRegisterKeyboardModifierEvent(modifiers);				mEventCollector->sendEvent();				// Fullfill request on this host				mEventQueueWindowProxy->getEventInjector()->addEventToQueue((const WindowListener::WindowEvent *) mEventCollector->getEventSerializer()->getData());    		}    		    		inline virtual void _registerMouseMoveEvent(int x, int y) {				// Send the event to the slave parts				mEventCollector->getEventSerializer()->serializeRegisterMouseMoveEvent(x, y);				mEventCollector->sendEvent();				// Fullfill request on this host				mEventQueueWindowProxy->getEventInjector()->addEventToQueue((const WindowListener::WindowEvent *) mEventCollector->getEventSerializer()->getData());    		}    		    		inline virtual void _registerMouseButtonEvent(InputListener::MouseButton button, InputListener::MouseEventState state) {				// Send the event to the slave parts				mEventCollector->getEventSerializer()->serializeRegisterMouseButtonEvent(button, state);				mEventCollector->sendEvent();				// Fullfill request on this host				mEventQueueWindowProxy->getEventInjector()->addEventToQueue((const WindowListener::WindowEvent *) mEventCollector->getEventSerializer()->getData());    		}    		    		inline virtual void _registerMouseWheelEvent(int delta) {				// Send the event to the slave parts				mEventCollector->getEventSerializer()->serializeRegisterMouseWheelEvent(delta);				mEventCollector->sendEvent();				// Fullfill request on this host				mEventQueueWindowProxy->getEventInjector()->addEventToQueue((const WindowListener::WindowEvent *) mEventCollector->getEventSerializer()->getData());    		}	    	    		inline virtual bool onResize(unsigned width, unsigned height) { 				// Send the event to the slave parts				mEventCollector->getEventSerializer()->serializeResizeEvent(width, height);				mEventCollector->sendEvent();				// Fullfill request on this host				//mEventQueueWindowProxy->getEventInjector()->addEventToQueue((const WindowListener::WindowEvent *) mEventCollector->getEventSerializer()->getData());				_doResize(width, height);				return false;    		}    		inline virtual bool onReposition(int left, int top) { 				// Send the event to the slave parts				mEventCollector->getEventSerializer()->serializeRepositionEvent(left, top);				mEventCollector->sendEvent();				// Fullfill request on this host				//mEventQueueWindowProxy->getEventInjector()->addEventToQueue((const WindowListener::WindowEvent *) mEventCollector->getEventSerializer()->getData());				_doReposition(left, top);				return false;    		}    		inline virtual bool onShow() {    			// TODO    			 				// Fullfill request on this host				_doShow();				return false;    		}    		inline virtual bool onHide() {     			// TODO				// Fullfill request on this host				_doHide();				return false;    		}	    		    protected:	    	char **_getHostListC();	};}#endif // MINGLE_PARACOMP_SUPPORT == 1#endif // __MINGLE_PARALLEL_PARACOMP_MASTERPART_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -