From d4734e04d126c9049e127ca71f7330e12cee3b81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Fri, 28 Jan 2005 13:07:21 +0000 Subject: [PATCH] support for switching the alpha drawing mode when the blending mode changes git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11100 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/server/Painter/Painter.cpp | 24 ++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/servers/app/server/Painter/Painter.cpp b/src/servers/app/server/Painter/Painter.cpp index d053f83e43..f0028fc697 100644 --- a/src/servers/app/server/Painter/Painter.cpp +++ b/src/servers/app/server/Painter/Painter.cpp @@ -51,6 +51,9 @@ Painter::Painter() fOrigin(0.0, 0.0), fClippingRegion(NULL), fDrawingMode(B_OP_COPY), + fAlphaSrcMode(B_PIXEL_ALPHA), +// fAlphaSrcMode(B_CONSTANT_ALPHA), + fAlphaFncMode(B_ALPHA_OVERLAY), fPenLocation(0.0, 0.0), fPatternHandler(new PatternHandler()), fFont(be_plain_font), @@ -87,7 +90,9 @@ Painter::AttachToBuffer(RenderingBuffer* buffer) buffer->BytesPerRow()); fPixelFormat = new pixfmt(*fBuffer, fPatternHandler); - fPixelFormat->set_drawing_mode(DrawingModeFactory::DrawingModeFor(fDrawingMode)); + fPixelFormat->set_drawing_mode(DrawingModeFactory::DrawingModeFor(fDrawingMode, + fAlphaSrcMode, + fAlphaFncMode)); fBaseRenderer = new renderer_base(*fPixelFormat); @@ -242,7 +247,22 @@ Painter::SetDrawingMode(drawing_mode mode) if (fDrawingMode != mode) { fDrawingMode = mode; if (fPixelFormat) { - fPixelFormat->set_drawing_mode(DrawingModeFactory::DrawingModeFor(fDrawingMode)); + fPixelFormat->set_drawing_mode(DrawingModeFactory::DrawingModeFor(fDrawingMode, + fAlphaSrcMode, + fAlphaFncMode)); + } + } +} + +// SetBlendingMode +void +Painter::SetBlendingMode(source_alpha alphaSrcMode, alpha_function alphaFncMode) +{ + if (fAlphaSrcMode != alphaSrcMode || fAlphaFncMode != alphaFncMode) { + if (fDrawingMode == B_OP_ALPHA && fPixelFormat) { + fPixelFormat->set_drawing_mode(DrawingModeFactory::DrawingModeFor(fDrawingMode, + fAlphaSrcMode, + fAlphaFncMode)); } } }