Skip to content

Commit daf315b

Browse files
Radar screen brilliance (#93)
1 parent a1b28e7 commit daf315b

12 files changed

Lines changed: 109 additions & 35 deletions

bin/language-en.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ clear="Clear"
7979
past="Past"
8080
gain="Gain"
8181
rain="Rain"
82+
brill="Brill"
8283
weather = "Weather"
8384
visibility="Visibility"
8485
windDirection="Wind direction"

bin/language-es.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ clear="Borrar"
7979
past="Pasado"
8080
gain="Ganancia"
8181
rain="Lluvia"
82+
brill="Brill"
8283
weather ="Meteorología"
8384
visibility="Visibilidad"
8485
windDirection ="Dirección del viento"

bin/language-fr.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ clear="Effacer"
7979
past="Passé"
8080
gain="Gain"
8181
rain="Pluie"
82+
brill="Brill"
8283
weather = "Météo"
8384
visibility="Visibilité"
8485
windDirection = "Direction du vent"

src/GUIMain.cpp

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -565,12 +565,15 @@ void GUIMain::load(irr::IrrlichtDevice* device, Lang* language, std::vector<std:
565565
radarGainScrollbar = new irr::gui::ScrollDial(irr::core::vector2d<irr::s32>(0.0850*su,0.040*sh),0.02*su,guienv,mainRadarTab,GUI_ID_RADAR_GAIN_SCROLL_BAR);
566566
radarClutterScrollbar = new irr::gui::ScrollDial(irr::core::vector2d<irr::s32>(0.1425*su,0.040*sh),0.02*su,guienv,mainRadarTab,GUI_ID_RADAR_CLUTTER_SCROLL_BAR);
567567
radarRainScrollbar = new irr::gui::ScrollDial(irr::core::vector2d<irr::s32>(0.2000*su,0.040*sh),0.02*su,guienv,mainRadarTab,GUI_ID_RADAR_RAIN_SCROLL_BAR);
568+
radarBrillScrollbar = new irr::gui::ScrollDial(irr::core::vector2d<irr::s32>(0.2000 * su, 0.115 * sh), 0.01 * su, guienv, mainRadarTab, GUI_ID_RADAR_BRILL_SCROLL_BAR);
568569
(guienv->addStaticText(language->translate("gain").c_str(),irr::core::rect<irr::s32>(0.0600*su,0.070*sh,0.1100*su,0.100*sh),false,true,mainRadarTab))->setTextAlignment(irr::gui::EGUIA_CENTER,irr::gui::EGUIA_CENTER);
569570
(guienv->addStaticText(language->translate("clutter").c_str(),irr::core::rect<irr::s32>(0.1165*su,0.070*sh,0.1675*su,0.100*sh),false,true,mainRadarTab))->setTextAlignment(irr::gui::EGUIA_CENTER,irr::gui::EGUIA_CENTER);
570571
(guienv->addStaticText(language->translate("rain").c_str(),irr::core::rect<irr::s32>(0.1750*su,0.070*sh,0.2250*su,0.100*sh),false,true,mainRadarTab))->setTextAlignment(irr::gui::EGUIA_CENTER,irr::gui::EGUIA_CENTER);
572+
(guienv->addStaticText(language->translate("brill").c_str(), irr::core::rect<irr::s32>(0.1750 * su, 0.125 * sh, 0.2250 * su, 0.155 * sh), false, true, mainRadarTab))->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER);
571573
radarGainScrollbar->setSmallStep(2);
572574
radarClutterScrollbar->setSmallStep(2);
573575
radarRainScrollbar->setSmallStep(2);
576+
radarBrillScrollbar->setSmallStep(2);
574577

575578
eblLeftButton = guienv->addButton(irr::core::rect<irr::s32>(0.060*su,0.160*sh,0.115*su,0.190*sh),mainRadarTab,GUI_ID_RADAR_EBL_LEFT_BUTTON,language->translate("eblLeft").c_str());
576579
eblRightButton = guienv->addButton(irr::core::rect<irr::s32>(0.170*su,0.160*sh,0.225*su,0.190*sh),mainRadarTab,GUI_ID_RADAR_EBL_RIGHT_BUTTON,language->translate("eblRight").c_str());
@@ -585,15 +588,18 @@ void GUIMain::load(irr::IrrlichtDevice* device, Lang* language, std::vector<std:
585588
radarGainScrollbar2 = new irr::gui::ScrollDial(irr::core::vector2d<irr::s32>(0.040*radarSu,0.040*radarSu),0.03*radarSu,guienv,largeRadarControls,GUI_ID_RADAR_GAIN_SCROLL_BAR);
586589
radarClutterScrollbar2 = new irr::gui::ScrollDial(irr::core::vector2d<irr::s32>(0.105*radarSu,0.040*radarSu),0.03*radarSu,guienv,largeRadarControls,GUI_ID_RADAR_CLUTTER_SCROLL_BAR);
587590
radarRainScrollbar2 = new irr::gui::ScrollDial(irr::core::vector2d<irr::s32>(0.170*radarSu,0.040*radarSu),0.03*radarSu,guienv,largeRadarControls,GUI_ID_RADAR_RAIN_SCROLL_BAR);
591+
radarBrillScrollbar2 = new irr::gui::ScrollDial(irr::core::vector2d<irr::s32>(radarTL.X + 0.050 * radarSu, radarTL.Y + 0.700 * radarSu), 0.03 * radarSu, guienv, guienv->getRootGUIElement(), GUI_ID_RADAR_BRILL_SCROLL_BAR);
592+
radarBrillScrollbar2->setToolTipText(language->translate("brill").c_str());
588593

589594
radarGainScrollbar2->setSmallStep(2);
590595
radarClutterScrollbar2->setSmallStep(2);
591596
radarRainScrollbar2->setSmallStep(2);
597+
radarBrillScrollbar2->setSmallStep(2);
592598

593599
(guienv->addStaticText(language->translate("gain").c_str(),irr::core::rect<irr::s32>(0.010*radarSu,0.070*radarSu,0.070*radarSu,0.100*radarSu),false,true,largeRadarControls))->setTextAlignment(irr::gui::EGUIA_CENTER,irr::gui::EGUIA_CENTER);
594600
(guienv->addStaticText(language->translate("clutter").c_str(),irr::core::rect<irr::s32>(0.075*radarSu,0.070*radarSu,0.135*radarSu,0.100*radarSu),false,true,largeRadarControls))->setTextAlignment(irr::gui::EGUIA_CENTER,irr::gui::EGUIA_CENTER);
595601
(guienv->addStaticText(language->translate("rain").c_str(),irr::core::rect<irr::s32>(0.140*radarSu,0.070*radarSu,0.200*radarSu,0.100*radarSu),false,true,largeRadarControls))->setTextAlignment(irr::gui::EGUIA_CENTER,irr::gui::EGUIA_CENTER);
596-
602+
597603
guienv->addButton(irr::core::rect<irr::s32>(0.025*radarSu,0.110*radarSu,0.085*radarSu,0.160*radarSu),largeRadarControls,GUI_ID_RADAR_INCREASE_BUTTON,language->translate("increaserange").c_str());
598604
guienv->addButton(irr::core::rect<irr::s32>(0.025*radarSu,0.165*radarSu,0.085*radarSu,0.210*radarSu),largeRadarControls,GUI_ID_RADAR_DECREASE_BUTTON,language->translate("decreaserange").c_str());
599605

@@ -770,10 +776,12 @@ void GUIMain::load(irr::IrrlichtDevice* device, Lang* language, std::vector<std:
770776
radarGainScrollbar->drop();
771777
radarClutterScrollbar->drop();
772778
radarRainScrollbar->drop();
779+
radarBrillScrollbar->drop();
773780

774781
radarGainScrollbar2->drop();
775782
radarClutterScrollbar2->drop();
776783
radarRainScrollbar2->drop();
784+
radarBrillScrollbar2->drop();
777785

778786
//largeRadarControls->drop();
779787

@@ -952,6 +960,7 @@ void GUIMain::load(irr::IrrlichtDevice* device, Lang* language, std::vector<std:
952960
radarCursorRightButton2->setVisible(radarLarge);
953961
radarCursorUpButton2->setVisible(radarLarge);
954962
radarCursorDownButton2->setVisible(radarLarge);
963+
radarBrillScrollbar2->setVisible(radarLarge);
955964

956965
//weatherScrollbar->setVisible(showInterface);
957966
//rainScrollbar->setVisible(showInterface);
@@ -1185,10 +1194,12 @@ void GUIMain::load(irr::IrrlichtDevice* device, Lang* language, std::vector<std:
11851194
radarGainScrollbar->setPos(Utilities::round(guiData->radarGain));
11861195
radarClutterScrollbar->setPos(Utilities::round(guiData->radarClutter));
11871196
radarRainScrollbar->setPos(Utilities::round(guiData->radarRain));
1197+
radarBrillScrollbar->setPos(Utilities::round(guiData->radarBrill * 100));
11881198

11891199
radarGainScrollbar2->setPos(Utilities::round(guiData->radarGain));
11901200
radarClutterScrollbar2->setPos(Utilities::round(guiData->radarClutter));
11911201
radarRainScrollbar2->setPos(Utilities::round(guiData->radarRain));
1202+
radarBrillScrollbar2->setPos(Utilities::round(guiData->radarBrill * 100));
11921203

11931204
weatherScrollbar->setPos(Utilities::round(guiData->weather*10.0)); //(Weather scroll bar is 0-120, weather is 0-12)
11941205
rainScrollbar->setPos(Utilities::round(guiData->rain*10.0)); //(Rain scroll bar is 0-100, rain is 0-10)
@@ -1686,6 +1697,8 @@ guiTideHeight = guiData->tideHeight;
16861697
irr::s32 centreY;
16871698
irr::s32 radius;
16881699

1700+
irr::f32 brilliance = model->getBrilliance();
1701+
16891702
if (radarLarge) {
16901703
centreX = largeRadarScreenCentreX;
16911704
centreY = largeRadarScreenCentreY;
@@ -1700,7 +1713,7 @@ guiTideHeight = guiData->tideHeight;
17001713

17011714
//If full screen radar, draw a 4:3 box around the radar display area
17021715
if (radarLarge) {
1703-
device->getVideoDriver()->draw2DRectangleOutline(radarLargeRect,irr::video::SColor(255,0,0,0));
1716+
device->getVideoDriver()->draw2DRectangleOutline(radarLargeRect,brill(irr::video::SColor(255,0,0,0), brilliance));
17041717
}
17051718

17061719
irr::f32 radarHeadingIndicator;
@@ -1713,7 +1726,7 @@ guiTideHeight = guiData->tideHeight;
17131726
irr::s32 deltaY = -1*radius*cos(irr::core::DEGTORAD*radarHeadingIndicator);
17141727
irr::core::position2d<irr::s32> radarCentre (centreX,centreY);
17151728
irr::core::position2d<irr::s32> radarHeading (centreX+deltaX,centreY+deltaY);
1716-
device->getVideoDriver()->draw2DLine(radarCentre,radarHeading,irr::video::SColor(255, 255, 255, 255)); //Todo: Make these colours configurable
1729+
device->getVideoDriver()->draw2DLine(radarCentre,radarHeading,brill(irr::video::SColor(255, 255, 255, 255), brilliance)); //Todo: Make these colours configurable
17171730

17181731
//draw a look direction line
17191732
if (radarHeadUp) {
@@ -1725,19 +1738,19 @@ guiTideHeight = guiData->tideHeight;
17251738
irr::s32 deltaYView = -1*radius*cos(irr::core::DEGTORAD*radarHeadingIndicator);
17261739
irr::core::position2d<irr::s32> lookInner (centreX + 0.9*deltaXView,centreY + 0.9*deltaYView);
17271740
irr::core::position2d<irr::s32> lookOuter (centreX + deltaXView,centreY + deltaYView);
1728-
device->getVideoDriver()->draw2DLine(lookInner,lookOuter,irr::video::SColor(255, 255, 0, 0)); //Todo: Make these colours configurable
1741+
device->getVideoDriver()->draw2DLine(lookInner,lookOuter,brill(irr::video::SColor(255, 255, 0, 0), brilliance)); //Todo: Make these colours configurable
17291742

17301743
//draw an EBL line
17311744
irr::s32 deltaXEBL = radius*sin(irr::core::DEGTORAD*guiRadarEBLBrg);
17321745
irr::s32 deltaYEBL = -1*radius*cos(irr::core::DEGTORAD*guiRadarEBLBrg);
17331746
irr::core::position2d<irr::s32> eblOuter (centreX + deltaXEBL,centreY + deltaYEBL);
1734-
device->getVideoDriver()->draw2DLine(radarCentre,eblOuter,irr::video::SColor(255, 255, 0, 0));
1747+
device->getVideoDriver()->draw2DLine(radarCentre,eblOuter,brill(irr::video::SColor(255, 255, 0, 0), brilliance));
17351748
//draw EBL range
17361749
if (guiRadarEBLRangeNm > 0 && guiRadarRangeNm >= guiRadarEBLRangeNm) {
17371750
irr::f32 eblRangePx = radius*guiRadarEBLRangeNm/guiRadarRangeNm;
17381751
irr::u8 noSegments = eblRangePx/2;
17391752
if (noSegments < 10) {noSegments=10;}
1740-
device->getVideoDriver()->draw2DPolygon(radarCentre,eblRangePx,irr::video::SColor(255, 255, 0, 0),noSegments); //An n segment polygon, to approximate a circle
1753+
device->getVideoDriver()->draw2DPolygon(radarCentre,eblRangePx,brill(irr::video::SColor(255, 255, 0, 0), brilliance),noSegments); //An n segment polygon, to approximate a circle
17411754
}
17421755

17431756
//draw radar cursor
@@ -1747,7 +1760,7 @@ guiTideHeight = guiData->tideHeight;
17471760
//Plot if within the display and not at zero range
17481761
if (cursorPixelRadius <= radius && guiRadarCursorRangeNm > 0) {
17491762
irr::core::position2d<irr::s32> cursorCentre (centreX + deltaXCursor,centreY + deltaYCursor);
1750-
device->getVideoDriver()->draw2DPolygon(cursorCentre,radius/20,irr::video::SColor(255, 255, 0, 0),4); //a 4 segment polygon, i.e. a square!
1763+
device->getVideoDriver()->draw2DPolygon(cursorCentre,radius/20,brill(irr::video::SColor(255, 255, 0, 0), brilliance),4); //a 4 segment polygon, i.e. a square!
17511764
}
17521765

17531766
//Draw compass rose around radar (?Rotate with radar in head up and course up?)
@@ -1772,7 +1785,7 @@ guiTideHeight = guiData->tideHeight;
17721785
irr::core::position2d<irr::s32> ticInner (centreX + scaling*deltaXTic,centreY + scaling*deltaYTic);
17731786
irr::core::position2d<irr::s32> ticOuter (centreX + deltaXTic,centreY + deltaYTic);
17741787

1775-
device->getVideoDriver()->draw2DLine(ticInner,ticOuter,irr::video::SColor(255, 128, 128, 128));
1788+
device->getVideoDriver()->draw2DLine(ticInner,ticOuter,brill(irr::video::SColor(255, 128, 128, 128), brilliance));
17761789

17771790
//Show the angle if needed
17781791
if (showValue) {
@@ -1785,7 +1798,7 @@ guiTideHeight = guiData->tideHeight;
17851798
irr::s32 textEndX = textStartX+textWidth;
17861799
irr::s32 textStartY = centreY + 0.8*deltaYTic-0.5*textHeight;
17871800
irr::s32 textEndY = textStartY+textHeight;
1788-
guienv->getSkin()->getFont()->draw(angleText,irr::core::rect<irr::s32>(textStartX,textStartY,textEndX,textEndY),irr::video::SColor(255,128,128,128));
1801+
guienv->getSkin()->getFont()->draw(angleText,irr::core::rect<irr::s32>(textStartX,textStartY,textEndX,textEndY),brill(irr::video::SColor(255,128,128,128), brilliance));
17891802
}
17901803

17911804
}
@@ -1802,7 +1815,7 @@ guiTideHeight = guiData->tideHeight;
18021815
for (unsigned int i = 1; i<rangeRings; i++) {
18031816
irr::f32 ringRadius = radius*i/(float)rangeRings;
18041817
irr::u8 noSegments = ringRadius/2;
1805-
device->getVideoDriver()->draw2DPolygon(radarCentre,ringRadius,irr::video::SColor(128, 128, 128, 128),noSegments);
1818+
device->getVideoDriver()->draw2DPolygon(radarCentre,ringRadius,brill(irr::video::SColor(128, 128, 128, 128), brilliance),noSegments);
18061819
}
18071820

18081821
}
@@ -1867,3 +1880,10 @@ guiTideHeight = guiData->tideHeight;
18671880
{
18681881
linesText->setText(irr::core::stringw(textToShow.c_str()).c_str());
18691882
}
1883+
1884+
irr::video::SColor GUIMain::brill(irr::video::SColor originalColour, irr::f32 brilliance) const
1885+
{
1886+
irr::video::SColor black = irr::video::SColor(255, 0, 0, 0);
1887+
return originalColour.getInterpolated(black, brilliance);
1888+
1889+
}

src/GUIMain.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ struct GUIData {
6464
irr::f32 radarGain;
6565
irr::f32 radarClutter;
6666
irr::f32 radarRain;
67+
irr::f32 radarBrill;
6768
irr::f32 guiRadarEBLBrg;
6869
irr::f32 guiRadarEBLRangeNm;
6970
irr::f32 guiRadarCursorBrg;
@@ -136,6 +137,7 @@ class GUIMain //Create, build and update GUI
136137
GUI_ID_RADAR_GAIN_SCROLL_BAR,
137138
GUI_ID_RADAR_CLUTTER_SCROLL_BAR,
138139
GUI_ID_RADAR_RAIN_SCROLL_BAR,
140+
GUI_ID_RADAR_BRILL_SCROLL_BAR,
139141
GUI_ID_RADAR_EBL_LEFT_BUTTON,
140142
GUI_ID_RADAR_EBL_RIGHT_BUTTON,
141143
GUI_ID_RADAR_EBL_UP_BUTTON,
@@ -297,12 +299,15 @@ class GUIMain //Create, build and update GUI
297299
irr::gui::IGUIScrollBar* radarGainScrollbar;
298300
irr::gui::IGUIScrollBar* radarClutterScrollbar;
299301
irr::gui::IGUIScrollBar* radarRainScrollbar;
302+
irr::gui::IGUIScrollBar* radarBrillScrollbar;
300303

301304
irr::gui::IGUIRectangle* largeRadarControls; //Parent rectangle for large radar controls
302305
irr::gui::IGUIRectangle* largeRadarPIControls; //Parent for PI controls on large radar
303306
irr::gui::IGUIScrollBar* radarGainScrollbar2; //For large radar
304307
irr::gui::IGUIScrollBar* radarClutterScrollbar2; //For large radar
305308
irr::gui::IGUIScrollBar* radarRainScrollbar2; //For large radar
309+
irr::gui::IGUIScrollBar* radarBrillScrollbar2; //For large radar
310+
306311
irr::gui::IGUIButton* eblLeftButton2;
307312
irr::gui::IGUIButton* eblRightButton2;
308313
irr::gui::IGUIButton* eblUpButton2;
@@ -432,6 +437,7 @@ class GUIMain //Create, build and update GUI
432437
std::wstring f32To3dp(irr::f32 value);
433438
bool manuallyTriggerClick(irr::gui::IGUIButton* button);
434439
bool manuallyTriggerScroll(irr::gui::IGUIScrollBar* bar);
440+
irr::video::SColor brill(irr::video::SColor originalColour, irr::f32 brilliance) const;
435441

436442
};
437443

src/MyEventReceiver.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,11 @@ bool MyEventReceiver::OnEvent(const irr::SEvent &event)
415415
{
416416
model->setRadarRain(((irr::gui::IGUIScrollBar *)event.GUIEvent.Caller)->getPos());
417417
}
418+
if (id == GUIMain::GUI_ID_RADAR_BRILL_SCROLL_BAR)
419+
{
420+
irr::f32 value = ((irr::gui::IGUIScrollBar*)event.GUIEvent.Caller)->getPos() / 100.0; // Convert to from 0-100 to 0-1
421+
model->setBrilliance(value);
422+
}
418423
if (id == GUIMain::GUI_ID_WEATHER_SCROLL_BAR)
419424
{
420425
model->setWeather(((irr::gui::IGUIScrollBar *)event.GUIEvent.Caller)->getPos() / 10.0); // Scroll bar 0-120, weather 0-12

src/NumberToImage.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace NumberToImage
2525
const irr::u32 PADDING_PX = 1;
2626
const irr::video::SColor BG_COLOUR = irr::video::SColor(0,0,0,0);
2727

28-
irr::video::IImage* getImage(irr::u32 number, irr::IrrlichtDevice* dev)
28+
irr::video::IImage* getImage(irr::u32 number, irr::f32 brilliance, irr::IrrlichtDevice* dev)
2929
{
3030

3131
irr::core::stringc numberString = irr::core::stringc(number);
@@ -73,7 +73,7 @@ namespace NumberToImage
7373
for (irr::u32 character = 0; character<length; character++) {
7474
if (numberImages[character]) {
7575
irr::core::rect<irr::s32> sourceRect = irr::core::rect<irr::s32>(0,0,numberImages[character]->getDimension().Width,numberImages[character]->getDimension().Height);
76-
numberImages[character]->copyToWithAlpha(numberImage,irr::core::vector2d<irr::s32>(nextXStart,0),sourceRect,irr::video::SColor(255,255,255,255));
76+
numberImages[character]->copyToWithAlpha(numberImage,irr::core::vector2d<irr::s32>(nextXStart,0),sourceRect,irr::video::SColor(255,255 * brilliance,255 * brilliance,255 * brilliance));
7777
nextXStart += numberImages[character]->getDimension().Width + PADDING_PX;
7878
numberImages[character]->drop();
7979
}

src/NumberToImage.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
namespace NumberToImage
2323
{
2424

25-
irr::video::IImage* getImage(irr::u32 number, irr::IrrlichtDevice* dev);
25+
irr::video::IImage* getImage(irr::u32 number, irr::f32 brilliance, irr::IrrlichtDevice* dev);
2626

2727
}
2828

0 commit comments

Comments
 (0)