Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/gui/gl_gui/glgui_widget.cc @ 5397

Last change on this file since 5397 was 5397, checked in by bensch, 19 years ago

orxonox/trunk: Elemet2D-drawing better
prevent segfault in setParent with NULL as new Parent in Element2D and PNode

File size: 2.2 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
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 2, or (at your option)
9   any later version.
10
11   ### File Specific:
12   main-programmer: Benjamin Grauer
13   co-programmer: ...
14*/
15
16#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
17
18#include "glgui_widget.h"
19
20#include "debug.h"
21
22using namespace std;
23
24/**
25 * standard constructor
26*/
27GLGuiWidget::GLGuiWidget ( ) : Element2D(NULL)
28{
29  this->init();
30}
31
32
33/**
34 * standard deconstructor
35 */
36GLGuiWidget::~GLGuiWidget()
37{
38
39}
40
41
42/**
43 * initializes the GUI-element
44 */
45void GLGuiWidget::init()
46{
47  this->setClassID(CL_GLGUI_WIDGET, "GLGuiWidget");
48
49  this->focusable = true;
50  this->clickable = true;
51  this->setVisibility(GLGUI_WIDGET_DEFAULT_VISIBLE);
52  this->setParent2D((Element2D*)NULL);
53
54  this->backMat = NULL;
55  this->backModel = 0;
56  this->frontMat = NULL;
57  this->frontModel = 0;
58
59  for (unsigned int i = 0; i < GLGuiSignalCount; i++)
60    this->widgetSignals[i] = NULL;
61}
62
63
64bool GLGuiWidget::focusOverWidget(float x, float y)
65{
66  if (this->getAbsCoor2D().x < x && this->getAbsCoor2D().x+ this->getSizeX2D() > x &&
67      this->getAbsCoor2D().y < y && this->getAbsCoor2D().y+ this->getSizeX2D() > y)
68    return true;
69  else
70    return false;
71}
72
73/**
74 * @brief connects a Signal to the Gui-Elements' Event.
75 * @param sinalType the Type of Signal to set. @see GLGuiSignalType
76 * @param signal the name of the Signal
77 */
78void GLGuiWidget::connectSignal(GLGuiSignalType signalType, Signal* signal)
79{
80  if (signal == NULL || signalType >= GLGuiSignalCount)
81    return;
82
83  if (this->widgetSignals[signalType] != NULL)
84    PRINTF(2)("Already connected a Signal to %s (%s) type %s... overwriting\n");
85
86  this->widgetSignals[signalType] = signal;
87}
88
89/**
90 * @brief removes a Signal from a Gui-ELements' Event
91 * @param signalType the type of Signal to remove.
92 */
93void GLGuiWidget::disconnectSignal(GLGuiSignalType signalType)
94{
95  if (signalType > GLGuiSignalCount)
96    return;
97
98  this->widgetSignals[signalType] = NULL;
99}
100
101
102void GLGuiWidget::show()
103{
104  this->setVisibility(true);
105}
Note: See TracBrowser for help on using the repository browser.