PieDock  1.6.3
ActiveIndicator.h
1 /*
2  * O ,-
3  * ° o . -´ ' ,-
4  * ° .´ ` . ´,´
5  * ( ° )) . (
6  * `-;_ . -´ `.`.
7  * `._' ´
8  *
9  * Copyright (c) 2007-2010 Markus Fisch <mf@markusfisch.de>
10  *
11  * Licensed under the MIT license:
12  * http://www.opensource.org/licenses/mit-license.php
13  */
14 #ifndef _PieDock_ActiveIndicator_
15 #define _PieDock_ActiveIndicator_
16 
17 #include "ArgbSurfaceSizeMap.h"
18 
19 namespace PieDock
20 {
27  {
28  public:
29  ActiveIndicator() : sizeMap( 0 ) { reset(); }
30  virtual ~ActiveIndicator() { clear(); }
31  inline ArgbSurfaceSizeMap *getSizeMap() const {
32  return sizeMap; }
33  inline const int getX( int s, int i ) const
34  {
35  switch( xAlign )
36  {
37  default:
38  case Left:
39  return 0;
40  case Center:
41  return (i-s)>>1;
42  case Right:
43  return i-s;
44  }
45  }
46  inline const int getY( int s, int i ) const
47  {
48  switch( yAlign )
49  {
50  default:
51  case Top:
52  return 0;
53  case Center:
54  return (i-s)>>1;
55  case Bottom:
56  return i-s;
57  }
58  }
59  virtual void load( std::string );
60  virtual void parseX( std::string );
61  virtual void parseY( std::string );
62  virtual void reset();
63 
64  private:
65  enum Alignment
66  {
67  Left,
68  Right,
69  Top,
70  Bottom,
71  Center
72  };
73 
74  ArgbSurfaceSizeMap *sizeMap;
75  Alignment xAlign;
76  Alignment yAlign;
77 
78  void clear();
79  };
80 }
81 
82 #endif