From 37033892c523295d91f189d37ed65474dfac7046 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Tue, 14 Aug 2007 06:39:37 +0000 Subject: [PATCH] Implemented SetPattern op. Reduced the buffer size to 4096 again. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21937 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/interface/PictureDataWriter.h | 1 + src/kits/interface/PictureDataWriter.cpp | 14 ++++++++++++++ src/servers/app/ServerPicture.cpp | 16 +++------------- src/servers/app/ServerWindow.cpp | 8 ++++++++ 4 files changed, 26 insertions(+), 13 deletions(-) diff --git a/headers/private/interface/PictureDataWriter.h b/headers/private/interface/PictureDataWriter.h index 00e57ecabe..dcddcb0809 100644 --- a/headers/private/interface/PictureDataWriter.h +++ b/headers/private/interface/PictureDataWriter.h @@ -31,6 +31,7 @@ public: status_t WriteSetPenSize(const float &penSize); status_t WriteSetLineMode(const cap_mode &cap, const join_mode &join, const float &miterLimit); status_t WriteSetScale(const float &scale); + status_t WriteSetPattern(const pattern &pat); status_t WritePushState(); status_t WritePopState(); diff --git a/src/kits/interface/PictureDataWriter.cpp b/src/kits/interface/PictureDataWriter.cpp index 27b4840a67..93a7972d96 100644 --- a/src/kits/interface/PictureDataWriter.cpp +++ b/src/kits/interface/PictureDataWriter.cpp @@ -146,6 +146,20 @@ PictureDataWriter::WriteSetScale(const float &scale) } +status_t +PictureDataWriter::WriteSetPattern(const pattern &pat) +{ + try { + BeginOp(B_PIC_SET_STIPLE_PATTERN); + Write(pat); + EndOp(); + } catch (status_t &status) { + return status; + } + return B_OK; +} + + status_t PictureDataWriter::WriteSetHighColor(const rgb_color &color) { diff --git a/src/servers/app/ServerPicture.cpp b/src/servers/app/ServerPicture.cpp index 2b4d6beef5..c986e25297 100644 --- a/src/servers/app/ServerPicture.cpp +++ b/src/servers/app/ServerPicture.cpp @@ -777,8 +777,8 @@ ServerPicture::~ServerPicture() delete fData; gTokenSpace.RemoveToken(fToken); - // We don't delete the subpictures themselves, the ServerApp keeps - // them in a list and will delete them on quit. + // We only delete the subpictures list, not the subpictures themselves, + // since the ServerApp keeps them in a list and will delete them on quit. delete fPictures; } @@ -795,19 +795,9 @@ ServerPicture::SyncState(ViewLayer *view) WriteSetScale(view->CurrentState()->Scale()); WriteSetLineMode(view->CurrentState()->LineCapMode(), view->CurrentState()->LineJoinMode(), view->CurrentState()->MiterLimit()); - -/* - BeginOp(B_PIC_SET_STIPLE_PATTERN); - AddData(view->CurrentState()->GetPattern().GetInt8(), sizeof(pattern)); - EndOp(); -*/ + //WriteSetPattern(*view->CurrentState()->GetPattern().GetInt8()); WriteSetDrawingMode(view->CurrentState()->GetDrawingMode()); - /*BeginOp(B_PIC_SET_BLENDING_MODE); - AddInt16((int16)view->CurrentState()->AlphaSrcMode()); - AddInt16((int16)view->CurrentState()->AlphaFncMode()); - EndOp(); -*/ WriteSetHighColor(view->CurrentState()->HighColor().GetColor32()); WriteSetLowColor(view->CurrentState()->LowColor().GetColor32()); diff --git a/src/servers/app/ServerWindow.cpp b/src/servers/app/ServerWindow.cpp index 4b4b645011..195391b3d3 100644 --- a/src/servers/app/ServerWindow.cpp +++ b/src/servers/app/ServerWindow.cpp @@ -2437,6 +2437,14 @@ ServerWindow::_DispatchPictureMessage(int32 code, BPrivate::LinkReceiver &link) break; } + case AS_LAYER_SET_PATTERN: + { + pattern pat; + link.Read(&pat, sizeof(pattern)); + picture->WriteSetPattern(pat); + break; + } + case AS_FILL_RECT: case AS_STROKE_RECT: {