1///////////////////////////////////////////////////////////////////////////////
2// Name:        src/gauge/gaugecmn.cpp
3// Purpose:     wxGauge for wxUniversal
4// Author:      Vadim Zeitlin
5// Modified by:
6// Created:     20.02.01
7// RCS-ID:      $Id: gauge.cpp 42816 2006-10-31 08:50:17Z RD $
8// Copyright:   (c) 2001 SciTech Software, Inc. (www.scitechsoft.com)
9// License:     wxWindows licence
10///////////////////////////////////////////////////////////////////////////////
11
12// ============================================================================
13// declarations
14// ============================================================================
15
16// ----------------------------------------------------------------------------
17// headers
18// ----------------------------------------------------------------------------
19
20// For compilers that support precompilation, includes "wx.h".
21#include "wx/wxprec.h"
22
23#ifdef __BORLANDC__
24    #pragma hdrstop
25#endif
26
27#if wxUSE_GAUGE
28
29#include "wx/gauge.h"
30
31#ifndef WX_PRECOMP
32#endif //WX_PRECOMP
33
34#include "wx/univ/renderer.h"
35
36IMPLEMENT_DYNAMIC_CLASS(wxGauge, wxControl)
37
38// ============================================================================
39// implementation
40// ============================================================================
41
42// ----------------------------------------------------------------------------
43// wxGauge creation
44// ----------------------------------------------------------------------------
45
46void wxGauge::Init()
47{
48    m_gaugePos =
49    m_rangeMax = 0;
50}
51
52bool wxGauge::Create(wxWindow *parent,
53                     wxWindowID id,
54                     int range,
55                     const wxPoint& pos,
56                     const wxSize& size,
57                     long style,
58                     const wxValidator& validator,
59                     const wxString& name)
60{
61    if ( !wxGaugeBase::Create(parent, id, range, pos, size, style,
62                              validator, name) )
63    {
64        return false;
65    }
66
67    SetInitialSize(size);
68
69    return true;
70}
71
72// ----------------------------------------------------------------------------
73// wxGauge range/position
74// ----------------------------------------------------------------------------
75
76void wxGauge::SetRange(int range)
77{
78    wxGaugeBase::SetRange(range);
79
80    Refresh();
81}
82
83void wxGauge::SetValue(int pos)
84{
85    wxGaugeBase::SetValue(pos);
86
87    Refresh();
88}
89
90// ----------------------------------------------------------------------------
91// wxGauge geometry
92// ----------------------------------------------------------------------------
93
94wxSize wxGauge::DoGetBestClientSize() const
95{
96    wxSize size = GetRenderer()->GetProgressBarStep();
97
98    // these adjustments are really ridiculous - they are just done to find the
99    // "correct" result under Windows (FIXME)
100    if ( IsVertical() )
101    {
102        size.x = (3*size.y) / 2 + 2;
103        size.y = wxDefaultCoord;
104    }
105    else
106    {
107        size.y = (3*size.x) / 2 + 2;
108        size.x = wxDefaultCoord;
109    }
110
111    return size;
112}
113
114// ----------------------------------------------------------------------------
115// wxGauge drawing
116// ----------------------------------------------------------------------------
117
118wxBorder wxGauge::GetDefaultBorder() const
119{
120    return wxBORDER_STATIC;
121}
122
123void wxGauge::DoDraw(wxControlRenderer *renderer)
124{
125    renderer->DrawProgressBar(this);
126}
127
128#endif // wxUSE_GAUGE
129