fuck those invariants anyways

This commit is contained in:
2026-05-09 13:29:47 +03:00
parent f9905d14fa
commit f832369ce0
3 changed files with 44 additions and 1 deletions

View File

@@ -654,12 +654,16 @@ int main(int argc, char **argv) {
double wattage = 0; double wattage = 0;
nn_Component *screen = ncl_createScreen(u, NULL, &nn_defaultScreens[3]); nn_Component *screen = ncl_createScreen(u, NULL, &nn_defaultScreens[3]);
nn_Component *gpuCard = ncl_createGPU(u, NULL, &nn_defaultGPUs[3]); nn_GPU gpuConf = nn_defaultGPUs[3];
gpuConf.maxWidth = 1920;
gpuConf.maxHeight = 1080;
nn_Component *gpuCard = ncl_createGPU(u, NULL, &gpuConf);
nn_Component *keyboard = nn_createComponent( nn_Component *keyboard = nn_createComponent(
u, "mainKB", "keyboard"); u, "mainKB", "keyboard");
ncl_ScreenState *scrstate = nn_getComponentState(screen); ncl_ScreenState *scrstate = nn_getComponentState(screen);
ncl_mountKeyboard(scrstate, "mainKB"); ncl_mountKeyboard(scrstate, "mainKB");
ncl_setScreenMaxResolution(scrstate, 320, 90);
// we assume server basically // we assume server basically
nn_Computer *c = nn_createComputer(u, NULL, NULL, ramTotal, nn_defaultComponentLimits[3] * 4, 256); nn_Computer *c = nn_createComputer(u, NULL, NULL, ramTotal, nn_defaultComponentLimits[3] * 4, 256);

View File

@@ -3297,6 +3297,43 @@ void ncl_setScreenResolution(ncl_ScreenState *state, size_t width, size_t height
state->viewportHeight = height; state->viewportHeight = height;
} }
void ncl_getScreenMaxResolution(const ncl_ScreenState *state, size_t *width, size_t *height) {
*width = state->conf.maxWidth;
*height = state->conf.maxHeight;
}
nn_Exit ncl_setScreenMaxResolution(ncl_ScreenState *state, size_t width, size_t height) {
ncl_ScreenPixel *pixels = nn_alloc(state->ctx, sizeof(ncl_ScreenPixel) * width * height);
if(pixels == NULL) return NN_ENOMEM;
for(size_t i = 0; i < width*height; i++) {
pixels[i].codepoint = ' ';
pixels[i].realFg = 0xFFFFFF;
pixels[i].realBg = 0xFFFFFF;
pixels[i].storedFg = 0xFFFFFF;
pixels[i].storedBg = 0x000000;
}
if(state->width > width) state->width = width;
if(state->height > height) state->height = height;
if(state->viewportWidth > width) state->viewportWidth = width;
if(state->viewportHeight > height) state->viewportHeight = height;
for(size_t y = 0; y < state->height; y++) {
for(size_t x = 0; x < state->width; x++) {
ncl_ScreenPixel p = ncl_getRealScreenPixel(state, x, y);
pixels[y * width + x] = p;
}
}
nn_free(state->ctx, state->pixels, sizeof(ncl_ScreenPixel) * state->conf.maxWidth * state->conf.maxHeight);
state->conf.maxWidth = width;
state->conf.maxHeight = height;
state->pixels = pixels;
ncl_recomputeScreen(state);
return NN_OK;
}
void ncl_getScreenViewport(const ncl_ScreenState *state, size_t *width, size_t *height) { void ncl_getScreenViewport(const ncl_ScreenState *state, size_t *width, size_t *height) {
*width = state->viewportWidth; *width = state->viewportWidth;
*height = state->viewportHeight; *height = state->viewportHeight;

View File

@@ -333,6 +333,8 @@ void ncl_unlockScreen(ncl_ScreenState *state);
void ncl_resetScreen(ncl_ScreenState *state); void ncl_resetScreen(ncl_ScreenState *state);
void ncl_getScreenResolution(const ncl_ScreenState *state, size_t *width, size_t *height); void ncl_getScreenResolution(const ncl_ScreenState *state, size_t *width, size_t *height);
void ncl_setScreenResolution(ncl_ScreenState *state, size_t width, size_t height); void ncl_setScreenResolution(ncl_ScreenState *state, size_t width, size_t height);
void ncl_getScreenMaxResolution(const ncl_ScreenState *state, size_t *width, size_t *height);
nn_Exit ncl_setScreenMaxResolution(ncl_ScreenState *state, size_t width, size_t height);
void ncl_getScreenViewport(const ncl_ScreenState *state, size_t *width, size_t *height); void ncl_getScreenViewport(const ncl_ScreenState *state, size_t *width, size_t *height);
void ncl_setScreenViewport(ncl_ScreenState *state, size_t width, size_t height); void ncl_setScreenViewport(ncl_ScreenState *state, size_t width, size_t height);
ncl_Pixel ncl_getScreenPixel(const ncl_ScreenState *state, int x, int y); ncl_Pixel ncl_getScreenPixel(const ncl_ScreenState *state, int x, int y);