Transformation: Added test for nesting view states.
The test shows that nesting view states seems to work as expected...
This commit is contained in:
@@ -402,6 +402,53 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// #pragma mark - NestedStates
|
||||||
|
|
||||||
|
|
||||||
|
class NestedStatesTest : public Test {
|
||||||
|
public:
|
||||||
|
NestedStatesTest()
|
||||||
|
:
|
||||||
|
Test("Nested view states")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void Draw(BView* view, BRect updateRect)
|
||||||
|
{
|
||||||
|
BAffineTransform transform;
|
||||||
|
transform.RotateBy(BPoint(100, 100), 30.0 * M_PI / 180.0);
|
||||||
|
view->SetTransform(transform);
|
||||||
|
|
||||||
|
rgb_color top = (rgb_color){ 255, 0, 0, 255 };
|
||||||
|
rgb_color bottom = (rgb_color){ 255, 255, 0, 255 };
|
||||||
|
|
||||||
|
BRect rect(20, 20, 120, 120);
|
||||||
|
|
||||||
|
BGradientLinear gradient;
|
||||||
|
gradient.AddColor(top, 0.0f);
|
||||||
|
gradient.AddColor(bottom, 255.0f);
|
||||||
|
gradient.SetStart(rect.LeftTop());
|
||||||
|
gradient.SetEnd(rect.LeftBottom());
|
||||||
|
|
||||||
|
view->FillRoundRect(rect, 20, 20, gradient);
|
||||||
|
|
||||||
|
view->PushState();
|
||||||
|
// Should be in the same place!
|
||||||
|
view->StrokeRoundRect(rect, 20, 20);
|
||||||
|
|
||||||
|
// Now rotated by another 30 degree
|
||||||
|
view->SetTransform(transform);
|
||||||
|
|
||||||
|
view->SetDrawingMode(B_OP_ALPHA);
|
||||||
|
view->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_COMPOSITE);
|
||||||
|
view->SetHighColor(0, 0, 255, 120);
|
||||||
|
view->FillRoundRect(rect, 20, 20);
|
||||||
|
|
||||||
|
view->PopState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark -
|
// #pragma mark -
|
||||||
|
|
||||||
|
|
||||||
@@ -415,8 +462,9 @@ main(int argc, char** argv)
|
|||||||
window->AddTest(new RectsTest());
|
window->AddTest(new RectsTest());
|
||||||
window->AddTest(new BitmapTest());
|
window->AddTest(new BitmapTest());
|
||||||
window->AddTest(new GradientTest());
|
window->AddTest(new GradientTest());
|
||||||
|
window->AddTest(new NestedStatesTest());
|
||||||
|
|
||||||
window->SetToTest(2);
|
window->SetToTest(3);
|
||||||
window->Show();
|
window->Show();
|
||||||
|
|
||||||
app.Run();
|
app.Run();
|
||||||
|
|||||||
Reference in New Issue
Block a user