StOutIZ3D::StOutIZ3D(const StHandle<StResourceManager>& theResMgr, const StNativeWin_t theParentWindow) : StWindow(theResMgr, theParentWindow), mySettings(new StSettings(theResMgr, ST_OUT_PLUGIN_NAME)), myFrBuffer(new StGLStereoFrameBuffer()), myToCompressMem(myInstancesNb.increment() > 1), myIsBroken(false) { const StSearchMonitors& aMonitors = StWindow::getMonitors(); // detect connected displays int aSupportLevel = ST_DEVICE_SUPPORT_NONE; for(size_t aMonIter = 0; aMonIter < aMonitors.size(); ++aMonIter) { const StMonitor& aMon = aMonitors[aMonIter]; if(isFrontDisplay(aMon.getPnPId()) || isBackDisplay (aMon.getPnPId())) { aSupportLevel = ST_DEVICE_SUPPORT_PREFER; // we sure that iZ3D connected break; }/* else if(aMon.getPnPId() == IZ3D_MODEL_MATROXTH2GO0 || aMon.getPnPId() == IZ3D_MODEL_MATROXTH2GO1) { aSupportLevel = ST_DEVICE_SUPPORT_FULL; // is it possible }*/ } // devices list StHandle<StOutDevice> aDevice = new StOutDevice(); aDevice->PluginId = ST_OUT_PLUGIN_NAME; aDevice->DeviceId = stCString("iZ3D"); aDevice->Priority = aSupportLevel; aDevice->Name = stCString("IZ3D Display"); myDevices.add(aDevice); // shader switch option params.Glasses = new StEnumParam(myShaders.getMode(), stCString("tableId"), stCString("tableId")); params.Glasses->signals.onChanged.connect(&myShaders, &StOutIZ3DShaders::doSetMode); // load window position if(isMovable()) { StRect<int32_t> aRect; if(!mySettings->loadInt32Rect(ST_SETTING_WINDOWPOS, aRect)) { aRect = defaultRect(); } StWindow::setPlacement(aRect, true); } updateStrings(); StWindow::setTitle("sView - iZ3D Renderer"); // load parameters mySettings->loadParam(params.Glasses); // request slave window StWindow::setAttribute(StWinAttr_SlaveCfg, StWinSlave_slaveSync); }
StOutIZ3D::StOutIZ3D(const StHandle<StResourceManager>& theResMgr, const StNativeWin_t theParentWindow) : StWindow(theResMgr, theParentWindow), mySettings(new StSettings(theResMgr, ST_OUT_PLUGIN_NAME)), myFrBuffer(new StGLStereoFrameBuffer()), myToCompressMem(myInstancesNb.increment() > 1), myIsBroken(false) { const StSearchMonitors& aMonitors = StWindow::getMonitors(); StTranslations aLangMap(getResourceManager(), ST_OUT_PLUGIN_NAME); // about string StString& aTitle = aLangMap.changeValueId(STTR_PLUGIN_TITLE, "sView - iZ3D Output module"); StString& aVerString = aLangMap.changeValueId(STTR_VERSION_STRING, "version"); StString& aDescr = aLangMap.changeValueId(STTR_PLUGIN_DESCRIPTION, "(C) {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"); myAbout = aTitle + '\n' + aVerString + " " + StVersionInfo::getSDKVersionString() + "\n \n" + aDescr.format("2009-2015", "*****@*****.**", "www.sview.ru"); // detect connected displays int aSupportLevel = ST_DEVICE_SUPPORT_NONE; for(size_t aMonIter = 0; aMonIter < aMonitors.size(); ++aMonIter) { const StMonitor& aMon = aMonitors[aMonIter]; if(isFrontDisplay(aMon.getPnPId()) || isBackDisplay (aMon.getPnPId())) { aSupportLevel = ST_DEVICE_SUPPORT_PREFER; // we sure that iZ3D connected break; }/* else if(aMon.getPnPId() == IZ3D_MODEL_MATROXTH2GO0 || aMon.getPnPId() == IZ3D_MODEL_MATROXTH2GO1) { aSupportLevel = ST_DEVICE_SUPPORT_FULL; // is it possible }*/ } // devices list StHandle<StOutDevice> aDevice = new StOutDevice(); aDevice->PluginId = ST_OUT_PLUGIN_NAME; aDevice->DeviceId = "iZ3D"; aDevice->Priority = aSupportLevel; aDevice->Name = aLangMap.changeValueId(STTR_IZ3D_NAME, "IZ3D Display"); aDevice->Desc = aLangMap.changeValueId(STTR_IZ3D_DESC, "IZ3D Display"); myDevices.add(aDevice); // shader switch option StHandle<StEnumParam> aGlasses = new StEnumParam(myShaders.getMode(), aLangMap.changeValueId(STTR_PARAMETER_GLASSES, "iZ3D glasses")); aGlasses->changeValues().add(aLangMap.changeValueId(STTR_PARAMETER_GLASSES_CLASSIC, "Classic")); aGlasses->changeValues().add(aLangMap.changeValueId(STTR_PARAMETER_GLASSES_MODERN, "Modern")); aGlasses->changeValues().add(aLangMap.changeValueId(STTR_PARAMETER_GLASSES_CLASSIC_FAST, "Classic (fast)")); aGlasses->signals.onChanged.connect(&myShaders, &StOutIZ3DShaders::doSetMode); params.Glasses = aGlasses; // load window position if(isMovable()) { StRect<int32_t> aRect; if(!mySettings->loadInt32Rect(ST_SETTING_WINDOWPOS, aRect)) { aRect = defaultRect(); } StWindow::setPlacement(aRect, true); } StWindow::setTitle("sView - iZ3D Renderer"); // load parameters mySettings->loadParam(ST_SETTING_TABLE, params.Glasses); // request slave window StWindow::setAttribute(StWinAttr_SlaveCfg, StWinSlave_slaveSync); }