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;
|
||||
BPoint origin;
|
||||
float scale;
|
||||
BAffineTransform transform;
|
||||
join_mode lineJoin;
|
||||
cap_mode lineCap;
|
||||
float miterLimit;
|
||||
|
||||
@@ -237,7 +237,6 @@ ViewState::UpdateServerState(BPrivate::PortLink &link)
|
||||
info.drawingMode = drawing_mode;
|
||||
info.origin = origin;
|
||||
info.scale = scale;
|
||||
info.transform = transform;
|
||||
info.lineJoin = line_join;
|
||||
info.lineCap = line_cap;
|
||||
info.miterLimit = miter_limit;
|
||||
@@ -247,6 +246,12 @@ ViewState::UpdateServerState(BPrivate::PortLink &link)
|
||||
info.fontAntialiasing = font_aliasing;
|
||||
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...
|
||||
// TODO: Could be optimized, but is low prio, since most views won't
|
||||
// have a custom clipping region.
|
||||
@@ -302,7 +307,6 @@ ViewState::UpdateFrom(BPrivate::PortLink &link)
|
||||
drawing_mode = info.viewStateInfo.drawingMode;
|
||||
origin = info.viewStateInfo.origin;
|
||||
scale = info.viewStateInfo.scale;
|
||||
transform = info.viewStateInfo.transform;
|
||||
line_join = info.viewStateInfo.lineJoin;
|
||||
line_cap = info.viewStateInfo.lineCap;
|
||||
miter_limit = info.viewStateInfo.miterLimit;
|
||||
@@ -311,6 +315,14 @@ ViewState::UpdateFrom(BPrivate::PortLink &link)
|
||||
alpha_function_mode = info.viewStateInfo.alphaFunctionMode;
|
||||
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
|
||||
// (that's NOT the current View visible clipping but the additional
|
||||
// user specified clipping!)
|
||||
|
||||
@@ -223,6 +223,14 @@ DrawState::ReadFromLink(BPrivate::LinkReceiver& link)
|
||||
|
||||
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;
|
||||
fPenSize = info.penSize;
|
||||
fHighColor = info.highColor;
|
||||
@@ -235,7 +243,6 @@ DrawState::ReadFromLink(BPrivate::LinkReceiver& link)
|
||||
fDrawingMode = info.drawingMode;
|
||||
fOrigin = info.origin;
|
||||
fScale = info.scale;
|
||||
fTransform = info.transform;
|
||||
fLineJoinMode = info.lineJoin;
|
||||
fLineCapMode = info.lineCap;
|
||||
fMiterLimit = info.miterLimit;
|
||||
@@ -304,7 +311,6 @@ DrawState::WriteToLink(BPrivate::LinkSender& link) const
|
||||
info.viewStateInfo.drawingMode = fDrawingMode;
|
||||
info.viewStateInfo.origin = fOrigin;
|
||||
info.viewStateInfo.scale = fScale;
|
||||
info.viewStateInfo.transform = fTransform;
|
||||
info.viewStateInfo.lineJoin = fLineJoinMode;
|
||||
info.viewStateInfo.lineCap = fLineCapMode;
|
||||
info.viewStateInfo.miterLimit = fMiterLimit;
|
||||
@@ -316,6 +322,11 @@ DrawState::WriteToLink(BPrivate::LinkSender& link) const
|
||||
|
||||
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
|
||||
// use a custom clipping region...
|
||||
|
||||
Reference in New Issue
Block a user