void TextureMapperImageBuffer::beginClip(const TransformationMatrix& matrix, const FloatRect& rect) { GraphicsContext* context = currentContext(); if (!context) return; #if ENABLE(3D_RENDERING) TransformationMatrix previousTransform = context->get3DTransform(); #else AffineTransform previousTransform = context->getCTM(); #endif context->save(); #if ENABLE(3D_RENDERING) context->concat3DTransform(matrix); #else context->concatCTM(matrix.toAffineTransform()); #endif context->clip(rect); #if ENABLE(3D_RENDERING) context->set3DTransform(previousTransform); #else context->setCTM(previousTransform); #endif }
void TextureMapperImageBuffer::drawTexture(const BitmapTexture& texture, const FloatRect& targetRect, const TransformationMatrix& matrix, float opacity, const BitmapTexture* maskTexture, unsigned /* exposedEdges */) { GraphicsContext* context = currentContext(); if (!context) return; const BitmapTextureImageBuffer& textureImageBuffer = static_cast<const BitmapTextureImageBuffer&>(texture); ImageBuffer* image = textureImageBuffer.m_image.get(); OwnPtr<ImageBuffer> maskedImage; if (maskTexture && maskTexture->isValid()) { const BitmapTextureImageBuffer* mask = static_cast<const BitmapTextureImageBuffer*>(maskTexture); maskedImage = ImageBuffer::create(maskTexture->contentSize()); GraphicsContext* maskContext = maskedImage->context(); maskContext->drawImageBuffer(image, ColorSpaceDeviceRGB, IntPoint::zero(), CompositeCopy); if (opacity < 1) { maskContext->setAlpha(opacity); opacity = 1; } maskContext->drawImageBuffer(mask->m_image.get(), ColorSpaceDeviceRGB, IntPoint::zero(), CompositeDestinationIn); image = maskedImage.get(); } context->save(); context->setAlpha(opacity); #if ENABLE(3D_RENDERING) context->concat3DTransform(matrix); #else context->concatCTM(matrix.toAffineTransform()); #endif context->drawImageBuffer(image, ColorSpaceDeviceRGB, targetRect); context->restore(); }
void TextureMapperImageBuffer::drawSolidColor(const FloatRect& rect, const TransformationMatrix& matrix, const Color& color) { GraphicsContext* context = currentContext(); if (!context) return; context->save(); #if ENABLE(3D_RENDERING) context->concat3DTransform(matrix); #else context->concatCTM(matrix.toAffineTransform()); #endif context->fillRect(rect, color, ColorSpaceDeviceRGB); context->restore(); }
void TextureMapperImageBuffer::drawTexture(const BitmapTexture& texture, const FloatRect& targetRect, const TransformationMatrix& matrix, float opacity, unsigned /* exposedEdges */) { GraphicsContext* context = currentContext(); if (!context) return; const BitmapTextureImageBuffer& textureImageBuffer = static_cast<const BitmapTextureImageBuffer&>(texture); ImageBuffer* image = textureImageBuffer.m_image.get(); context->save(); context->setCompositeOperation(isInMaskMode() ? CompositeDestinationIn : CompositeSourceOver); context->setAlpha(opacity); #if ENABLE(3D_RENDERING) context->concat3DTransform(matrix); #else context->concatCTM(matrix.toAffineTransform()); #endif context->drawImageBuffer(image, ColorSpaceDeviceRGB, targetRect); context->restore(); }