File: ScrollWidget.cpp

package info (click to toggle)
arkrpg 0.1.4b-6
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 6,104 kB
  • ctags: 5,445
  • sloc: cpp: 28,145; sh: 9,006; ansic: 3,259; makefile: 344
file content (89 lines) | stat: -rw-r--r-- 2,657 bytes parent folder | download | duplicates (3)
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/* $Id: ScrollWidget.cpp,v 1.6 2003/03/20 19:39:51 mrq Exp $
**
** Ark - Libraries, Tools & Programs for MMORPG developpements.
** Copyright (C) 1999-2003 The Contributors of the Ark Project
** Please see the file "AUTHORS" for a list of contributors
**
** 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.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <Client/ScrollWidget.h>
#include <Client/UICutText.h>

namespace Client
{
   ScrollWidget::ScrollWidget (UIRenderer *rnd,
			       Ark::String config) : 
      m_Style (rnd)
   {
      Ark::Config cfg;
      Ark::Cache *cache = &rnd->Rdr()->GetCache();

      cfg.Load(config);

      ////////////
      Ark::String bg = cfg.GetStr("scroll::BgImage", "");

      if (bg != "")
      {
	 cache->Get(Ark::V_TEXTURE, bg,  m_Bg);
	 if (m_Bg) m_Bg->Configure();
      }

      ///////////
      m_Text = cfg.GetStr("scroll::Text", "");
      m_Font = cfg.GetStr("scroll::Font", "arial1-2-ffffff");

      int expectedW = cfg.GetInt("scroll::ExpectedWidth", 800);
      
      const float scrfactor = scalar(rnd->width) / scalar(expectedW);
      m_MinX = (int) scrfactor*cfg.GetInt("scroll::MinX", 0);
      m_MaxX = (int) scrfactor*cfg.GetInt("scroll::MaxX", 0);
      m_MinY = (int) scrfactor*cfg.GetInt("scroll::MinY", 0);
      m_MaxY = (int) scrfactor*cfg.GetInt("scroll::MaxY", 0);      

      m_ScrollSpeed = (int) scrfactor*cfg.GetInt("scroll::ScrollSpeed", 50);
      
      m_CurPos = (float)m_MaxY;
   }

   ScrollWidget::~ScrollWidget ()
   {
   }
   
   void
   ScrollWidget::Render(UIRenderer *ui)
   {
      Ark::FontPtr font = ui->GetFont (m_Font);

      if (m_Bg)
      {
	 ui->SetTexture (m_Bg);
	 ui->DrawTexturedRectangle (0, 0, ui->width, ui->height);
      }
	 
      m_CurPos -= m_Timer.GetDelta() * scalar(m_ScrollSpeed);

      CutTextDraw cd;
      if (!CutText (ui, font.Get(), (int)m_CurPos, m_MinX, m_MinY,
		    m_MaxX, m_MaxY, m_Text, cd) && m_CurPos < 0)
	 m_CurPos = (float)m_MaxY;
      m_Timer.Update();
   }
}