📄 masterpart.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 + -