app_server: store and restore fill rule...

...when sending the whole view state over the link.
Also inherit the fill rule when pushing states (DrawState
copy constructor). A somewhat sloppy oversight, I must add.
This commit is contained in:
Stephan Aßmus 2014-03-17 22:55:47 +01:00
parent 6d19a82f63
commit 244796701b
3 changed files with 7 additions and 1 deletions

View File

@ -26,6 +26,7 @@ struct ViewSetStateInfo {
join_mode lineJoin; join_mode lineJoin;
cap_mode lineCap; cap_mode lineCap;
float miterLimit; float miterLimit;
int32 fillRule;
source_alpha alphaSourceMode; source_alpha alphaSourceMode;
alpha_function alphaFunctionMode; alpha_function alphaFunctionMode;
bool fontAntialiasing; bool fontAntialiasing;

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2001-2013 Haiku, Inc. All rights reserved. * Copyright 2001-2014 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License. * Distributed under the terms of the MIT License.
* *
* Authors: * Authors:
@ -227,6 +227,7 @@ ViewState::UpdateServerState(BPrivate::PortLink &link)
info.lineJoin = line_join; info.lineJoin = line_join;
info.lineCap = line_cap; info.lineCap = line_cap;
info.miterLimit = miter_limit; info.miterLimit = miter_limit;
info.fillRule = fill_rule;
info.alphaSourceMode = alpha_source_mode; info.alphaSourceMode = alpha_source_mode;
info.alphaFunctionMode = alpha_function_mode; info.alphaFunctionMode = alpha_function_mode;
info.fontAntialiasing = font_aliasing; info.fontAntialiasing = font_aliasing;
@ -291,6 +292,7 @@ ViewState::UpdateFrom(BPrivate::PortLink &link)
line_join = info.viewStateInfo.lineJoin; line_join = info.viewStateInfo.lineJoin;
line_cap = info.viewStateInfo.lineCap; line_cap = info.viewStateInfo.lineCap;
miter_limit = info.viewStateInfo.miterLimit; miter_limit = info.viewStateInfo.miterLimit;
fill_rule = info.viewStateInfo.fillRule;
alpha_source_mode = info.viewStateInfo.alphaSourceMode; alpha_source_mode = info.viewStateInfo.alphaSourceMode;
alpha_function_mode = info.viewStateInfo.alphaFunctionMode; alpha_function_mode = info.viewStateInfo.alphaFunctionMode;
font_aliasing = info.viewStateInfo.fontAntialiasing; font_aliasing = info.viewStateInfo.fontAntialiasing;

View File

@ -92,6 +92,7 @@ DrawState::DrawState(const DrawState& other)
fLineCapMode(other.fLineCapMode), fLineCapMode(other.fLineCapMode),
fLineJoinMode(other.fLineJoinMode), fLineJoinMode(other.fLineJoinMode),
fMiterLimit(other.fMiterLimit), fMiterLimit(other.fMiterLimit),
fFillRule(other.fFillRule),
// Since fScale is reset to 1.0, the unscaled // Since fScale is reset to 1.0, the unscaled
// font size is the current size of the font // font size is the current size of the font
@ -223,6 +224,7 @@ DrawState::ReadFromLink(BPrivate::LinkReceiver& link)
fLineJoinMode = info.lineJoin; fLineJoinMode = info.lineJoin;
fLineCapMode = info.lineCap; fLineCapMode = info.lineCap;
fMiterLimit = info.miterLimit; fMiterLimit = info.miterLimit;
fFillRule = info.fillRule;
fAlphaSrcMode = info.alphaSourceMode; fAlphaSrcMode = info.alphaSourceMode;
fAlphaFncMode = info.alphaFunctionMode; fAlphaFncMode = info.alphaFunctionMode;
fFontAliasing = info.fontAntialiasing; fFontAliasing = info.fontAntialiasing;
@ -287,6 +289,7 @@ DrawState::WriteToLink(BPrivate::LinkSender& link) const
info.viewStateInfo.lineJoin = fLineJoinMode; info.viewStateInfo.lineJoin = fLineJoinMode;
info.viewStateInfo.lineCap = fLineCapMode; info.viewStateInfo.lineCap = fLineCapMode;
info.viewStateInfo.miterLimit = fMiterLimit; info.viewStateInfo.miterLimit = fMiterLimit;
info.viewStateInfo.fillRule = fFillRule;
info.viewStateInfo.alphaSourceMode = fAlphaSrcMode; info.viewStateInfo.alphaSourceMode = fAlphaSrcMode;
info.viewStateInfo.alphaFunctionMode = fAlphaFncMode; info.viewStateInfo.alphaFunctionMode = fAlphaFncMode;
info.viewStateInfo.fontAntialiasing = fFontAliasing; info.viewStateInfo.fontAntialiasing = fFontAliasing;