File: gradient.h

package info (click to toggle)
fityk 1.3.2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,772 kB
  • sloc: cpp: 34,595; ansic: 4,676; python: 963; makefile: 384; sh: 119; xml: 91; java: 31; ruby: 27; perl: 25
file content (48 lines) | stat: -rw-r--r-- 1,486 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// This file is part of fityk program. Copyright 2001-2013 Marcin Wojdyr
// Licence: GNU General Public License ver. 2+

#ifndef FITYK_WX_GRADIENT_H_
#define FITYK_WX_GRADIENT_H_

#include <vector>
#include <wx/odcombo.h>
#include <wx/clrpicker.h>

class GradientDlg : public wxDialog
{
public:
    GradientDlg(wxWindow *parent, wxWindowID id,
                const wxColour& first_col, const wxColour& last_col);
    void OnColor(wxColourPickerEvent&) { display_->Refresh(); }
    void OnRadioChanged(wxCommandEvent &) { display_->Refresh(); }
    wxColour get_value(double x);
private:
    wxRadioButton *rb1_, *rb2_, *rb3_, *rb4_;
    wxColourPickerCtrl *from_cp_, *to_cp_;
    wxPanel *display_;
};


class MultiColorCombo : public wxOwnerDrawnComboBox
{
public:
    MultiColorCombo(wxWindow* parent, const wxColour* bg_color,
                    std::vector<wxColour>& colors);
    virtual void OnDrawItem(wxDC& dc, const wxRect& rect,
                            int item, int flags) const;
    virtual wxCoord OnMeasureItem(size_t) const { return 24; }
    virtual wxCoord OnMeasureItemWidth(size_t) const
        { return colors_.size() * 2 + 8; }
    virtual wxSize DoGetBestSize() const;

private:
    static const wxColour palette[21];
    const wxColour* bg_color_;
    // this class does not resize colors_, only changes values
    std::vector<wxColour>& colors_;

    wxColour get_color(int selection, int i) const;
    void OnSelection(wxCommandEvent& event);
};

#endif