MCPcopy Create free account
hub / github.com/devkitPro/libctru / consoleHandleColorEsc

Function consoleHandleColorEsc

libctru/source/console.c:349–446  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

347}
348
349static void consoleHandleColorEsc(int argCount)
350{
351 escapeSeq.color.bg = currentConsole->bg;
352 escapeSeq.color.fg = currentConsole->fg;
353 escapeSeq.color.flags = currentConsole->flags;
354
355 for (int arg = 0; arg < argCount; arg++)
356 {
357 int code = escapeSeq.args[arg];
358 switch (escapeSeq.state)
359 {
360 case ESC_BUILDING_UNKNOWN:
361 consoleSetColorState(code);
362 break;
363 case ESC_BUILDING_FORMAT_FG:
364 if (code == 5)
365 escapeSeq.state = ESC_BUILDING_FORMAT_FG_NONRGB;
366 else if (code == 2)
367 escapeSeq.state = ESC_BUILDING_FORMAT_FG_RGB;
368 else
369 escapeSeq.state = ESC_BUILDING_UNKNOWN;
370 break;
371 case ESC_BUILDING_FORMAT_BG:
372 if (code == 5)
373 escapeSeq.state = ESC_BUILDING_FORMAT_BG_NONRGB;
374 else if (code == 2)
375 escapeSeq.state = ESC_BUILDING_FORMAT_BG_RGB;
376 else
377 escapeSeq.state = ESC_BUILDING_UNKNOWN;
378 break;
379 case ESC_BUILDING_FORMAT_FG_NONRGB:
380 if (code <= 15) {
381 escapeSeq.color.fg = code;
382 escapeSeq.color.flags &= ~CONSOLE_FG_CUSTOM;
383 } else if (code <= 231) {
384 code -= 16;
385 unsigned int r = code / 36;
386 unsigned int g = (code - r * 36) / 6;
387 unsigned int b = code - r * 36 - g * 6;
388
389 escapeSeq.color.fg = RGB8_to_565 (colorCube[r], colorCube[g], colorCube[b]);
390 escapeSeq.color.flags |= CONSOLE_FG_CUSTOM;
391 } else if (code <= 255) {
392 code -= 232;
393
394 escapeSeq.color.fg = RGB8_to_565 (grayScale[code], grayScale[code], grayScale[code]);
395 escapeSeq.color.flags |= CONSOLE_FG_CUSTOM;
396 }
397 escapeSeq.state = ESC_BUILDING_UNKNOWN;
398 break;
399 case ESC_BUILDING_FORMAT_BG_NONRGB:
400 if (code <= 15) {
401 escapeSeq.color.bg = code;
402 escapeSeq.color.flags &= ~CONSOLE_BG_CUSTOM;
403 } else if (code <= 231) {
404 code -= 16;
405 unsigned int r = code / 36;
406 unsigned int g = (code - r * 36) / 6;

Callers 1

con_writeFunction · 0.85

Calls 1

consoleSetColorStateFunction · 0.85

Tested by

no test coverage detected