Colobot
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
src
ui
controls
control.h
1
/*
2
* This file is part of the Colobot: Gold Edition source code
3
* Copyright (C) 2001-2015, Daniel Roux, EPSITEC SA & TerranovaTeam
4
* http://epsitec.ch; http://colobot.info; http://github.com/colobot
5
*
6
* This program is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
* See the GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program. If not, see http://gnu.org/licenses
18
*/
19
20
#pragma once
21
22
#include "
common/event.h
"
23
24
#include "
graphics/engine/text.h
"
25
26
#include <string>
27
28
class
CRobotMain
;
29
class
CSoundInterface
;
30
31
namespace
Gfx
32
{
33
class
CEngine;
34
class
CParticle;
35
}
36
37
38
namespace
Ui
39
{
40
41
enum
ControlState
42
{
43
STATE_ENABLE = (1<<0),
// active
44
STATE_CHECK = (1<<1),
// pressed
45
STATE_HILIGHT = (1<<2),
// overflown by mouse
46
STATE_PRESS = (1<<3),
// pressed by mouse
47
STATE_VISIBLE = (1<<4),
// visible
48
STATE_DEAD = (1<<5),
// inaccessible (x)
49
STATE_DEFAULT = (1<<6),
// actuated by RETURN
50
STATE_OKAY = (1<<7),
// green point at the bottom right
51
STATE_SHADOW = (1<<8),
// shadow
52
STATE_GLINT = (1<<9),
// dynamic reflection
53
STATE_CARD = (1<<10),
// tab
54
STATE_EXTEND = (1<<11),
// extended mode
55
STATE_SIMPLY = (1<<12),
// undecorated
56
STATE_FRAME = (1<<13),
// framework highlighting
57
STATE_WARNING = (1<<14),
// framework hatched yellow / black
58
STATE_VALUE = (1<<15),
// displays the value
59
STATE_RUN = (1<<16)
// running program
60
};
61
62
63
64
class
CControl
65
{
66
public
:
67
CControl
();
68
virtual
~
CControl
();
69
70
virtual
bool
Create(
Math::Point
pos,
Math::Point
dim,
int
icon,
EventType
eventType);
71
72
virtual
bool
EventProcess(
const
Event
&event);
73
74
virtual
void
SetPos(
Math::Point
pos);
75
virtual
Math::Point
GetPos();
76
virtual
void
SetDim(
Math::Point
dim);
77
virtual
Math::Point
GetDim();
78
virtual
bool
SetState(
int
state,
bool
bState);
79
virtual
bool
SetState(
int
state);
80
virtual
bool
ClearState(
int
state);
81
virtual
bool
TestState(
int
state);
82
virtual
int
GetState();
83
virtual
void
SetIcon(
int
icon);
84
virtual
int
GetIcon();
85
virtual
void
SetName(std::string name,
bool
bTooltip=
true
);
86
virtual
std::string GetName();
87
virtual
void
SetTextAlign(
Gfx::TextAlign
mode);
88
virtual
int
GetTextAlign();
89
virtual
void
SetFontSize(
float
size);
90
virtual
float
GetFontSize();
91
virtual
void
SetFontStretch(
float
stretch);
92
virtual
float
GetFontStretch();
93
virtual
void
SetFontType(
Gfx::FontType
font);
94
virtual
Gfx::FontType
GetFontType();
95
virtual
bool
SetTooltip(std::string name);
96
virtual
bool
GetTooltip(
Math::Point
pos, std::string &name);
97
virtual
void
SetFocus(
CControl
* focusControl);
98
virtual
bool
GetFocus();
99
100
virtual
EventType
GetEventType();
101
102
virtual
void
Draw();
103
104
protected
:
105
void
GlintDelete();
106
void
GlintCreate(
Math::Point
ref,
bool
bLeft=
true
,
bool
bUp=
true
);
107
void
GlintFrame(
const
Event
&event);
108
void
DrawPart(
int
icon,
float
zoom,
float
ex);
109
void
DrawIcon(
Math::Point
pos,
Math::Point
dim,
Math::Point
uv1,
Math::Point
uv2,
float
ex=0.0f);
110
void
DrawIcon(
Math::Point
pos,
Math::Point
dim,
Math::Point
uv1,
Math::Point
uv2,
Math::Point
corner,
float
ex);
111
void
DrawWarning(
Math::Point
pos,
Math::Point
dim);
112
void
DrawShadow(
Math::Point
pos,
Math::Point
dim,
float
deep=1.0f);
113
virtual
bool
Detect(
Math::Point
pos);
114
115
std::string GetResourceName(
EventType
eventType);
116
117
protected
:
118
Gfx::CEngine
* m_engine;
119
Gfx::CParticle
* m_particle;
120
CEventQueue
* m_event;
121
CRobotMain
* m_main;
122
CSoundInterface
* m_sound;
123
124
Math::Point
m_pos;
// corner upper / left
125
Math::Point
m_dim;
// dimensions
126
int
m_icon;
127
EventType
m_eventType;
// message to send when clicking
128
int
m_state;
// states (STATE_ *)
129
float
m_fontSize;
// size of the button name
130
float
m_fontStretch;
// stretch of the font
131
Gfx::FontType
m_fontType;
// type of font
132
Gfx::TextAlign
m_textAlign;
//type of alignment //comes in the place of m_justif
133
std::string m_name;
// name of the button
134
std::string m_tooltip;
// name of tooltip
135
bool
m_bFocus;
136
bool
m_bCapture;
137
138
bool
m_bGlint;
139
Math::Point
m_glintCorner1;
140
Math::Point
m_glintCorner2;
141
float
m_glintProgress;
142
Math::Point
m_glintMouse;
143
};
144
145
}
// namespace Ui
Ui
Definition:
robotmain.h:107
text.h
Text rendering - CText class.
CEventQueue
Global event queue.
Definition:
event.h:840
CRobotMain
Definition:
robotmain.h:151
Gfx::CParticle
Particle engine.
Definition:
particle.h:223
Math::Point
2D point
Definition:
point.h:50
Gfx
Namespace for (new) graphics code.
Definition:
app.h:49
Gfx::CEngine
The graphics engine.
Definition:
engine.h:620
event.h
Event types, structs and event queue.
Gfx::TextAlign
TextAlign
Type of text alignment.
Definition:
text.h:53
EventType
EventType
Type of event message.
Definition:
event.h:41
Event
Event sent by system, interface or game.
Definition:
event.h:709
Ui::CControl
Definition:
control.h:64
Gfx::FontType
FontType
Type of font.
Definition:
text.h:71
CSoundInterface
Sound plugin interface.
Definition:
sound.h:57
Generated by
1.8.9.1