mirror of https://github.com/BOINC/boinc.git
154 lines
4.9 KiB
C++
154 lines
4.9 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wxPieCtrl.h
|
|
// Purpose: wxPieCtrl (v0.1.2)
|
|
// Author: Volodymir (T-Rex) Tryapichko
|
|
// Modified by: Frank Weiler, 10.10.2006
|
|
// Created: June-07-2005
|
|
// RCS-ID: $Id:
|
|
// Copyright: (c) Volodymir (T-Rex) Tryapichko
|
|
// Licence: wxWidgets license
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
#ifndef _WX_PIE_CTRL
|
|
#define _WX_PIE_CTRL
|
|
|
|
|
|
#include <wx/wx.h>
|
|
#include <wx/image.h>
|
|
#include <wx/dynarray.h>
|
|
|
|
#ifndef M_PI
|
|
#define M_PI 3.14159265358979
|
|
#endif
|
|
|
|
#if ! wxCHECK_VERSION(2,8,0)
|
|
WX_DECLARE_OBJARRAY(double, wxArrayDouble);
|
|
#endif
|
|
|
|
// ========================================================================
|
|
// wxPiePart
|
|
// ------------------------------------------------------------------------
|
|
/// This class is used for storing data in wxPieCtrl.
|
|
class wxPiePart
|
|
{
|
|
double m_Value;
|
|
wxColour m_Colour;
|
|
wxString m_Label;
|
|
public:
|
|
/// Default constructor
|
|
wxPiePart();
|
|
/// Parametrized constructor
|
|
/*!
|
|
\param value used for drawing the pie. Specifies the size of the sector.
|
|
\param colour specifies the colour of the sector
|
|
\param label specifies the text to be shown in diagram legend
|
|
*/
|
|
wxPiePart(double value, wxColour colour, wxString label = wxEmptyString);
|
|
/// Copy constructor
|
|
wxPiePart(const wxPiePart & part);
|
|
/// Returns the colour of sector
|
|
wxColour GetColour() {return m_Colour;}
|
|
/// Sets the colour of sector
|
|
void SetColour(wxColour colour) {m_Colour = colour;}
|
|
/// Returns the size of sector
|
|
double GetValue() {return m_Value;}
|
|
/// Sets the size of sector
|
|
void SetValue(double value) {m_Value = fabs(value);}
|
|
/// Returns the label of sector
|
|
wxString GetLabel() {return m_Label;}
|
|
/// Sets the label of sector
|
|
void SetLabel(wxString value) {m_Label = value;}
|
|
//
|
|
};
|
|
|
|
WX_DECLARE_OBJARRAY(wxPiePart, wxPieSeries);
|
|
|
|
// ========================================================================
|
|
// wxPieCtrl
|
|
// ------------------------------------------------------------------------
|
|
/// The component for drawing pie diagrams
|
|
class wxPieCtrl : public wxWindow
|
|
{
|
|
protected:
|
|
int m_padding;
|
|
wxBitmap m_CanvasBitmap;
|
|
wxMemoryDC m_CanvasDC;
|
|
wxColour m_BackColour;
|
|
bool m_CanRepaint;
|
|
bool m_ShowEdges;
|
|
int m_lastCoveredPart;
|
|
// parameters affecting legend
|
|
wxFont m_TitleFont;
|
|
wxFont m_LabelFont;
|
|
bool m_LegendIsTransparent;
|
|
wxColour m_TitleColour;
|
|
wxColour m_LabelColour;
|
|
wxColour m_LegendBackColour;
|
|
unsigned int m_legendHorBorder;
|
|
unsigned int m_LegendVerBorder;
|
|
wxString m_szTitle;
|
|
|
|
//internal methods
|
|
void GetPartAngles(wxArrayDouble & angles);
|
|
void RecreateCanvas();
|
|
int GetCoveredPiePart(int x,int y);
|
|
void DrawParts(wxRect& pieRect);
|
|
void DrawLegend(int left, int top);
|
|
void Draw(wxPaintDC & pdc);
|
|
#if (defined(__WXMAC__) && wxCHECK_VERSION(2,8,2))
|
|
void DrawEllipticArc( wxCoord x, wxCoord y, wxCoord w, wxCoord h,
|
|
double sa, double ea );
|
|
#endif
|
|
public:
|
|
/// An array of wxPiePart objects for storing information about sectors
|
|
wxPieSeries m_Series;
|
|
|
|
wxPieCtrl(wxWindow * parent, wxWindowID id = wxID_ANY, wxPoint pos = wxDefaultPosition,
|
|
wxSize sz = wxDefaultSize, long style = 0, wxString name = wxT("wxPieCtrl"));
|
|
|
|
wxColour GetBackColour();
|
|
void SetBackColour(wxColour colour);
|
|
|
|
bool GetShowEdges();
|
|
void SetShowEdges(bool value);
|
|
|
|
void SetPadding(int pad);
|
|
int GetPadding();
|
|
virtual void Refresh(bool eraseBackground = true, const wxRect* rect = NULL);
|
|
|
|
/// Returns transparency flag of legend box
|
|
bool IsTransparent() {return m_LegendIsTransparent;}
|
|
/// Sets transparency flag of legend box
|
|
void SetTransparent(bool value);
|
|
/// Returns the font used for displaying the labels of sectors
|
|
wxFont GetLabelFont() {return m_LabelFont;}
|
|
/// Sets the font used for displaying the labels of sectors
|
|
void SetLabelFont(wxFont font);
|
|
/// Returns the size of horizontal border of legend box
|
|
unsigned int GeHorLegendBorder() {return m_legendHorBorder;}
|
|
/// Returns the size of vertical border of legend box
|
|
unsigned int GetVerLegendBorder() {return m_LegendVerBorder;}
|
|
/// Sets the size of horizontal border of legend box
|
|
void SetHorLegendBorder(unsigned int value);
|
|
/// Sets the size of vertical border of legend box
|
|
void SetVerLegendBorder(unsigned int value);
|
|
/// Returns the colour used for displaying the labels of sectors
|
|
wxColour GetLabelColour() {return m_LabelColour;}
|
|
/// Sets the colour used for displaying the labels of sectors
|
|
void SetLabelColour(wxColour colour);
|
|
/// Returns the colour used for displaying lagend box background
|
|
wxColour GetLegendBackColour() {return m_LegendBackColour;}
|
|
/// Sets the colour used for displaying legend box background
|
|
void SetLegendBackColour(wxColour colour);
|
|
|
|
void SetLabel(const wxString& label);
|
|
|
|
|
|
DECLARE_EVENT_TABLE()
|
|
void OnPaint(wxPaintEvent & event);
|
|
void OnSize(wxSizeEvent & event);
|
|
void OnMouseMove(wxMouseEvent& ev);
|
|
void OnEraseBackground(wxEraseEvent & /*event*/);
|
|
};
|
|
|
|
#endif
|