|
Shinya Kitaoka |
810553 |
#pragma once
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#ifndef TNZ_COLORSLIDER_INCLUDED
|
|
Toshihiro Shimizu |
890ddd |
#define TNZ_COLORSLIDER_INCLUDED
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "tw/tw.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#undef DVAPI
|
|
Toshihiro Shimizu |
890ddd |
#undef DVVAR
|
|
Toshihiro Shimizu |
890ddd |
#ifdef TWIN_EXPORTS
|
|
Toshihiro Shimizu |
890ddd |
#define DVAPI DV_EXPORT_API
|
|
Toshihiro Shimizu |
890ddd |
#define DVVAR DV_EXPORT_VAR
|
|
Toshihiro Shimizu |
890ddd |
#else
|
|
Toshihiro Shimizu |
890ddd |
#define DVAPI DV_IMPORT_API
|
|
Toshihiro Shimizu |
890ddd |
#define DVVAR DV_IMPORT_VAR
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
class DVAPI TColorSlider : public TWidget {
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
class DVAPI Color : public TPixel32 {
|
|
Shinya Kitaoka |
120a6e |
public:
|
|
Shinya Kitaoka |
120a6e |
int h, s, v;
|
|
Shinya Kitaoka |
120a6e |
Color() : TPixel32(), h(0), s(0), v(0) {}
|
|
Shinya Kitaoka |
120a6e |
Color(const TPixel32 &c) : TPixel32(c), h(0), s(0), v(0) { updateHsv(); }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
Color &operator=(const TPixel32 &c) {
|
|
Shinya Kitaoka |
120a6e |
r = c.r;
|
|
Shinya Kitaoka |
120a6e |
g = c.g;
|
|
Shinya Kitaoka |
120a6e |
b = c.b;
|
|
Shinya Kitaoka |
120a6e |
m = c.m;
|
|
Shinya Kitaoka |
120a6e |
updateHsv();
|
|
Shinya Kitaoka |
120a6e |
return *this;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void updateRgb();
|
|
Shinya Kitaoka |
120a6e |
void updateHsv();
|
|
Shinya Kitaoka |
120a6e |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
class DVAPI Action {
|
|
Shinya Kitaoka |
120a6e |
public:
|
|
Shinya Kitaoka |
120a6e |
Action() {}
|
|
Shinya Kitaoka |
120a6e |
virtual ~Action() {}
|
|
Shinya Kitaoka |
120a6e |
virtual void notify(const Color &color, bool dragging) = 0;
|
|
Shinya Kitaoka |
120a6e |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
enum Type {
|
|
Shinya Kitaoka |
120a6e |
RedScale,
|
|
Shinya Kitaoka |
120a6e |
GreenScale,
|
|
Shinya Kitaoka |
120a6e |
BlueScale,
|
|
Shinya Kitaoka |
120a6e |
MatteScale,
|
|
Shinya Kitaoka |
120a6e |
HueScale,
|
|
Shinya Kitaoka |
120a6e |
SaturationScale,
|
|
Shinya Kitaoka |
120a6e |
ValueScale
|
|
Shinya Kitaoka |
120a6e |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TColorSlider(TWidget *parent, Type type, string name = "colorSlider");
|
|
Shinya Kitaoka |
120a6e |
~TColorSlider();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void draw();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void configureNotify(const TDimension &d);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void setType(Type type);
|
|
Shinya Kitaoka |
120a6e |
Type getType() const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
int getValue() const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void setColorValue(const Color &color);
|
|
Shinya Kitaoka |
120a6e |
Color getColorValue() const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void setAction(Action *action);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void enableLabel(bool on);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// void onTimer(int v);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void invalidate();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void notify(bool dragging); // chiama la callback
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
class Data;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Shinya Kitaoka |
120a6e |
Data *m_data;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
template <class t=""></class>
|
|
Shinya Kitaoka |
120a6e |
class TColorSliderAction : public TColorSlider::Action {
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
typedef void (T::*CommandMethod)(const TColorSlider::Color &color,
|
|
Shinya Kitaoka |
120a6e |
bool dragging);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TColorSliderAction(T *target, CommandMethod method)
|
|
Shinya Kitaoka |
120a6e |
: m_target(target), m_method(method){};
|
|
Shinya Kitaoka |
120a6e |
void notify(const TColorSlider::Color &color, bool dragging) {
|
|
Shinya Kitaoka |
120a6e |
(m_target->*m_method)(color, dragging);
|
|
Shinya Kitaoka |
120a6e |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Shinya Kitaoka |
120a6e |
T *m_target;
|
|
Shinya Kitaoka |
120a6e |
CommandMethod m_method;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#endif
|