Stefan Schuermans commited on 2019-08-14 19:27:45
Showing 4 changed files, with 67 additions and 40 deletions.
| ... | ... |
@@ -65,7 +65,7 @@ void Game::updateConfig() |
| 65 | 65 |
} |
| 66 | 66 |
|
| 67 | 67 |
// color file was modified -> convert color, schedule redraw |
| 68 |
- if (colorUpdate(m_fileBackgroundColor, m_backgroundColor)) {
|
|
| 68 |
+ if (colorUpdate(m_fileBackgroundColor, 0, m_backgroundColor)) {
|
|
| 69 | 69 |
doRedraw = true; |
| 70 | 70 |
} |
| 71 | 71 |
|
| ... | ... |
@@ -319,26 +319,40 @@ void Game::number3x5(int anchorY, int anchorX, int alignY, int alignX, |
| 319 | 319 |
digits3x5(topY, leftX, digits, cd); |
| 320 | 320 |
} |
| 321 | 321 |
|
| 322 |
-/// process update of color file, return true on update |
|
| 323 |
-bool Game::colorUpdate(ColorFile &colorFile, ColorData &data) const |
|
| 322 |
+/** |
|
| 323 |
+ * @brief process update of color file |
|
| 324 |
+ * @param[in] colorFile file containing color as string |
|
| 325 |
+ * @param[in] def default color (grayscale) in case file is invalid (0..255) |
|
| 326 |
+ * @pram[out] data color data |
|
| 327 |
+ * @return true on update |
|
| 328 |
+ */ |
|
| 329 |
+bool Game::colorUpdate(ColorFile &colorFile, unsigned char def, |
|
| 330 |
+ ColorData &data) const |
|
| 324 | 331 |
{
|
| 325 | 332 |
if (colorFile.checkModified()) {
|
| 326 | 333 |
colorFile.update(); |
| 327 |
- color2data(colorFile, data); |
|
| 334 |
+ color2data(colorFile, def, data); |
|
| 328 | 335 |
return true; |
| 329 | 336 |
} else {
|
| 330 | 337 |
return false; |
| 331 | 338 |
} |
| 332 | 339 |
} |
| 333 | 340 |
|
| 334 |
-/// convert color to raw color data |
|
| 335 |
-void Game::color2data(ColorFile const &colorFile, ColorData &data) const |
|
| 341 |
+/** |
|
| 342 |
+ * @brief convert color to raw color data |
|
| 343 |
+ * @param[in] colorFile file containing color as string |
|
| 344 |
+ * @param[in] def default color (grayscale) in case file is invalid (0..255) |
|
| 345 |
+ * @pram[out] data color data |
|
| 346 |
+ */ |
|
| 347 |
+void Game::color2data(ColorFile const &colorFile, unsigned char def, |
|
| 348 |
+ ColorData &data) const |
|
| 336 | 349 |
{
|
| 337 |
- if (! m_fileFormat.m_valid || ! colorFile.m_valid) {
|
|
| 338 |
- data.clear(); |
|
| 339 |
- } else {
|
|
| 340 | 350 |
unsigned int channels = m_fileFormat.m_obj.m_channels; |
| 341 | 351 |
unsigned int maxval = m_fileFormat.m_obj.m_maxval; |
| 352 |
+ if (! m_fileFormat.m_valid || ! colorFile.m_valid) {
|
|
| 353 |
+ data.resize(m_fileFormat.m_obj.m_channels, |
|
| 354 |
+ (unsigned char)(def * maxval / 255.0 + 0.5)); |
|
| 355 |
+ } else {
|
|
| 342 | 356 |
data.resize(m_fileFormat.m_obj.m_channels); |
| 343 | 357 |
Color const &color = colorFile.m_obj; |
| 344 | 358 |
if (channels == 1) {
|
| ... | ... |
@@ -494,7 +508,7 @@ void Game::createImgBuf() |
| 494 | 508 |
m_imgBuf.resize(m_height * m_width * m_channels); |
| 495 | 509 |
|
| 496 | 510 |
// convert background color |
| 497 |
- color2data(m_fileBackgroundColor, m_backgroundColor); |
|
| 511 |
+ color2data(m_fileBackgroundColor, 0, m_backgroundColor); |
|
| 498 | 512 |
} |
| 499 | 513 |
|
| 500 | 514 |
/// tear down image buffer |
| ... | ... |
@@ -190,11 +190,24 @@ protected: |
| 190 | 190 |
void number3x5(int anchorY, int anchorX, int alignY, int alignX, |
| 191 | 191 |
int number, ColorData const &cd); |
| 192 | 192 |
|
| 193 |
- /// process update of color file, return true on update |
|
| 194 |
- bool colorUpdate(ColorFile &colorFile, ColorData &data) const; |
|
| 193 |
+ /** |
|
| 194 |
+ * @brief process update of color file |
|
| 195 |
+ * @param[in] colorFile file containing color as string |
|
| 196 |
+ * @param[in] def default color (grayscale) in case file is invalid (0..255) |
|
| 197 |
+ * @pram[out] data color data |
|
| 198 |
+ * @return true on update |
|
| 199 |
+ */ |
|
| 200 |
+ bool colorUpdate(ColorFile &colorFile, unsigned char def, |
|
| 201 |
+ ColorData &data) const; |
|
| 195 | 202 |
|
| 196 |
- /// convert color to raw color data |
|
| 197 |
- void color2data(ColorFile const &colorFile, ColorData &data) const; |
|
| 203 |
+ /** |
|
| 204 |
+ * @brief convert color to raw color data |
|
| 205 |
+ * @param[in] colorFile file containing color as string |
|
| 206 |
+ * @param[in] def default color (grayscale) in case file is invalid (0..255) |
|
| 207 |
+ * @pram[out] data color data |
|
| 208 |
+ */ |
|
| 209 |
+ void color2data(ColorFile const &colorFile, unsigned char def, |
|
| 210 |
+ ColorData &data) const; |
|
| 198 | 211 |
|
| 199 | 212 |
/// process update of value file, return true on update |
| 200 | 213 |
static bool valueUpdate(UIntFile &valueFile, ValueDescr const &descr, |
| ... | ... |
@@ -91,12 +91,12 @@ void Pong::updateConfigGame(bool &doReinit, bool &doRedraw) |
| 91 | 91 |
(void)doReinit; |
| 92 | 92 |
|
| 93 | 93 |
// color file was modified -> convert color, ask for redraw |
| 94 |
- if (colorUpdate(m_fileBallColor, m_ballColor)) { doRedraw = true; }
|
|
| 95 |
- if (colorUpdate(m_fileLineColor, m_lineColor)) { doRedraw = true; }
|
|
| 96 |
- if (colorUpdate(m_filePadColor, m_padColor)) { doRedraw = true; }
|
|
| 97 |
- if (colorUpdate(m_fileComputerColor, m_computerColor)) { doRedraw = true; }
|
|
| 98 |
- if (colorUpdate(m_fileScoreColor, m_scoreColor)) { doRedraw = true; }
|
|
| 99 |
- if (colorUpdate(m_fileGoalColor, m_goalColor)) { doRedraw = true; }
|
|
| 94 |
+ if (colorUpdate(m_fileBallColor, 255, m_ballColor)) { doRedraw = true; }
|
|
| 95 |
+ if (colorUpdate(m_fileLineColor, 128, m_lineColor)) { doRedraw = true; }
|
|
| 96 |
+ if (colorUpdate(m_filePadColor, 255, m_padColor)) { doRedraw = true; }
|
|
| 97 |
+ if (colorUpdate(m_fileComputerColor, 192, m_computerColor)) { doRedraw = true; }
|
|
| 98 |
+ if (colorUpdate(m_fileScoreColor, 128, m_scoreColor)) { doRedraw = true; }
|
|
| 99 |
+ if (colorUpdate(m_fileGoalColor, 255, m_goalColor)) { doRedraw = true; }
|
|
| 100 | 100 |
|
| 101 | 101 |
// cfg value file was updated -> read new cfg value, no reinit/redraw |
| 102 | 102 |
valueUpdate(m_fileDelay, c_delayDescr, m_delay); |
| ... | ... |
@@ -266,12 +266,12 @@ void Pong::reinitialize() |
| 266 | 266 |
m_rightDelay = 0; |
| 267 | 267 |
|
| 268 | 268 |
// convert colors |
| 269 |
- color2data(m_fileBallColor, m_ballColor); |
|
| 270 |
- color2data(m_fileLineColor, m_lineColor); |
|
| 271 |
- color2data(m_filePadColor, m_padColor); |
|
| 272 |
- color2data(m_fileComputerColor, m_computerColor); |
|
| 273 |
- color2data(m_fileScoreColor, m_scoreColor); |
|
| 274 |
- color2data(m_fileGoalColor, m_goalColor); |
|
| 269 |
+ color2data(m_fileBallColor, 255, m_ballColor); |
|
| 270 |
+ color2data(m_fileLineColor, 128, m_lineColor); |
|
| 271 |
+ color2data(m_filePadColor, 255, m_padColor); |
|
| 272 |
+ color2data(m_fileComputerColor, 192, m_computerColor); |
|
| 273 |
+ color2data(m_fileScoreColor, 128, m_scoreColor); |
|
| 274 |
+ color2data(m_fileGoalColor, 255, m_goalColor); |
|
| 275 | 275 |
// get values |
| 276 | 276 |
valueFromFile(m_fileDelay, c_delayDescr, m_delay); |
| 277 | 277 |
valueFromFile(m_fileMaxScore, c_maxScoreDescr, m_maxScore); |
| ... | ... |
@@ -86,13 +86,13 @@ void Tetris::updateConfigGame(bool &doReinit, bool &doRedraw) |
| 86 | 86 |
(void)doReinit; |
| 87 | 87 |
|
| 88 | 88 |
// color file was modified -> convert color, ask for redraw |
| 89 |
- if (colorUpdate(m_fileStoneIColor, m_stoneColors[StoneI])) { doRedraw = true; }
|
|
| 90 |
- if (colorUpdate(m_fileStoneLColor, m_stoneColors[StoneL])) { doRedraw = true; }
|
|
| 91 |
- if (colorUpdate(m_fileStoneJColor, m_stoneColors[StoneJ])) { doRedraw = true; }
|
|
| 92 |
- if (colorUpdate(m_fileStoneTColor, m_stoneColors[StoneT])) { doRedraw = true; }
|
|
| 93 |
- if (colorUpdate(m_fileStoneOColor, m_stoneColors[StoneO])) { doRedraw = true; }
|
|
| 94 |
- if (colorUpdate(m_fileStoneZColor, m_stoneColors[StoneZ])) { doRedraw = true; }
|
|
| 95 |
- if (colorUpdate(m_fileStoneSColor, m_stoneColors[StoneS])) { doRedraw = true; }
|
|
| 89 |
+ if (colorUpdate(m_fileStoneIColor, 255, m_stoneColors[StoneI])) { doRedraw = true; }
|
|
| 90 |
+ if (colorUpdate(m_fileStoneLColor, 255, m_stoneColors[StoneL])) { doRedraw = true; }
|
|
| 91 |
+ if (colorUpdate(m_fileStoneJColor, 255, m_stoneColors[StoneJ])) { doRedraw = true; }
|
|
| 92 |
+ if (colorUpdate(m_fileStoneTColor, 255, m_stoneColors[StoneT])) { doRedraw = true; }
|
|
| 93 |
+ if (colorUpdate(m_fileStoneOColor, 255, m_stoneColors[StoneO])) { doRedraw = true; }
|
|
| 94 |
+ if (colorUpdate(m_fileStoneZColor, 255, m_stoneColors[StoneZ])) { doRedraw = true; }
|
|
| 95 |
+ if (colorUpdate(m_fileStoneSColor, 255, m_stoneColors[StoneS])) { doRedraw = true; }
|
|
| 96 | 96 |
|
| 97 | 97 |
// delay cfg value file was updated -> read new delay cfg value, no re-* |
| 98 | 98 |
valueUpdate(m_fileDelay, c_delayDescr, m_delay); |
| ... | ... |
@@ -265,13 +265,13 @@ void Tetris::opConnClose(OpConn *pConn) |
| 265 | 265 |
void Tetris::reinitialize() |
| 266 | 266 |
{
|
| 267 | 267 |
// convert colors |
| 268 |
- color2data(m_fileStoneIColor, m_stoneColors[StoneI]); |
|
| 269 |
- color2data(m_fileStoneLColor, m_stoneColors[StoneL]); |
|
| 270 |
- color2data(m_fileStoneJColor, m_stoneColors[StoneJ]); |
|
| 271 |
- color2data(m_fileStoneTColor, m_stoneColors[StoneT]); |
|
| 272 |
- color2data(m_fileStoneOColor, m_stoneColors[StoneO]); |
|
| 273 |
- color2data(m_fileStoneZColor, m_stoneColors[StoneZ]); |
|
| 274 |
- color2data(m_fileStoneSColor, m_stoneColors[StoneS]); |
|
| 268 |
+ color2data(m_fileStoneIColor, 255, m_stoneColors[StoneI]); |
|
| 269 |
+ color2data(m_fileStoneLColor, 255, m_stoneColors[StoneL]); |
|
| 270 |
+ color2data(m_fileStoneJColor, 255, m_stoneColors[StoneJ]); |
|
| 271 |
+ color2data(m_fileStoneTColor, 255, m_stoneColors[StoneT]); |
|
| 272 |
+ color2data(m_fileStoneOColor, 255, m_stoneColors[StoneO]); |
|
| 273 |
+ color2data(m_fileStoneZColor, 255, m_stoneColors[StoneZ]); |
|
| 274 |
+ color2data(m_fileStoneSColor, 255, m_stoneColors[StoneS]); |
|
| 275 | 275 |
|
| 276 | 276 |
// get values |
| 277 | 277 |
valueFromFile(m_fileDelay, c_delayDescr, m_delay); |
| 278 | 278 |