View: move BAffineTransform out of ViewSetStateInfo.
the size of BAffineTransform is architecture dependent, so we transmit its contents in a standard array instead. Change-Id: I907110742168846a869a48bb2d116cc5292ec7d0
This commit is contained in:
@@ -26,7 +26,6 @@ struct ViewSetStateInfo {
|
|||||||
drawing_mode drawingMode;
|
drawing_mode drawingMode;
|
||||||
BPoint origin;
|
BPoint origin;
|
||||||
float scale;
|
float scale;
|
||||||
BAffineTransform transform;
|
|
||||||
join_mode lineJoin;
|
join_mode lineJoin;
|
||||||
cap_mode lineCap;
|
cap_mode lineCap;
|
||||||
float miterLimit;
|
float miterLimit;
|
||||||
|
|||||||
@@ -237,7 +237,6 @@ ViewState::UpdateServerState(BPrivate::PortLink &link)
|
|||||||
info.drawingMode = drawing_mode;
|
info.drawingMode = drawing_mode;
|
||||||
info.origin = origin;
|
info.origin = origin;
|
||||||
info.scale = scale;
|
info.scale = scale;
|
||||||
info.transform = transform;
|
|
||||||
info.lineJoin = line_join;
|
info.lineJoin = line_join;
|
||||||
info.lineCap = line_cap;
|
info.lineCap = line_cap;
|
||||||
info.miterLimit = miter_limit;
|
info.miterLimit = miter_limit;
|
||||||
@@ -247,6 +246,12 @@ ViewState::UpdateServerState(BPrivate::PortLink &link)
|
|||||||
info.fontAntialiasing = font_aliasing;
|
info.fontAntialiasing = font_aliasing;
|
||||||
link.Attach<ViewSetStateInfo>(info);
|
link.Attach<ViewSetStateInfo>(info);
|
||||||
|
|
||||||
|
// BAffineTransform is transmitted as a double array
|
||||||
|
double _transform[6];
|
||||||
|
if (transform.Flatten(_transform, sizeof(_transform)) != B_OK)
|
||||||
|
return;
|
||||||
|
link.Attach<double[6]>(_transform);
|
||||||
|
|
||||||
// we send the 'local' clipping region... if we have one...
|
// we send the 'local' clipping region... if we have one...
|
||||||
// TODO: Could be optimized, but is low prio, since most views won't
|
// TODO: Could be optimized, but is low prio, since most views won't
|
||||||
// have a custom clipping region.
|
// have a custom clipping region.
|
||||||
@@ -302,7 +307,6 @@ ViewState::UpdateFrom(BPrivate::PortLink &link)
|
|||||||
drawing_mode = info.viewStateInfo.drawingMode;
|
drawing_mode = info.viewStateInfo.drawingMode;
|
||||||
origin = info.viewStateInfo.origin;
|
origin = info.viewStateInfo.origin;
|
||||||
scale = info.viewStateInfo.scale;
|
scale = info.viewStateInfo.scale;
|
||||||
transform = info.viewStateInfo.transform;
|
|
||||||
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;
|
||||||
@@ -311,6 +315,14 @@ ViewState::UpdateFrom(BPrivate::PortLink &link)
|
|||||||
alpha_function_mode = info.viewStateInfo.alphaFunctionMode;
|
alpha_function_mode = info.viewStateInfo.alphaFunctionMode;
|
||||||
font_aliasing = info.viewStateInfo.fontAntialiasing;
|
font_aliasing = info.viewStateInfo.fontAntialiasing;
|
||||||
|
|
||||||
|
// BAffineTransform is transmitted as a double array
|
||||||
|
double _transform[6];
|
||||||
|
link.Read<double[6]>(&_transform);
|
||||||
|
if (transform.Unflatten(B_AFFINE_TRANSFORM_TYPE, _transform,
|
||||||
|
sizeof(_transform)) != B_OK) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// read the user clipping
|
// read the user clipping
|
||||||
// (that's NOT the current View visible clipping but the additional
|
// (that's NOT the current View visible clipping but the additional
|
||||||
// user specified clipping!)
|
// user specified clipping!)
|
||||||
|
|||||||
@@ -223,6 +223,14 @@ DrawState::ReadFromLink(BPrivate::LinkReceiver& link)
|
|||||||
|
|
||||||
link.Read<ViewSetStateInfo>(&info);
|
link.Read<ViewSetStateInfo>(&info);
|
||||||
|
|
||||||
|
// BAffineTransform is transmitted as a double array
|
||||||
|
double transform[6];
|
||||||
|
link.Read<double[6]>(&transform);
|
||||||
|
if (fTransform.Unflatten(B_AFFINE_TRANSFORM_TYPE, transform,
|
||||||
|
sizeof(transform)) != B_OK) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
fPenLocation = info.penLocation;
|
fPenLocation = info.penLocation;
|
||||||
fPenSize = info.penSize;
|
fPenSize = info.penSize;
|
||||||
fHighColor = info.highColor;
|
fHighColor = info.highColor;
|
||||||
@@ -235,7 +243,6 @@ DrawState::ReadFromLink(BPrivate::LinkReceiver& link)
|
|||||||
fDrawingMode = info.drawingMode;
|
fDrawingMode = info.drawingMode;
|
||||||
fOrigin = info.origin;
|
fOrigin = info.origin;
|
||||||
fScale = info.scale;
|
fScale = info.scale;
|
||||||
fTransform = info.transform;
|
|
||||||
fLineJoinMode = info.lineJoin;
|
fLineJoinMode = info.lineJoin;
|
||||||
fLineCapMode = info.lineCap;
|
fLineCapMode = info.lineCap;
|
||||||
fMiterLimit = info.miterLimit;
|
fMiterLimit = info.miterLimit;
|
||||||
@@ -304,7 +311,6 @@ DrawState::WriteToLink(BPrivate::LinkSender& link) const
|
|||||||
info.viewStateInfo.drawingMode = fDrawingMode;
|
info.viewStateInfo.drawingMode = fDrawingMode;
|
||||||
info.viewStateInfo.origin = fOrigin;
|
info.viewStateInfo.origin = fOrigin;
|
||||||
info.viewStateInfo.scale = fScale;
|
info.viewStateInfo.scale = fScale;
|
||||||
info.viewStateInfo.transform = fTransform;
|
|
||||||
info.viewStateInfo.lineJoin = fLineJoinMode;
|
info.viewStateInfo.lineJoin = fLineJoinMode;
|
||||||
info.viewStateInfo.lineCap = fLineCapMode;
|
info.viewStateInfo.lineCap = fLineCapMode;
|
||||||
info.viewStateInfo.miterLimit = fMiterLimit;
|
info.viewStateInfo.miterLimit = fMiterLimit;
|
||||||
@@ -316,6 +322,11 @@ DrawState::WriteToLink(BPrivate::LinkSender& link) const
|
|||||||
|
|
||||||
link.Attach<ViewGetStateInfo>(info);
|
link.Attach<ViewGetStateInfo>(info);
|
||||||
|
|
||||||
|
// BAffineTransform is transmitted as a double array
|
||||||
|
double transform[6];
|
||||||
|
if (fTransform.Flatten(transform, sizeof(transform)) != B_OK)
|
||||||
|
return;
|
||||||
|
link.Attach<double[6]>(transform);
|
||||||
|
|
||||||
// TODO: Could be optimized, but is low prio, since most views do not
|
// TODO: Could be optimized, but is low prio, since most views do not
|
||||||
// use a custom clipping region...
|
// use a custom clipping region...
|
||||||
|
|||||||
Reference in New Issue
Block a user