/* TN5250 - An implementation of the 5250 telnet protocol.
* Copyright (C) 2000 Jason M. Felice
*
* This file is part of TN5250.
*
* TN5250 is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1, or (at your option)
* any later version.
*
* TN5250 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this software; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
*/
#ifndef WTD_H
#define WTD_H
#ifdef __cplusplus
extern "C"
{
#endif
struct _Tn5250Buffer;
struct _Tn5250DBuffer;
/****s* lib5250/Tn5250WTDContext
* NAME
* Tn5250WTDContext
*
* SYNOPSIS
* Tn5250Buffer buf;
* Tn5250WTDContext *ctx;
*
* tn5250_buffer_init(&buf);
* ctx = tn5250_wtd_context_new (&buf, NULL, dst_dbuffer);
* tn5250_wtd_context_convert (ctx);
* tn5250_wtd_context_destroy (ctx);
*
* tn5250_buffer_log(&buf);
*
* DESCRIPTION
* The WTD context object is used to calculate (and optimize) commands and
* WTD-type orders to transition from the source display buffer and format
* table to the destination display buffer and format table.
*
* This will be used in our 5250 server implementation later. Currently,
* we only accept NULL for the source display buffer and format table and
* create a full set of commands and orders which we send back to the host
* (and the host sends back to us) for the save/restore screen
* functionality. Differential Write to Display orders and data should
* be implemented when the 5250 server is born.
*
* SOURCE
*/
struct _Tn5250WTDContext
{
struct _Tn5250Buffer *buffer;
struct _Tn5250DBuffer *src;
struct _Tn5250DBuffer *dst;
/* Our current position within the display. */
int y, x;
/* This is a sort of buffer for run-length-encoding the output data
* characters using Repeat to Address orders. */
int ra_count;
unsigned char ra_char;
/* A flag indicating that we have used a Clear Unit or a Clear Unit
* Alternate command. It's helpful in making assumptions about the state
* of the display. */
int clear_unit:1;
};
typedef struct _Tn5250WTDContext Tn5250WTDContext;
/*******/
extern Tn5250WTDContext *tn5250_wtd_context_new (struct _Tn5250Buffer *buf,
struct _Tn5250DBuffer *sd,
struct _Tn5250DBuffer *dd);
extern void tn5250_wtd_context_destroy (Tn5250WTDContext * This);
extern void tn5250_wtd_context_convert (Tn5250WTDContext * This);
extern void tn5250_wtd_context_set_ic (Tn5250WTDContext * This,
int y, int x);
#ifdef __cplusplus
}
#endif
#endif /* WTD_H */
/* vi:set cindent sts=3 sw=3: */
syntax highlighted by Code2HTML, v. 0.9.1