/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #include "OdaCommon.h" #include "GsSrBaseClasses.h" #include "SrConveyorPipelineManager.h" OdSrConveyorPipelineManager::OdSrConveyorPipelineManager() { m_pHLR = OdGiHLRemover::createObject(); } OdSrConveyorPipelineManager::~OdSrConveyorPipelineManager() { destroyPipeline(); } void OdSrConveyorPipelineManager::destroyPipeline() { if (!m_pCurrentView) return; m_pHLR->input().removeSourceNode(m_pCurrentView->output()); m_pCurrentView = nullptr; } void OdSrConveyorPipelineManager::setupPipeline(OdGsSrBaseView* pView) { if (m_pCurrentView) return; m_pCurrentView = pView; // Setup pipeline: BaseVectorizer -> HLR -> Geometry m_pHLR->input().addSourceNode(pView->output()); m_pHLR->setDrawContext(pView->OdGiBaseVectorizer::drawContext()); } OdGiConveyorOutput& OdSrConveyorPipelineManager::finalOutput() { return m_pHLR->output(); } void OdSrConveyorPipelineManager::onChangeConfig() { // setup hidden lines remover m_pHLR->enable(m_config.hlrEnabled); m_pHLR->invertZ(true); } OdSrConveyorPipelineManager::ConfigUpdater OdSrConveyorPipelineManager::configure() { return ConfigUpdater(this); } void OdSrConveyorPipelineManager::process() { if (m_config.hlrEnabled) m_pHLR->process(); } void OdSrConveyorPipelineManager::processOnce() { if (m_config.hlrEnabled && m_pHLR->enabled()) { m_pHLR->process(); m_pHLR->enable(false); } }