#include #include #include #include #include static void ChangeColor(rgb_color &color) { color.red = rand() % 255; color.green = rand() % 255; } class PulseView : public BView { public: PulseView(BRect rect, const char *name, uint32 resizeMode, uint32 flags) : BView(rect, name, resizeMode, flags) { fLeft = Bounds().OffsetToCopy(B_ORIGIN); fLeft.right -= Bounds().Width() / 2; fRight = fLeft.OffsetByCopy(fLeft.Width(), 0); fColor.red = 255; fColor.green = 255; fColor.blue = 255; } virtual void Pulse() { SetHighColor(fColor); BRect rect = fRight; if (fLeftTurn) rect = fLeft; FillRect(rect, B_SOLID_HIGH); fLeftTurn = !fLeftTurn; ChangeColor(fColor); } BRect fLeft; BRect fRight; bool fLeftTurn; rgb_color fColor; }; void show_window(BWindow *window) { BView *view = new PulseView(window->Bounds(), "pulse view", B_FOLLOW_ALL, B_PULSE_NEEDED|B_WILL_DRAW); window->SetPulseRate(500000); window->AddChild(view); window->Show(); } int main() { srand(time(NULL)); BApplication app("application/x-vnd.pulse_test"); BWindow *window = new BWindow(BRect(100, 100, 400, 300), "pulse test", B_TITLED_WINDOW, B_QUIT_ON_WINDOW_CLOSE | B_ASYNCHRONOUS_CONTROLS | B_NOT_RESIZABLE); show_window(window); app.Run(); }