/* TN5250
* Copyright (C) 1997 Michael Madore
*
* 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 DBUFFER_H
#define DBUFFER_H
#ifdef __cplusplus
extern "C"
{
#endif
/****s* lib5250/Tn5250DBuffer
* NAME
* Tn5250DBuffer
* SYNOPSIS
* Should only be accessed via the Tn5250Display object.
* DESCRIPTION
* The display buffer keeps track of the current state of the display,
* including the field list, the format table header, the current
* cursor position, the home position of the cursor, and the master
* Modified Data Tag (MDT).
* SOURCE
*/
struct _Tn5250DBuffer
{
/* How we keep track of multiple saved display buffers */
struct _Tn5250DBuffer *next;
struct _Tn5250DBuffer *prev;
int w, h;
int cx, cy; /* Cursor Position */
int tcx, tcy; /* for set_new_ic */
unsigned char /*@notnull@ */ *data;
/* Stuff from the old Tn5250Table structure. */
struct _Tn5250Field /*@null@ */ *field_list;
struct _Tn5250Window *window_list;
struct _Tn5250Scrollbar *scrollbar_list;
struct _Tn5250Menubar *menubar_list;
int field_count;
int entry_field_count;
int window_count;
int scrollbar_count;
int menubar_count;
int master_mdt;
/* Header data (from SOH order) is saved here. We even save data that
* we don't understand here so we can insert that into our generated
* WTD orders for save/restore screen. */
unsigned char *header_data;
int header_length;
/* This slot is reserved for scripting language bindings. */
void *script_slot;
};
typedef struct _Tn5250DBuffer Tn5250DBuffer;
/*******/
/* Displays */
extern Tn5250DBuffer /*@only@ *//*@null@ */ *
tn5250_dbuffer_new (int width, int height);
extern Tn5250DBuffer /*@only@ *//*@null@ */ *
tn5250_dbuffer_copy (Tn5250DBuffer *);
extern void tn5250_dbuffer_destroy (Tn5250DBuffer /*@only@ */ * This);
extern void tn5250_dbuffer_set_size (Tn5250DBuffer * This, int rows,
int cols);
extern void tn5250_dbuffer_cursor_set (Tn5250DBuffer * This, int y, int x);
extern void tn5250_dbuffer_clear (Tn5250DBuffer *
This) /*@modifies This@ */ ;
extern void tn5250_dbuffer_right (Tn5250DBuffer * This, int n);
extern void tn5250_dbuffer_left (Tn5250DBuffer * This);
extern void tn5250_dbuffer_up (Tn5250DBuffer * This);
extern void tn5250_dbuffer_down (Tn5250DBuffer * This);
extern void tn5250_dbuffer_goto_ic (Tn5250DBuffer * This);
extern void tn5250_dbuffer_addch (Tn5250DBuffer * This, unsigned char c);
extern void tn5250_dbuffer_del (Tn5250DBuffer * This, int fieldid,
int shiftcount);
extern void tn5250_dbuffer_del_this_field_only (Tn5250DBuffer * This,
int shiftcount);
extern void tn5250_dbuffer_ins (Tn5250DBuffer * This, int fieldid,
unsigned char c, int shiftcount);
extern void tn5250_dbuffer_set_ic (Tn5250DBuffer * This, int y, int x);
extern void tn5250_dbuffer_roll (Tn5250DBuffer * This, int top, int bot,
int lines);
extern unsigned char tn5250_dbuffer_char_at (Tn5250DBuffer * This, int y,
int x);
extern void tn5250_dbuffer_prevword (Tn5250DBuffer * This);
extern void tn5250_dbuffer_nextword (Tn5250DBuffer * This);
#define tn5250_dbuffer_width(This) ((This)->w)
#define tn5250_dbuffer_height(This) ((This)->h)
#define tn5250_dbuffer_cursor_x(This) ((This)->cx)
#define tn5250_dbuffer_cursor_y(This) ((This)->cy)
/* Format table manipulation. */
extern void tn5250_dbuffer_add_field (Tn5250DBuffer * This,
struct _Tn5250Field *field);
extern void tn5250_dbuffer_clear_table (Tn5250DBuffer * This);
extern struct _Tn5250Field *tn5250_dbuffer_field_yx (Tn5250DBuffer * This,
int y, int x);
extern void tn5250_dbuffer_set_header_data (Tn5250DBuffer * This,
unsigned char *data, int len);
extern int tn5250_dbuffer_send_data_for_aid_key (Tn5250DBuffer * This,
int k);
extern unsigned char *tn5250_dbuffer_field_data (Tn5250DBuffer * This,
struct _Tn5250Field
*field);
extern int tn5250_dbuffer_msg_line (Tn5250DBuffer * This);
extern struct _Tn5250Field *tn5250_dbuffer_first_non_bypass (Tn5250DBuffer *
This);
extern void tn5250_dbuffer_add_window (Tn5250DBuffer * This,
struct _Tn5250Window *window);
extern void tn5250_dbuffer_add_scrollbar (Tn5250DBuffer * This,
struct _Tn5250Scrollbar
*scrollbar);
extern void tn5250_dbuffer_add_menubar (Tn5250DBuffer * This,
struct _Tn5250Menubar *menubar);
#define tn5250_dbuffer_field_count(This) ((This)->field_count)
#define tn5250_dbuffer_window_count(This) ((This)->window_count)
#define tn5250_dbuffer_menubar_count(This) ((This)->menubar_count)
#define tn5250_dbuffer_mdt(This) ((This)->master_mdt)
#define tn5250_dbuffer_set_mdt(This) ((This)->master_mdt = 1)
#ifdef __cplusplus
}
#endif
#endif /* DBUFFER_H */
/* vi:set sts=3 sw=3: */
syntax highlighted by Code2HTML, v. 0.9.1