|
Krita Source Code Documentation
|
#include <KisOpenGLCanvasRenderer.h>
Inheritance diagram for KisOpenGLCanvasRenderer:Classes | |
| class | CanvasBridge |
| struct | Private |
Private Member Functions | |
| QColor | borderColor () const |
| KisCanvas2 * | canvas () const |
| QOpenGLContext * | context () const |
| KisCoordinatesConverter * | coordinatesConverter () const |
| qreal | devicePixelRatioF () const |
| void | drawBackground (const QRect &updateRect) |
| void | drawCheckers (const QRect &updateRect) |
| void | drawGrid (const QRect &updateRect) |
| void | drawImage (const QRect &updateRect) |
| void | drawImageTiles (int firstCol, int lastCol, int firstRow, int lastRow, qreal scaleX, qreal scaleY, const QPoint &wrapAroundOffset) |
| void | initializeDisplayShader () |
| void | initializeShaders () |
| void | renderCanvasGL (const QRect &updateRect) |
| void | reportFailedShaderCompilation (const QString &context) |
| void | setDisplayFilterImpl (QSharedPointer< KisDisplayFilter > displayFilter, bool initializing) |
| QRectF | surfaceToWidget (const QRectF &rc) |
| QRectF | widgetToSurface (const QRectF &rc) |
Private Attributes | |
| Private *const | d |
KisOpenGLCanvasRenderer is the class that shows the actual image using OpenGL
Definition at line 43 of file KisOpenGLCanvasRenderer.h.
| KisOpenGLCanvasRenderer::KisOpenGLCanvasRenderer | ( | CanvasBridge * | canvasBridge, |
| KisImageWSP | image, | ||
| const KisDisplayConfig & | displayConfig, | ||
| QSharedPointer< KisDisplayFilter > | displayFilter ) |
Definition at line 142 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGLCanvasRenderer::Private::canvasBridge, KisDisplayConfig::conversionFlags, KisOpenGLImageTextures::createImageTextures(), d, KisDisplayConfig::intent, KisOpenGLCanvasRenderer::Private::openGLImageTextures, KisDisplayConfig::profile, and setDisplayFilterImpl().
| KisOpenGLCanvasRenderer::~KisOpenGLCanvasRenderer | ( | ) |
|
private |
Definition at line 187 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGLCanvasRenderer::CanvasBridge::borderColor(), KisOpenGLCanvasRenderer::Private::canvasBridge, and d.
|
private |
Definition at line 167 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGLCanvasRenderer::CanvasBridge::canvas(), KisOpenGLCanvasRenderer::Private::canvasBridge, and d.
| void KisOpenGLCanvasRenderer::channelSelectionChanged | ( | const QBitArray & | channelFlags | ) |
Definition at line 1099 of file KisOpenGLCanvasRenderer.cpp.
References d, KisOpenGLCanvasRenderer::Private::openGLImageTextures, and KisOpenGLImageTextures::setChannelFlags().
|
private |
Definition at line 172 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGLCanvasRenderer::Private::canvasBridge, d, and KisOpenGLCanvasRenderer::CanvasBridge::openglContext().
|
private |
Definition at line 182 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGLCanvasRenderer::Private::canvasBridge, KisOpenGLCanvasRenderer::CanvasBridge::coordinatesConverter(), and d.
|
private |
Definition at line 177 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGLCanvasRenderer::Private::canvasBridge, d, and KisOpenGLCanvasRenderer::CanvasBridge::devicePixelRatioF().
|
private |
Definition at line 583 of file KisOpenGLCanvasRenderer.cpp.
References borderColor(), KoColorSpace::colorDepthId(), KoColor::colorSpace(), KoColorSpaceRegistry::colorSpace(), KoColor::convertTo(), d, KoColor::data(), KisOpenGLUpdateInfoBuilder::destinationColorSpace(), KoID::id(), KoColorSpaceRegistry::instance(), KisOpenGLImageTextures::monitorProfile(), KoColorSpace::normalisedChannelsValue(), KisOpenGLCanvasRenderer::Private::openGLImageTextures, RGBAColorModelID, and KisOpenGLImageTextures::updateInfoBuilder().
|
private |
Definition at line 607 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGLImageTextures::BACKGROUND_TEXTURE_SIZE, canvas(), KisOpenGLCanvasRenderer::Private::checkerShader, KisOpenGLCanvasRenderer::Private::checkersTextureVertexBuffer, KisOpenGLCanvasRenderer::Private::checkersVertexBuffer, KisOpenGLImageTextures::checkerTexture(), KisOpenGLCanvasRenderer::Private::checkSizeScale, coordinatesConverter(), d, FAR_VAL, KisOpenGLBufferCircularStorage::getNextBuffer(), KisCoordinatesConverter::getOpenGLCheckersInfo(), KisCoordinatesConverter::imageRectInViewportPixels(), KisCoordinatesConverter::imageToViewport(), KisShaderProgram::location(), ModelViewProjection, NEAR_VAL, KisOpenGLCanvasRenderer::Private::openGLImageTextures, KisOpenGLCanvasRenderer::Private::pixelAlignedWidgetSize, PROGRAM_TEXCOORD_ATTRIBUTE, PROGRAM_VERTEX_ATTRIBUTE, KisPaintingTweaks::rectToTexCoords(), KisPaintingTweaks::rectToVertices(), KisOpenGLCanvasRenderer::Private::scrollCheckers, KisOpenGL::supportsVAO(), KisOpenGLCanvasRenderer::Private::texCoords, TextureMatrix, KisOpenGLCanvasRenderer::Private::vertices, KisCoordinatesConverter::widgetToViewport(), WRAPAROUND_HORIZONTAL, WRAPAROUND_VERTICAL, KisOpenGLCanvasRenderer::Private::wrapAroundMode, and KisOpenGLCanvasRenderer::Private::wrapAroundModeAxis.
|
private |
Definition at line 709 of file KisOpenGLCanvasRenderer.cpp.
References coordinatesConverter(), d, KisCoordinatesConverter::documentToImage(), FAR_VAL, FragmentColor, KisOpenGLCanvasRenderer::Private::gridColor, KisOpenGLCanvasRenderer::Private::lineVertexBuffer, KisShaderProgram::location(), ModelViewProjection, NEAR_VAL, KisOpenGLCanvasRenderer::Private::openGLImageTextures, KisOpenGLCanvasRenderer::Private::outlineVAO, KisOpenGLCanvasRenderer::Private::pixelAlignedWidgetSize, PROGRAM_VERTEX_ATTRIBUTE, KisOpenGLCanvasRenderer::Private::solidColorShader, KisOpenGLImageTextures::storedImageBounds(), KisOpenGL::supportsVAO(), KisCoordinatesConverter::widgetToImage(), and KisOpenGLCanvasRenderer::Private::wrapAroundMode.
|
private |
Definition at line 783 of file KisOpenGLCanvasRenderer.cpp.
References canvas(), coordinatesConverter(), d, KisOpenGLCanvasRenderer::Private::displayFilter, KisOpenGLCanvasRenderer::Private::displayShader, KisCoordinatesConverter::documentToImage(), drawImageTiles(), KisCoordinatesConverter::imagePhysicalScale(), KisShaderProgram::location(), KisOpenGLCanvasRenderer::Private::openGLImageTextures, KisOpenGLCanvasRenderer::Private::pixelAlignedWidgetSize, KisCanvas2::renderingLimit, KisOpenGLImageTextures::storedImageBounds(), KisOpenGLImageTextures::texelSize(), TexelSize, TextureMatrix, ViewportScale, KisCoordinatesConverter::widgetToDocument(), WRAPAROUND_HORIZONTAL, WRAPAROUND_VERTICAL, KisOpenGLCanvasRenderer::Private::wrapAroundMode, KisOpenGLCanvasRenderer::Private::wrapAroundModeAxis, KisAlgebra2D::wrapValue(), KisOpenGLImageTextures::xToCol(), KisOpenGLCanvasRenderer::Private::xToColWithWrapCompensation(), KisOpenGLImageTextures::yToRow(), and KisOpenGLCanvasRenderer::Private::yToRowWithWrapCompensation().
|
private |
Definition at line 881 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGL::BilinearFilterMode, KisTextureTile::bindToActiveTexture(), KisOpenGLCanvasRenderer::Private::checkerShader, coordinatesConverter(), d, KisOpenGLCanvasRenderer::Private::displayShader, FAR_VAL, KisOpenGLCanvasRenderer::Private::filterMode, FixedLodLevel, KisOpenGLImageTextures::getTextureBufferIndexCR(), KisOpenGLImageTextures::getTextureTileCR(), KisOpenGL::HighQualityFiltering, KisCoordinatesConverter::imageToWidgetTransform(), KisShaderProgram::location(), KisOpenGLCanvasRenderer::Private::lodSwitchInProgress, ModelViewProjection, NEAR_VAL, KisOpenGL::NearestFilterMode, KisOpenGLCanvasRenderer::Private::openGLImageTextures, KisOpenGLCanvasRenderer::Private::pixelAlignedWidgetSize, PROGRAM_TEXCOORD_ATTRIBUTE, PROGRAM_VERTEX_ATTRIBUTE, KisPaintingTweaks::rectToTexCoords(), KisPaintingTweaks::rectToVertices(), SCALE_LESS_THAN, SCALE_MORE_OR_EQUAL_TO, KisOpenGLImageTextures::storedImageBounds(), KisOpenGL::supportsVAO(), KisOpenGLCanvasRenderer::Private::texCoords, KisTextureTile::tileRectInImagePixels(), KisTextureTile::tileRectInTexturePixels(), KisOpenGLImageTextures::tileTexCoordBuffer(), KisOpenGLImageTextures::tileVertexBuffer(), KisOpenGL::TrilinearFilterMode, KisOpenGLCanvasRenderer::Private::vertices, and warnUI.
| void KisOpenGLCanvasRenderer::finishResizingImage | ( | qint32 | w, |
| qint32 | h ) |
Definition at line 1105 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGLCanvasRenderer::Private::canvasInitialized, d, KisOpenGLCanvasRenderer::Private::openGLImageTextures, and KisOpenGLImageTextures::slotImageSizeChanged().
|
private |
Definition at line 306 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGLCanvasRenderer::Private::canvasInitialized, d, KisOpenGLCanvasRenderer::Private::displayFilter, KisOpenGLCanvasRenderer::Private::displayShader, KisOpenGLCanvasRenderer::Private::displayShaderCompiledWithDisplayFilterSupport, KisOpenGLCanvasRenderer::Private::filterMode, KisOpenGL::HighQualityFiltering, KIS_SAFE_ASSERT_RECOVER_RETURN, KisOpenGLShaderLoader::loadDisplayShader(), reportFailedShaderCompilation(), and KisOpenGLCanvasRenderer::Private::shaderLoader.
| void KisOpenGLCanvasRenderer::initializeGL | ( | ) |
Definition at line 244 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGLBufferCircularStorage::allocate(), canvas(), KisOpenGLCanvasRenderer::Private::canvasInitialized, KisOpenGLCanvasRenderer::Private::checkersTextureVertexBuffer, KisOpenGLCanvasRenderer::Private::checkersVertexBuffer, KisConfig::checkSize(), context(), KisCanvasWidgetBase::createCheckersImage(), d, KisOpenGLImageTextures::generateCheckerTexture(), KisOpenGLImageTextures::initGL(), KisOpenGL::initializeContext(), initializeShaders(), KisOpenGLCanvasRenderer::Private::lineVertexBuffer, NumberOfBuffers, KisOpenGLCanvasRenderer::Private::openGLImageTextures, KisOpenGLCanvasRenderer::Private::outlineVAO, PROGRAM_TEXCOORD_ATTRIBUTE, PROGRAM_VERTEX_ATTRIBUTE, KisOpenGLCanvasRenderer::Private::quadVAO, KisOpenGLImageTextures::setProofingConfig(), and KisOpenGL::supportsVAO().
|
private |
Loads all shaders and reports compilation problems
Definition at line 287 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGLCanvasRenderer::Private::canvasInitialized, KisOpenGLCanvasRenderer::Private::checkerShader, d, initializeDisplayShader(), KIS_SAFE_ASSERT_RECOVER_RETURN, KisOpenGLShaderLoader::loadCheckerShader(), KisOpenGLShaderLoader::loadSolidColorShader(), reportFailedShaderCompilation(), KisOpenGLCanvasRenderer::Private::shaderLoader, and KisOpenGLCanvasRenderer::Private::solidColorShader.
| void KisOpenGLCanvasRenderer::notifyImageColorSpaceChanged | ( | const KoColorSpace * | cs | ) |
Definition at line 214 of file KisOpenGLCanvasRenderer.cpp.
References bounds, canvas(), d, KisOpenGLCanvasRenderer::Private::openGLImageTextures, KisOpenGLImageTextures::setImageColorSpace(), and KisCanvas2::startUpdateInPatches().
| KisOpenGLImageTexturesSP KisOpenGLCanvasRenderer::openGLImageTextures | ( | ) | const |
Definition at line 1134 of file KisOpenGLCanvasRenderer.cpp.
References d, and KisOpenGLCanvasRenderer::Private::openGLImageTextures.
| void KisOpenGLCanvasRenderer::paintCanvasOnly | ( | const QRect & | canvasImageDirtyRect, |
| const QRect & | viewportUpdateRect = QRect() ) |
Paint only the canvas background and image tiles.
Definition at line 368 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGLCanvasRenderer::Private::canvasFBO, d, devicePixelRatioF(), KisOpenGLCanvasRenderer::Private::pixelAlignedWidgetSize, renderCanvasGL(), and KisOpenGLCanvasRenderer::Private::viewportDevicePixelSize.
| void KisOpenGLCanvasRenderer::paintToolOutline | ( | const KisOptimizedBrushOutline & | path, |
| const QRect & | viewportUpdateRect, | ||
| const int | thickness = 1 ) |
Definition at line 394 of file KisOpenGLCanvasRenderer.cpp.
References coordinatesConverter(), KisOpenGLCanvasRenderer::Private::cursorColor, d, devicePixelRatioF(), KisAlgebra2D::dotProduct(), FAR_VAL, FragmentColor, KisOpenGLCanvasRenderer::Private::lineVertexBuffer, KisShaderProgram::location(), KisAlgebra2D::maxDimension(), ModelViewProjection, NEAR_VAL, KisAlgebra2D::norm(), KisAlgebra2D::normalize(), KisOpenGLCanvasRenderer::Private::outlineVAO, p1, p2, KisOpenGLCanvasRenderer::Private::pixelAlignedWidgetSize, PROGRAM_VERTEX_ATTRIBUTE, KisOpenGLCanvasRenderer::Private::solidColorShader, KisOpenGL::supportsVAO(), and widgetToSurface().
|
private |
Definition at line 1049 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGLCanvasRenderer::Private::canvasInitialized, coordinatesConverter(), d, KisOpenGLCanvasRenderer::Private::displayFilter, KisOpenGLCanvasRenderer::Private::displayShaderCompiledWithDisplayFilterSupport, drawBackground(), drawCheckers(), drawGrid(), drawImage(), initializeDisplayShader(), KIS_SAFE_ASSERT_RECOVER_NOOP, KisOpenGLCanvasRenderer::Private::pixelGridDrawingThreshold, KisOpenGLCanvasRenderer::Private::pixelGridEnabled, KisOpenGLCanvasRenderer::Private::quadVAO, KisOpenGL::supportsVAO(), surfaceToWidget(), and widgetToSurface().
|
private |
Displays a message box telling the user that shader compilation failed and turns off OpenGL.
Definition at line 327 of file KisOpenGLCanvasRenderer.cpp.
References context(), KisConfig::disableOpenGL(), and KisConfig::setCanvasState().
| void KisOpenGLCanvasRenderer::resizeGL | ( | int | width, |
| int | height ) |
Definition at line 341 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGLCanvasRenderer::Private::canvasBridge, KisOpenGLCanvasRenderer::Private::canvasFBO, coordinatesConverter(), d, devicePixelRatioF(), KisCoordinatesConverter::getCanvasWidgetSize(), KisOpenGLCanvasRenderer::CanvasBridge::internalTextureFormat(), KIS_SAFE_ASSERT_RECOVER_NOOP, KisOpenGLCanvasRenderer::Private::pixelAlignedWidgetSize, KisOpenGL::useFBOForToolOutlineRendering(), KisCoordinatesConverter::viewportDevicePixelSize(), and KisOpenGLCanvasRenderer::Private::viewportDevicePixelSize.
| void KisOpenGLCanvasRenderer::setDisplayConfig | ( | const KisDisplayConfig & | config | ) |
Definition at line 1092 of file KisOpenGLCanvasRenderer.cpp.
References KisDisplayConfig::conversionFlags, d, KisDisplayConfig::intent, KisOpenGLCanvasRenderer::Private::openGLImageTextures, KisDisplayConfig::profile, and KisOpenGLImageTextures::setMonitorProfile().
| void KisOpenGLCanvasRenderer::setDisplayFilter | ( | QSharedPointer< KisDisplayFilter > | displayFilter | ) |
Definition at line 192 of file KisOpenGLCanvasRenderer.cpp.
References setDisplayFilterImpl().
|
private |
Definition at line 197 of file KisOpenGLCanvasRenderer.cpp.
References bounds, canvas(), d, KisOpenGLCanvasRenderer::Private::displayFilter, KisOpenGLCanvasRenderer::Private::openGLImageTextures, KisOpenGLImageTextures::setInternalColorManagementActive(), KisCanvas2::startUpdateInPatches(), and KisCanvas2::updateCanvas().
| void KisOpenGLCanvasRenderer::setLodResetInProgress | ( | bool | value | ) |
Definition at line 578 of file KisOpenGLCanvasRenderer.cpp.
References d, KisOpenGLCanvasRenderer::Private::lodSwitchInProgress, and value().
| void KisOpenGLCanvasRenderer::setWrapAroundViewingMode | ( | bool | value | ) |
Definition at line 224 of file KisOpenGLCanvasRenderer.cpp.
References d, value(), and KisOpenGLCanvasRenderer::Private::wrapAroundMode.
| void KisOpenGLCanvasRenderer::setWrapAroundViewingModeAxis | ( | WrapAroundAxis | value | ) |
Definition at line 234 of file KisOpenGLCanvasRenderer.cpp.
References d, value(), and KisOpenGLCanvasRenderer::Private::wrapAroundModeAxis.
| KisUpdateInfoSP KisOpenGLCanvasRenderer::startUpdateCanvasProjection | ( | const QRect & | rc | ) |
Definition at line 1112 of file KisOpenGLCanvasRenderer.cpp.
References canvas(), d, KisOpenGLImageTextures::image(), KisOpenGLCanvasRenderer::Private::openGLImageTextures, KisOpenGLImageTextures::setProofingConfig(), KisCanvas2::setProofingConfigUpdated(), and KisOpenGLImageTextures::updateCache().
|
private |
Definition at line 1038 of file KisOpenGLCanvasRenderer.cpp.
References d, devicePixelRatioF(), and KisOpenGLCanvasRenderer::Private::pixelAlignedWidgetSize.
| QRect KisOpenGLCanvasRenderer::updateCanvasProjection | ( | KisUpdateInfoSP | info | ) |
Definition at line 1122 of file KisOpenGLCanvasRenderer.cpp.
References coordinatesConverter(), d, KisSharedPtr< T >::data(), kisGrowRect(), KisOpenGLCanvasRenderer::Private::lodSwitchInProgress, KisOpenGLCanvasRenderer::Private::openGLImageTextures, and KisOpenGLImageTextures::recalculateCache().
| void KisOpenGLCanvasRenderer::updateConfig | ( | ) |
Definition at line 997 of file KisOpenGLCanvasRenderer.cpp.
References KisOpenGLImageTextures::BACKGROUND_TEXTURE_CHECK_SIZE, KisConfig::checkSize(), KisOpenGLCanvasRenderer::Private::checkSizeScale, KisCanvasWidgetBase::createCheckersImage(), d, KisOpenGLCanvasRenderer::Private::filterMode, KisOpenGLImageTextures::generateCheckerTexture(), KisConfig::numMipmapLevels(), KisConfig::openGLFilteringMode(), KisOpenGLCanvasRenderer::Private::openGLImageTextures, KisConfig::scrollCheckers(), KisOpenGLCanvasRenderer::Private::scrollCheckers, KisOpenGLImageTextures::updateConfig(), updateCursorColor(), and KisConfig::useOpenGLTextureBuffer().
| void KisOpenGLCanvasRenderer::updateCursorColor | ( | ) |
Definition at line 1010 of file KisOpenGLCanvasRenderer.cpp.
References canvas(), COMPOSITE_ERASE, KoCanvasResource::CurrentEffectiveCompositeOp, KisOpenGLCanvasRenderer::Private::cursorColor, d, KisConfig::getCursorMainColor(), KisConfig::getEraserCursorMainColor(), KoCanvasBase::resourceManager, and KisConfig::separateEraserCursor().
| void KisOpenGLCanvasRenderer::updatePixelGridMode | ( | ) |
Definition at line 1019 of file KisOpenGLCanvasRenderer.cpp.
References d, KisConfig::getPixelGridColor(), KisConfig::getPixelGridDrawingThreshold(), KisOpenGLCanvasRenderer::Private::gridColor, KisOpenGLCanvasRenderer::Private::pixelGridDrawingThreshold, KisConfig::pixelGridEnabled(), and KisOpenGLCanvasRenderer::Private::pixelGridEnabled.
|
private |
Definition at line 1028 of file KisOpenGLCanvasRenderer.cpp.
References d, devicePixelRatioF(), and KisOpenGLCanvasRenderer::Private::pixelAlignedWidgetSize.
| bool KisOpenGLCanvasRenderer::wrapAroundViewingMode | ( | ) | const |
Definition at line 229 of file KisOpenGLCanvasRenderer.cpp.
References d, and KisOpenGLCanvasRenderer::Private::wrapAroundMode.
| WrapAroundAxis KisOpenGLCanvasRenderer::wrapAroundViewingModeAxis | ( | ) | const |
Definition at line 239 of file KisOpenGLCanvasRenderer.cpp.
References d, and KisOpenGLCanvasRenderer::Private::wrapAroundModeAxis.
|
private |
Definition at line 116 of file KisOpenGLCanvasRenderer.h.