Annotation of nono/vm/newsfb.cpp, revision 1.1.1.1

1.1       root        1: //
                      2: // nono
                      3: // Copyright (C) 2022 nono project
                      4: // Licensed under nono-license.txt
                      5: //
                      6: 
                      7: //
                      8: // NEWS のフレームバッファ(予定地)
                      9: //
                     10: 
                     11: #include "newsfb.h"
                     12: 
                     13: // コンストラクタ
                     14: NewsfbDevice::NewsfbDevice()
                     15:        : inherited(OBJ_NEWSFB)
                     16: {
                     17:        console.Init(80, 32, TextScreen::Console);
                     18: 
                     19:        monitor.func = ToMonitorCallback(&NewsfbDevice::MonitorUpdate);
                     20:        monitor.SetSize(console.GetCol(), console.GetRow());
                     21:        monitor.Regist(ID_MONITOR_ROMCONS);
                     22: }
                     23: 
                     24: // デストラクタ
                     25: NewsfbDevice::~NewsfbDevice()
                     26: {
                     27: }
                     28: 
                     29: void
                     30: NewsfbDevice::ResetHard(bool poweron)
                     31: {
                     32:        console.Clear();
                     33: }
                     34: 
                     35: void
                     36: NewsfbDevice::Putc(int ch)
                     37: {
                     38:        if (ch == '\t') {
                     39:                // タブはここでスペースに展開
                     40:                int x = console.GetX();
                     41:                int next = roundup(x, 8);
                     42:                for (; x < next; x++) {
                     43:                        console.Putc(' ');
                     44:                }
                     45:                return;
                     46:        }
                     47:        console.Putc(ch);
                     48: }
                     49: 
                     50: void
                     51: NewsfbDevice::MonitorUpdate(Monitor *, TextScreen& screen)
                     52: {
                     53:        int row = console.GetRow();
                     54:        int col = console.GetCol();
                     55:        const auto& src = console.GetBuf();
                     56: 
                     57:        int s = 0;
                     58:        for (int y = 0; y < row; y++) {
                     59:                for (int x = 0; x < col; x++) {
                     60:                        screen.Putc(x, y, src[s++]);
                     61:                }
                     62:        }
                     63: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.