Files
oboe/osx/dialogxml/scrollbar.h

81 lines
2.4 KiB
C++

//
// scrollbar.h
// BoE
//
// Created by Celtic Minstrel on 14-03-26.
//
//
#ifndef BoE_scrollbar_h
#define BoE_scrollbar_h
/// @file
/// Scrollbar-related classes and types.
#include "control.h"
#include "graphtool.h"
/// A simple vertical scrollbar.
/// This has no coupling with scrollable data; that must be handled externally by
/// using the methods to get the scrollbar's position.
class cScrollbar : public cControl {
int pos, max, pgsz;
enum {
PART_UP,
PART_PGUP,
PART_THUMB,
PART_PGDN,
PART_DOWN,
} pressedPart;
click_callback_t onClick;
static sf::Texture scroll_gw;
static tessel_ref_t bar_tessel[2];
public:
/// @copydoc cDialog::init()
static void init();
/// Create a new scrollbar without a parent dialog.
/// @param parent The parent window.
explicit cScrollbar(sf::RenderWindow& parent);
/// Create a new scrollbar.
/// @param parent The parent dialog.
explicit cScrollbar(cDialog& parent);
void attachClickHandler(click_callback_t f) throw(xHandlerNotSupported);
void attachFocusHandler(focus_callback_t f) throw(xHandlerNotSupported);
bool triggerClickHandler(cDialog& me, std::string id, eKeyMod mods);
bool handleClick(location where);
void setFormat(eFormat prop, short val) throw(xUnsupportedProp);
short getFormat(eFormat prop) throw(xUnsupportedProp);
void setColour(sf::Color clr) throw(xUnsupportedProp);
sf::Color getColour() throw(xUnsupportedProp);
bool isClickable();
/// Get the scrollbar thumb's current position.
/// @return The current position.
long getPosition();
/// Get the scrollbar thumb's maximum value.
/// @return The maximum value.
long getMaximum();
/// Get the scrollbar thumb's page size.
/// @return The page size.
///
/// The page size is the number of steps scrolled when a click is received
/// in the area between the arrow buttons and the scrollbar thumb.
long getPageSize();
/// Set the scrollbar thumb's current position.
/// @param to The current position.
void setPosition(long to);
/// Set the scrollbar thumb's maximum value.
/// @param to The maximum value.
void setMaximum(long to);
/// Set the scrollbar thumb's page size.
/// @param to The page size.
///
/// The page size is the number of steps scrolled when a click is received
/// in the area between the arrow buttons and the scrollbar thumb.
void setPageSize(long to);
void draw();
cScrollbar& operator=(cScrollbar& other) = delete;
cScrollbar(cScrollbar& other) = delete;
};
#endif