void VirtualMirrorCombine::updateResult(DataContainer& data) { ScopedTypedData<RenderData> normalImage(data, p_normalImageID.getValue()); ScopedTypedData<RenderData> mirrorImage(data, p_mirrorImageID.getValue()); ScopedTypedData<RenderData> mirrorRendered(data, p_mirrorRenderID.getValue()); if (normalImage != 0 && mirrorImage != 0 && mirrorRendered != 0) { glEnable(GL_DEPTH_TEST); glDepthFunc(GL_ALWAYS); FramebufferActivationGuard f*g(this); createAndAttachColorTexture(); createAndAttachDepthTexture(); _shader->activate(); decorateRenderProlog(data, _shader); cgt::TextureUnit normalColorUnit, normalDepthUnit, mirrorColorUnit, mirrorDepthUnit, mirrorRenderedDepthUnit; normalImage->bind(_shader, normalColorUnit, normalDepthUnit, "_normalColor", "_normalDepth", "_normalTexParams"); mirrorImage->bind(_shader, mirrorColorUnit, mirrorDepthUnit, "_mirrorColor", "_mirrorDepth", "_mirrorTexParams"); mirrorRendered->bindDepthTexture(_shader, mirrorRenderedDepthUnit, "_mirrorRenderedDepth", "_mirrorRenderedTexParams"); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); QuadRdr.renderQuad(); _shader->deactivate(); cgt::TextureUnit::setZeroUnit(); glDepthFunc(GL_LESS); glDisable(GL_DEPTH_TEST); LGL_ERROR; data.addData(p_targetImageID.getValue(), new RenderData(_fbo)); } else { LDEBUG("No suitable input images found."); } }
void KFileIVIDesktop::drawShadowedText( TQPainter *p, const TQColorGroup &cg ) { bool drawRoundedRect = TDEGlobalSettings::iconUseRoundedRect(); int textX; if (drawRoundedRect == true) textX = textRect( FALSE ).x() + 4; else textX = textRect( FALSE ).x() + 2; int textY = textRect( FALSE ).y(); int align = ((TDEIconView *) iconView())->itemTextPos() == TQIconView::Bottom ? AlignHCenter : AlignAuto; // FIXME // Work around incorrect shadow position detailed in Bug 1807 bool rebuild = true; // shouldUpdateShadow(isSelected()); KDesktopShadowSettings *settings = (KDesktopShadowSettings *) (m_shadow->shadowSettings()); unsigned long uid = settings->UID(); p->setFont(iconView()->font()); paintFontUpdate(p); TQColor shadow; TQColor text; int spread = shadowThickness(); if ( isSelected() && settings->selectionType() != KShadowSettings::InverseVideoOnSelection ) { text = cg.highlightedText(); TQRect rect = textRect( false ); rect.setRight( rect.right() - spread ); rect.setBottom( rect.bottom() - spread + 1 ); if (drawRoundedRect == true) { p->setBrush( TQBrush( cg.highlight() ) ); p->setPen( TQPen( cg.highlight() ) ); p->drawRoundRect( rect, 1000 / rect.width(), 1000 / rect.height() ); } else { p->fillRect( textRect( false ), cg.highlight() ); } } else { // use shadow if ( isSelected() ) { // inverse text and shadow colors shadow = settings->textColor(); text = settings->bgColor(); if ( rebuild ) { setSelectedImage( buildShadow( p, align, shadow ) ); _selectedUID = uid; } } else { text = settings->textColor(); shadow = ( settings->bgColor().isValid() ) ? settings->bgColor() : ( tqGray( text.rgb() ) > 127 ) ? black : white; if (rebuild) { setNormalImage(buildShadow(p, align, shadow)); _normalUID = uid; } } // draw the shadow int shadowX = textX - spread + settings->offsetX(); int shadowY = textY - spread + settings->offsetY(); p->drawImage(shadowX, shadowY, (isSelected()) ? *selectedImage() : *normalImage(), 0, 0, -1, -1, DITHER_FLAGS); } // draw the text p->setPen(text); wordWrap()->drawText( p, textX, textY, align | KWordWrap::Truncate ); }