Merge branch 'experiment' of git+ssh://repo.or.cz/srv/git/glgame
[glgame.git] / src / menuobjbutton.cpp
blob710887d4f4e6d42624ea10b81d6a8f250ef9f686
1 #include "menuobjbutton.h"
3 MenuObjButton::MenuObjButton()
4 : MenuButtonTrigger()
7 obj = 0; // указатель на объект отображаемый на кнопке
12 MenuObjButton::~MenuObjButton()
19 /*!
20 \fn MenuObjButton::display()
22 void MenuObjButton::display()
25 // рисуем "подложку" из родительского класса
26 MenuButtonTrigger::display();
28 // нету объекта и выводить нечего
29 if ( !obj ) return;
31 Vector2D l_d, r_u;
32 obj->getDimensionsBoxWithChilds(&l_d, &r_u);
34 Vector2D dm = r_u - l_d;
36 // найдём направление на центр DimBox относительно рисуемого объекта
37 Vector2D dm_center = l_d + dm * 0.5;
39 // коэффициент масштабирования для того чтоб любой объект в кнопку влез
40 Vector2D sz = size.getPositive();
42 Scalar scale_x = sz.val.x / dm.val.x;
43 Scalar scale_y = sz.val.y / dm.val.y;
45 // выберем какой коэффициент использовать в качестве ужимающего
46 Scalar scale;
47 if ( scale_x < scale_y ) scale = scale_x; else scale = scale_y;
49 scale *= 0.8; // чтоб от границы кнопки отодвинуть
51 // центр кнопки
52 Vector2D butt_center = pos + size * 0.5;
54 glPushMatrix();
56 glTranslatef( butt_center.val.x, butt_center.val.y, 0.0f );
57 glScalef ( scale, scale, scale );
59 glTranslatef( -dm_center.val.x, -dm_center.val.y, 0.0f );
61 obj->DisplayWithChilds();
63 glPopMatrix();