File: bargraphwidget.cpp

package info (click to toggle)
asc 2.4.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 75,080 kB
  • ctags: 24,943
  • sloc: cpp: 155,023; sh: 8,829; ansic: 6,890; makefile: 650; perl: 138
file content (70 lines) | stat: -rw-r--r-- 2,110 bytes parent folder | download | duplicates (8)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#include "bargraphwidget.h"

#include <pgapplication.h>

BarGraphWidget:: BarGraphWidget (PG_Widget *parent, const PG_Rect &rect, Direction direction ) : PG_ThemeWidget( parent, rect, false ), fraction(1), dir(direction)
{
}

void BarGraphWidget::eventBlit (SDL_Surface *surface, const PG_Rect &src, const PG_Rect &dst)
{
   PG_Rect d = dst;
   if ( dir == l2r ) {
      d.w = min( max(0, int( float(dst.w) * fraction)), int(dst.w)) ;
   }
   if ( dir == r2l ) {
      int x2 = d.x + d.w;
      d.w = min( max(0, int( float(dst.w) * fraction)), int(dst.w)) ;
      d.x = x2 - d.w;
   }
   if ( dir == t2b ) {
      d.h = min( max(0, int( float(dst.h) * fraction)), int(dst.h)) ;
   }
   if ( dir == b2t ) {
      int y2 = d.y + d.h;
      d.h = min( max(0, int( float(dst.h) * fraction)), int(dst.h)) ;
      d.y = y2 - d.h;
   }

   if ( d.h <= 0 || d.w <= 0 )
      return;


/*   PG_Draw::DrawThemedSurface(
   surface,
   d,
   my_has_gradient ? &my_gradient : 0,
   my_background,
   my_backgroundMode,
   my_blendLevel );
          */

   Uint32 c = color.MapRGBA( PG_Application::GetScreen()->format, 255-GetTransparency());
   for ( Colors::iterator i = colors.begin(); i != colors.end(); ++i)
      if ( fraction < i->first ) {
      PG_Color col = i->second;
      c = col.MapRGBA( PG_Application::GetScreen()->format, 255-GetTransparency());
      }


      SDL_FillRect(PG_Application::GetScreen(), &d, c);

}


void BarGraphWidget::setFraction( float f )
{
   fraction = f;
}