Move BarberPole from HaikuDepot to libshared
I want to use this in at least 2 third-party applications. I think it's time to make it shared? Change-Id: I855a59aab4ad6d47d77cf2901cb3dfc34c108059 Reviewed-on: https://review.haiku-os.org/c/haiku/+/6296 Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright 2017 Julian Harnath <[email protected]>
|
||||
* 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();
|
||||
void _DrawSpin(BRect updateRect);
|
||||
void _DrawNonSpin(BRect updateRect);
|
||||
private:
|
||||
bool fIsSpinning;
|
||||
float fSpinSpeed;
|
||||
const rgb_color* fColors;
|
||||
uint32 fNumColors;
|
||||
|
||||
float fScrollOffset;
|
||||
BPolygon fStripe;
|
||||
float fStripeWidth;
|
||||
uint32 fNumStripes;
|
||||
};
|
||||
|
||||
|
||||
#endif // BARBER_POLE_H
|
||||
Reference in New Issue
Block a user