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
This commit is contained in:
@@ -51,6 +51,9 @@ Painter::Painter()
|
|||||||
fOrigin(0.0, 0.0),
|
fOrigin(0.0, 0.0),
|
||||||
fClippingRegion(NULL),
|
fClippingRegion(NULL),
|
||||||
fDrawingMode(B_OP_COPY),
|
fDrawingMode(B_OP_COPY),
|
||||||
|
fAlphaSrcMode(B_PIXEL_ALPHA),
|
||||||
|
// fAlphaSrcMode(B_CONSTANT_ALPHA),
|
||||||
|
fAlphaFncMode(B_ALPHA_OVERLAY),
|
||||||
fPenLocation(0.0, 0.0),
|
fPenLocation(0.0, 0.0),
|
||||||
fPatternHandler(new PatternHandler()),
|
fPatternHandler(new PatternHandler()),
|
||||||
fFont(be_plain_font),
|
fFont(be_plain_font),
|
||||||
@@ -87,7 +90,9 @@ Painter::AttachToBuffer(RenderingBuffer* buffer)
|
|||||||
buffer->BytesPerRow());
|
buffer->BytesPerRow());
|
||||||
|
|
||||||
fPixelFormat = new pixfmt(*fBuffer, fPatternHandler);
|
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);
|
fBaseRenderer = new renderer_base(*fPixelFormat);
|
||||||
|
|
||||||
@@ -242,7 +247,22 @@ Painter::SetDrawingMode(drawing_mode mode)
|
|||||||
if (fDrawingMode != mode) {
|
if (fDrawingMode != mode) {
|
||||||
fDrawingMode = mode;
|
fDrawingMode = mode;
|
||||||
if (fPixelFormat) {
|
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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user