BPicture: add missing WriteSetBlendingMode method.

Actual blending mode writing is still disabled for now. According to
previous commit messages it cause problems with BView::Begin/EndLayer
API.

Change-Id: Ib3c58b05a949e556e9f14a57822b20cd259e12d4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8559
Haiku-Format: Haiku-format Bot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
This commit is contained in:
X512
2025-03-23 10:30:14 +00:00
committed by Adrien Destugues
parent eb853f8901
commit c02537f91b
3 changed files with 23 additions and 6 deletions
@@ -42,6 +42,8 @@ public:
const join_mode& join, const join_mode& join,
const float& miterLimit); const float& miterLimit);
status_t WriteSetFillRule(int32 fillRule); status_t WriteSetFillRule(int32 fillRule);
status_t WriteSetBlendingMode(source_alpha srcAlpha,
alpha_function alphaFunc);
status_t WriteSetScale(const float& scale); status_t WriteSetScale(const float& scale);
status_t WriteSetTransform(BAffineTransform transform); status_t WriteSetTransform(BAffineTransform transform);
status_t WriteTranslateBy(double x, double y); status_t WriteTranslateBy(double x, double y);
+16
View File
@@ -171,6 +171,22 @@ PictureDataWriter::WriteSetFillRule(int32 fillRule)
} }
status_t
PictureDataWriter::WriteSetBlendingMode(source_alpha srcAlpha, alpha_function alphaFunc)
{
try {
BeginOp(B_PIC_SET_BLENDING_MODE);
Write<int16>(srcAlpha);
Write<int16>(alphaFunc);
EndOp();
} catch (status_t& status) {
return status;
}
return B_OK;
}
status_t status_t
PictureDataWriter::WriteSetScale(const float& scale) PictureDataWriter::WriteSetScale(const float& scale)
{ {
+5 -6
View File
@@ -4099,23 +4099,22 @@ ServerWindow::_DispatchPictureMessage(int32 code, BPrivate::LinkReceiver& link)
break; break;
} }
/* // TODO: disabled without explanation in hrev19264. investigate problem and enable
#if 0
case AS_VIEW_SET_BLENDING_MODE: case AS_VIEW_SET_BLENDING_MODE:
{ {
ViewBlendingModeInfo info; ViewBlendingModeInfo info;
link.Read<ViewBlendingModeInfo>(&info); link.Read<ViewBlendingModeInfo>(&info);
picture->BeginOp(B_PIC_SET_BLENDING_MODE); picture->WriteSetBlendingMode(info.sourceAlpha, info.alphaFunction);
picture->AddInt16((int16)info.sourceAlpha);
picture->AddInt16((int16)info.alphaFunction);
picture->EndOp();
fCurrentView->CurrentState()->SetBlendingMode(info.sourceAlpha, fCurrentView->CurrentState()->SetBlendingMode(info.sourceAlpha,
info.alphaFunction); info.alphaFunction);
fWindow->GetDrawingEngine()->SetBlendingMode(info.sourceAlpha, fWindow->GetDrawingEngine()->SetBlendingMode(info.sourceAlpha,
info.alphaFunction); info.alphaFunction);
break; break;
}*/ }
#endif
default: default:
return false; return false;
} }