💿🐜 Antkeeper source code https://antkeeper.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

61 lines
1.4 KiB

#ifndef TOOLBAR_HPP
#define TOOLBAR_HPP
#include "ui.hpp"
#include <functional>
#include <emergent/emergent.hpp>
using namespace Emergent;
class Toolbar
{
public:
Toolbar();
void setToolbarTopTexture(Texture2D* texture);
void setToolbarBottomTexture(Texture2D* texture);
void setToolbarMiddleTexture(Texture2D* texture);
void setButtonRaisedTexture(Texture2D* texture);
void setButtonDepressedTexture(Texture2D* texture);
void resize();
void addButton(Texture2D* iconTexture, std::function<void()> pressCallback, std::function<void()> releaseCallback);
void pressButton(std::size_t index);
void releaseButton(std::size_t index);
const UIContainer* getContainer() const;
UIContainer* getContainer();
private:
Texture2D* toolbarTopTexture;
Texture2D* toolbarBottomTexture;
Texture2D* toolbarMiddleTexture;
Texture2D* buttonRaisedTexture;
Texture2D* buttonDepressedTexture;
UIContainer toolbarContainer;
UIImage toolbarTopImage;
UIImage toolbarBottomImage;
UIImage toolbarMiddleImage;
std::vector<UIImage*> buttons;
std::vector<UIImage*> icons;
std::vector<std::function<void()>> pressCallbacks;
std::vector<std::function<void()>> releaseCallbacks;
std::size_t depressedButtonIndex;
};
inline const UIContainer* Toolbar::getContainer() const
{
return &toolbarContainer;
}
inline UIContainer* Toolbar::getContainer()
{
return &toolbarContainer;
}
#endif // TOOLBAR_HPP