#include "icontextaccessor.h" template IContextAccessor::~IContextAccessor() { qDeleteAll(m_contexts.begin(), m_contexts.end()); } template void IContextAccessor::addedTo(const IGraphicsDocument* doc, const QOpenGLContext* newContext) { if(m_contexts.contains(const_cast(newContext))) return; RendererContextT *c = new RendererContextT(doc, newContext); m_contexts.insert(const_cast(newContext), c); } template void IContextAccessor::removedFrom(const IGraphicsDocument* doc, const QOpenGLContext* newContext) { Q_UNUSED(doc) Q_UNUSED(newContext) if(!m_contexts.contains(const_cast(newContext))) return; AMKglEA->contextAboutToBeDeleted(newContext); RendererContextT *c = m_contexts.take(const_cast(newContext)); delete c; } template const typename IContextAccessor::ContextCollection& IContextAccessor::getContexts() const { return m_contexts; } template RendererContextT* IContextAccessor::getCurrentContext() const { return getContexts().value(QOpenGLContext::currentContext(), nullptr); } template IGraphicsDocument* IContextAccessor::getCurrentDocument() const { if(getCurrentContext() == nullptr) return nullptr; return getCurrentContext()->getDocument(); }