mirror of
https://github.com/aseprite/aseprite.git
synced 2025-01-07 19:06:39 +00:00
64 lines
1.5 KiB
C++
64 lines
1.5 KiB
C++
// Aseprite UI Library
|
|
// Copyright (C) 2001-2017 David Capello
|
|
//
|
|
// This file is released under the terms of the MIT license.
|
|
// Read LICENSE.txt for more information.
|
|
|
|
#ifndef UI_SCROLL_BAR_H_INCLUDED
|
|
#define UI_SCROLL_BAR_H_INCLUDED
|
|
#pragma once
|
|
|
|
#include "ui/widget.h"
|
|
|
|
namespace ui {
|
|
|
|
class ScrollableViewDelegate {
|
|
public:
|
|
virtual ~ScrollableViewDelegate() { }
|
|
virtual gfx::Size visibleSize() const = 0;
|
|
virtual gfx::Point viewScroll() const = 0;
|
|
virtual void setViewScroll(const gfx::Point& pt) = 0;
|
|
};
|
|
|
|
class ScrollBar : public Widget {
|
|
public:
|
|
ScrollBar(int align, ScrollableViewDelegate* delegate);
|
|
|
|
Style* thumbStyle() { return m_thumbStyle; }
|
|
void setThumbStyle(Style* style) { m_thumbStyle = style; }
|
|
|
|
int getBarWidth() const { return m_barWidth; }
|
|
void setBarWidth(int barWidth) { m_barWidth = barWidth; }
|
|
|
|
int getPos() const { return m_pos; }
|
|
void setPos(int pos);
|
|
|
|
int size() const { return m_size; }
|
|
void setSize(int size);
|
|
|
|
// For themes
|
|
void getScrollBarThemeInfo(int* pos, int* len);
|
|
|
|
protected:
|
|
// Events
|
|
bool onProcessMessage(Message* msg) override;
|
|
void onInitTheme(InitThemeEvent& ev) override;
|
|
void onPaint(PaintEvent& ev) override;
|
|
|
|
private:
|
|
void getScrollBarInfo(int* _pos, int* _len, int* _bar_size, int* _viewport_size);
|
|
|
|
ScrollableViewDelegate* m_delegate;
|
|
Style* m_thumbStyle;
|
|
int m_barWidth;
|
|
int m_pos;
|
|
int m_size;
|
|
|
|
static int m_wherepos;
|
|
static int m_whereclick;
|
|
};
|
|
|
|
} // namespace ui
|
|
|
|
#endif
|