Skip to content

Commit d89172c

Browse files
committed
Implement PBMFont::getCenteredYPos.
1 parent db79f79 commit d89172c

File tree

7 files changed

+38
-15
lines changed

7 files changed

+38
-15
lines changed

src/bin/daemon/LCDPlugins/LCDPlugin.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -195,23 +195,25 @@ void LCDPlugin::writeStringOnFrame(
195195
const FontID fontID,
196196
const std::string & string,
197197
const int16_t PBMXPos,
198-
const uint16_t PBMYPos)
198+
const int16_t PBMYPos)
199199
{
200200
try {
201201
#if DEBUGGING_ON && DEBUG_LCD_PLUGINS
202202
LOG(DEBUG2) << this->getPluginName() << " PBM # " << _frameIndex << " - writing string : " << string;
203203
#endif
204-
uint16_t XPos = 0;
205-
if( PBMXPos < 0 ) { /* centered */
206-
XPos = pFonts->getCenteredXPos(fontID, string);
207-
}
208-
else {
209-
XPos = static_cast<uint16_t>(PBMXPos);
210-
}
204+
uint16_t XPos, YPos = 0;
205+
206+
XPos = (PBMXPos < 0) ? /* centered */
207+
pFonts->getCenteredXPos(fontID, string) :
208+
static_cast<uint16_t>(PBMXPos);
209+
210+
YPos = (PBMYPos < 0) ? /* centered */
211+
pFonts->getCenteredYPos(fontID) :
212+
static_cast<uint16_t>(PBMYPos);
211213

212214
for(const char & c : string) {
213215
const std::string character(1, c);
214-
pFonts->printCharacterOnFrame( fontID, (*_itCurrentFrame)._PBMData, character, XPos, PBMYPos );
216+
pFonts->printCharacterOnFrame( fontID, (*_itCurrentFrame)._PBMData, character, XPos, YPos );
215217
} /* for each character in the string */
216218
}
217219
catch (const GLogiKExcept & e) {
@@ -224,7 +226,7 @@ void LCDPlugin::writeStringOnLastFrame(
224226
const FontID fontID,
225227
const std::string & string,
226228
const int16_t PBMXPos,
227-
const uint16_t PBMYPos)
229+
const int16_t PBMYPos)
228230
{
229231
try {
230232
if( _PBMFrames.empty() )

src/bin/daemon/LCDPlugins/LCDPlugin.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,15 +122,15 @@ class LCDPlugin
122122
const FontID fontID,
123123
const std::string & string,
124124
const int16_t PBMXPos,
125-
const uint16_t PBMYPos
125+
const int16_t PBMYPos
126126
);
127127

128128
void writeStringOnLastFrame(
129129
FontsManager* const pFonts,
130130
const FontID fontID,
131131
const std::string & string,
132132
const int16_t PBMXPos,
133-
const uint16_t PBMYPos
133+
const int16_t PBMYPos
134134
);
135135

136136
void drawProgressBarOnFrame(

src/bin/daemon/LCDPlugins/PBMFont.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,13 @@ const uint16_t PBMFont::getCenteredXPos(const std::string & string)
125125
return static_cast<uint16_t>(XPos/2);
126126
}
127127

128+
const uint16_t PBMFont::getCenteredYPos(void)
129+
{
130+
uint16_t YPos = PBM_HEIGHT; // FIXME LCD_HEIGHT
131+
YPos -= _charHeight;
132+
return static_cast<uint16_t>(YPos/2);
133+
}
134+
128135
void PBMFont::printCharacterOnFrame(
129136
PBMDataArray & frame,
130137
const std::string & character,

src/bin/daemon/LCDPlugins/PBMFont.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class PBMFont
4545
virtual ~PBMFont(void);
4646

4747
const uint16_t getCenteredXPos(const std::string & string);
48+
const uint16_t getCenteredYPos(void);
4849

4950
void printCharacterOnFrame(
5051
PBMDataArray & frame,

src/bin/daemon/LCDPlugins/endscreen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ void Endscreen::init(FontsManager* const pFonts, const std::string & product)
5656
PBMDirectory /= _plugin.getName();
5757

5858
this->addPBMClearedFrame(); /* frame #0 */
59-
this->writeStringOnLastFrame(pFonts, FontID::DEJAVUSANSBOLD1616, product, -1, 10);
59+
this->writeStringOnLastFrame(pFonts, FontID::DEJAVUSANSBOLD1616, product, -1, -1);
6060

6161
//this->addPBMFrame(PBMDirectory, "endscreen.pbm", 1); /* frame #0 */
6262

src/bin/daemon/LCDPlugins/fontsManager.cpp

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ FontsManager::~FontsManager()
4444

4545
const uint16_t FontsManager::getCenteredXPos(
4646
const FontID fontID,
47-
const std::string & string
48-
) {
47+
const std::string & string)
48+
{
4949
try {
5050
return _fonts.at(fontID)->getCenteredXPos(string);
5151
}
@@ -55,6 +55,17 @@ const uint16_t FontsManager::getCenteredXPos(
5555
}
5656
}
5757

58+
const uint16_t FontsManager::getCenteredYPos(const FontID fontID)
59+
{
60+
try {
61+
return _fonts.at(fontID)->getCenteredYPos();
62+
}
63+
catch (const std::out_of_range& oor) {
64+
this->initializeFont(fontID);
65+
return _fonts.at(fontID)->getCenteredYPos();
66+
}
67+
}
68+
5869
void FontsManager::printCharacterOnFrame(
5970
const FontID fontID,
6071
PBMDataArray & frame,

src/bin/daemon/LCDPlugins/fontsManager.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ class FontsManager
4444
const std::string & string
4545
);
4646

47+
const uint16_t getCenteredYPos(const FontID fontID);
48+
4749
void printCharacterOnFrame(
4850
const FontID fontID,
4951
PBMDataArray & frame,

0 commit comments

Comments
 (0)