[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Lost] [Patch] vterm: vt100-Emulation



Am Samstag, 2. August 2008 21:29:16 schrieb Antoine Kaufmann:
> + vterm: In vt100-Emulation verhindern, dass der Cursor ueber den
> Bildschirmrand hinausgesetzt wird
> + vterm: reversed video mode aktivieren mit <ESC>[7;
> + vterm: Tabulatoren richtig anzeigen

> +static void vt100_safe_curpos(vterminal_t* vterm, int x, int y)
> +{
> +    vterm_output_t* out = &(vterm->output);
> +    int x_max = out->screen_width - 1;
> +    int y_max = out->screen_height - 1;
> +    position_t screen_pos;
> +    position_t buffer_pos;
> +
> +    // Raender Oben und Links pruefen
> +    if (x < 0) {
> +        x = 0;
> +    }
> +    if (y < 0) {
> +        y = 0;
> +    }
> +
> +    // Unten und Rechts
> +    if (x > x_max) {
> +        x = x_max;
> +    }
> +    if (y > y_max) {
> +        y = y_max;
> +    }
> +
> +    buffer_position(out, screen_pos, &buffer_pos);
> +
> +    // In positionstruktur einfuellen
> +    screen_pos.line = y;
> +    screen_pos.column = x;
> +
> +    buffer_position(out, screen_pos, &buffer_pos);
> +    output_set_position(out, buffer_pos.line, buffer_pos.column);
> +}

Das erste buffer_position erscheint mir überflüssig

> @@ -552,10 +589,17 @@ static void vt100_clear_screen(vterminal
>      int n1, int n2)
>  {
>      vterm_output_t* out = &(vterm->output);
> +    position_t screen_pos;
> +
> +    screen_position(out, out->buffer_pos, &screen_pos);
>
>      // Anzahl der uebrigen Zeichen
> -    size_t count = (out->screen_height - out->buffer_pos.line) * out->
> -        screen_width - out->buffer_pos.column;
> +    size_t count = (out->screen_height - screen_pos.line) * out->
> +        screen_width - screen_pos.column;
> +
> +    FILE* oldsin = stdout; stdout = NULL;
> +    printf("\nClear count: %d\n", count);
> +    stdout = oldsin;

Debugcode?

Ansonsten rein damit. Ich habe zwar keine Ahnung von vterm, aber du wirst es 
ja schon ausprobiert haben...