00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
#include <SDL.h>
00024
#include "guitypedefs.h"
00025
#include "guicolors.h"
00026
#ifdef _WIN32
00027
#pragma warning(push)
00028
00029
#include <yvals.h>
00030
00031
#pragma warning(disable: 4251)
00032
#pragma warning(disable: 4786) // identifier was truncated to 'number' characters in the debug information
00033
00034
00035
00036
00037
00038
#include <sge.h>
00039
00040
#pragma warning(pop)
00041
#else
00042
#include <sge.h>
00043
#endif
00044
00045
00046
#include "TTFont.h"
00047
#include "SDLControl.h"
00048
#include "Surface.h"
00049
#include "Progress.h"
00050
00051
00052
namespace gui
00053 {
00054
00055
00056 Progress::Progress(
Surface *s,
coord_t x,coord_t y,coord_t w,coord_t h,
SurfaceHelper *sh)
00057 :
Surface(s,x,y,w,h,sh)
00058 ,m_max(100)
00059 ,m_pos(0)
00060 {
00061 SetFrameColor(0,0,0);
00062 SetFrameWidth(1);
00063 }
00064
00065
00066 Progress::~Progress()
00067 {
00068 }
00069
00070
00071 void Progress::SetMax(
long x)
00072 {
00073
m_max = x;
00074 }
00075
00076
00077 void Progress::SetPos(
long x)
00078 {
00079
m_pos = x;
00080 SetDirty(
true);
00081 }
00082
00083
00084 void Progress::Draw(
void)
00085 {
00086 SDL_Rect r =
GetClientRect();
00087 SDL_Rect a = r;
00088
long w = (
m_pos * (
long)
GetW()) /
m_max;
00089
00090 SDL_FillRect(m_screen, &r,
GetBgColor());
00091
00092 a.w = w;
00093
if (a.w)
00094 {
00095
00096 SDL_FillRect(m_screen, &a,
GetFgColor());
00097 }
00098 a.x = r.x + w;
00099 a.w = r.w - w;
00100
if (a.w)
00101 {
00102 SDL_FillRect(m_screen, &a,
GetBgColor());
00103 }
00104 }
00105
00106
00107 void Progress::SetMax()
00108 {
00109
m_pos =
m_max;
00110 SetDirty(
true);
00111 }
00112
00113
00114 }
00115
00116