mirror of
https://review.haiku-os.org/haiku
synced 2025-02-12 08:39:18 +01:00
62 lines
1.2 KiB
C
62 lines
1.2 KiB
C
|
/*
|
||
|
* Copyright 2017 Julian Harnath <julian.harnath@rwth-aachen.de>
|
||
|
* All rights reserved. Distributed under the terms of the MIT license.
|
||
|
*/
|
||
|
#ifndef BARBER_POLE_H
|
||
|
#define BARBER_POLE_H
|
||
|
|
||
|
|
||
|
#include <View.h>
|
||
|
|
||
|
#include <Polygon.h>
|
||
|
|
||
|
|
||
|
class BMessageRunner;
|
||
|
|
||
|
|
||
|
/*! Spinning barber pole progress indicator. Number and colors of the
|
||
|
color stripes are configurable. By default, it will be 2 colors,
|
||
|
chosen from the system color palette.
|
||
|
*/
|
||
|
class BarberPole : public BView {
|
||
|
public:
|
||
|
enum {
|
||
|
// Message codes
|
||
|
kRefreshMessage = 0x1001
|
||
|
};
|
||
|
|
||
|
public:
|
||
|
BarberPole(const char* name);
|
||
|
~BarberPole();
|
||
|
|
||
|
virtual void MessageReceived(BMessage* message);
|
||
|
virtual void Draw(BRect updateRect);
|
||
|
virtual void FrameResized(float width, float height);
|
||
|
|
||
|
virtual BSize MinSize();
|
||
|
|
||
|
void Start();
|
||
|
void Stop();
|
||
|
|
||
|
void SetSpinSpeed(float speed);
|
||
|
void SetColors(const rgb_color* colors,
|
||
|
uint32 numColors);
|
||
|
|
||
|
private:
|
||
|
void _Spin();
|
||
|
|
||
|
private:
|
||
|
bool fIsSpinning;
|
||
|
float fSpinSpeed;
|
||
|
const rgb_color* fColors;
|
||
|
uint32 fNumColors;
|
||
|
|
||
|
float fScrollOffset;
|
||
|
BPolygon fStripe;
|
||
|
float fStripeWidth;
|
||
|
uint32 fNumStripes;
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif // BARBER_POLE_H
|