fuck those invariants anyways
This commit is contained in:
@@ -654,12 +654,16 @@ int main(int argc, char **argv) {
|
||||
double wattage = 0;
|
||||
|
||||
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(
|
||||
u, "mainKB", "keyboard");
|
||||
|
||||
ncl_ScreenState *scrstate = nn_getComponentState(screen);
|
||||
ncl_mountKeyboard(scrstate, "mainKB");
|
||||
ncl_setScreenMaxResolution(scrstate, 320, 90);
|
||||
|
||||
// we assume server basically
|
||||
nn_Computer *c = nn_createComputer(u, NULL, NULL, ramTotal, nn_defaultComponentLimits[3] * 4, 256);
|
||||
|
||||
@@ -3297,6 +3297,43 @@ void ncl_setScreenResolution(ncl_ScreenState *state, size_t width, size_t 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) {
|
||||
*width = state->viewportWidth;
|
||||
*height = state->viewportHeight;
|
||||
|
||||
@@ -333,6 +333,8 @@ void ncl_unlockScreen(ncl_ScreenState *state);
|
||||
void ncl_resetScreen(ncl_ScreenState *state);
|
||||
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_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_setScreenViewport(ncl_ScreenState *state, size_t width, size_t height);
|
||||
ncl_Pixel ncl_getScreenPixel(const ncl_ScreenState *state, int x, int y);
|
||||
|
||||
Reference in New Issue
Block a user