sj3/screen.c
SASANO Takayoshi a9a6c86f12 replace u_xxxx style, defined <sys/types.h>
replace:
	u_char -> unsigned char
	u_short -> unsigned short
	u_int -> unsigned int
	u_long (not used)

include <sys/types.h> is kept.

dicttool.h:
	fix include guard DICTTOLL -> DICTTOOL

addelcmn.c:unsigned int addel_arg()
deldic.c:unsigned int deldic()
	change u_short err -> unsigned int err (used for return value)

Signed-off-by: SASANO Takayoshi <uaa@uaa.org.uk>
2023-12-10 17:14:16 +09:00

506 lines
8.1 KiB
C

/*
* Copyright (c) 1994 Sony Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Except as contained in this notice, the name of Sony Corporation
* shall not be used in advertising or otherwise to promote the sale, use
* or other dealings in this Software without prior written authorization
* from Sony Corporation.
*
*/
/*
* $SonyRCSfile: screen.c,v $
* $SonyRevision: 1.1 $
* $SonyDate: 1994/06/03 08:03:22 $
*/
#include "common.h"
#include "key.h"
#define LINE_LENGTH 80
static wchar16_t *Guide;
static wchar16_t Nguide[LINE_LENGTH + 1];
static wchar16_t Cguide[LINE_LENGTH + 1];
wchar16_t Mguide[LINE_LENGTH + 1];
vbackchar (n)
int n;
{
int i;
for (i=0 ; i < n ; i++)
VBackspace ();
for (i=0 ; i < n ; i++)
Vput_space ();
for (i=0 ; i < n ; i++)
VBackspace ();
Flush ();
}
wrap_off ()
{
Conversion *cv;
cv = GetConversion ();
cv->wrap = 0;
cv->PushCurrentVcol = cv->CurrentVcol;
}
wrap_on ()
{
Conversion *cv;
cv = GetConversion ();
cv->wrap = 1;
cv->CurrentVcol = cv->PushCurrentVcol;
}
Vput_space ()
{
Conversion *cv;
cv = GetConversion ();
put_space (1);
cv->Vindex[cv->Vlen ++] = cv->CurrentVcol ++;
if (cv->wrap && ((cv->CurrentVcol % cv->column) == 1)) {
put_space (1);
Backspace ();
}
}
VBackspace ()
{
Conversion *cv;
int i;
cv = GetConversion ();
if (cv->wrap && ((cv->CurrentVcol % cv->column) == 1)) {
Ccheck ();
i = cv->Vindex[cv->Vlen - 1] % cv->column;
if (cv->Vlen > 0 && i > 1) {
CursorSet (
cv->SavedRow + (cv->CurrentVcol / cv->column) - 1,
cv->Vindex[cv->Vlen - 1] % cv->column
);
}
else
CursorSet (
cv->SavedRow + (cv->CurrentVcol / cv->column) - 1,
cv->column
);
}
else
Backspace ();
if (cv->Vlen > 0)
cv->CurrentVcol = cv->Vindex[--(cv->Vlen)];
else {
cv->Vlen = 0;
cv->CurrentVcol = cv->Vindex[cv->Vlen];
}
}
master_out (s, n)
wchar16_t *s;
int n;
{
master_write (s, n);
master_flush ();
}
master_write (s, n)
wchar16_t *s;
int n;
{
SJ_write (s, n);
}
vprintU (s, mod)
wchar16_t *s;
char mod;
{
Conversion *cv;
int i, col, oldcol, len;
unsigned short *p;
cv = GetConversion ();
printU (s);
oldcol = cv->CurrentVcol % cv->column;
if (cv->wrap && (mod == 1) && (oldcol == 0))
cv->CurrentVcol ++;
len = wcbyte (s);
p = &(cv->Vindex[cv->Vlen]);
cv->Vlen += len;
for (i = 0 ; i < len ; i ++)
*(p ++) = cv->CurrentVcol ++;
if (cv->wrap) {
col = cv->CurrentVcol % cv->column;
if (col == 1) {
put_space (1);
Backspace ();
}
if ((mod == 1) && (oldcol + len > (unsigned int)cv->column)
&& ((col & 1) == 0)) {
cv->CurrentVcol ++;
}
}
*p = cv->CurrentVcol;
if (cv->CurrentVcol > cv->MaxVcol)
cv->MaxVcol = cv->CurrentVcol;
Flush ();
}
vprintR (s, mod)
wchar16_t *s;
char mod;
{
Conversion *cv;
int i, col, oldcol, len;
unsigned short *p;
cv = GetConversion ();
printR (s);
oldcol = cv->CurrentVcol % cv->column;
if (cv->wrap && (mod == 1) && (oldcol == 0))
cv->CurrentVcol ++;
len = wcbyte (s);
p = &(cv->Vindex[cv->Vlen]);
cv->Vlen += len;
for (i = 0 ; i < len ; i ++)
*(p ++) = cv->CurrentVcol ++;
if (cv->wrap) {
col = cv->CurrentVcol % cv->column;
if (col == 1) {
put_space (1);
Backspace ();
}
if ((mod == 1) && (oldcol + len > (unsigned int)cv->column)
&& ((col & 1) == 0)) {
cv->CurrentVcol ++;
}
}
*p = cv->CurrentVcol;
if (cv->CurrentVcol > cv->MaxVcol)
cv->MaxVcol = cv->CurrentVcol;
Flush ();
}
IprintU (s, index)
wchar16_t *s;
int index;
{
Cgoto (index);
printU (s);
Flush ();
}
IprintR (s, index)
wchar16_t *s;
int index;
{
Cgoto (index);
printR (s);
Flush ();
}
printU (s)
wchar16_t *s;
{
under_in ();
SJ_print (s);
under_out ();
}
printR (s)
wchar16_t *s;
{
reverse_in ();
SJ_print (s);
reverse_out ();
}
Csave ()
{
Conversion *cv;
cv = GetConversion ();
CursorRead (&(cv->SavedRow), &(cv->SavedCol));
cv->CurrentVcol = cv->SavedCol;
cv->Vlen = 0;
cv->Vindex[cv->Vlen] = cv->MaxVcol = cv->CurrentVcol;
}
SetVcol (index)
int index;
{
Conversion *cv;
cv = GetConversion ();
cv->Vlen = index;
cv->CurrentVcol = cv->Vindex[cv->Vlen];
}
Cload ()
{
Conversion *cv;
cv = GetConversion ();
CursorSet (cv->SavedRow, cv->SavedCol);
}
Cclear (redraw)
int redraw;
{
Conversion *cv;
int spaces;
unsigned short row, col;
if (redraw) {
cv = GetConversion ();
CursorRead (&row, &col);
spaces = (row - cv->SavedRow) * cv->column
+ (col - cv->SavedCol) + 1;
Cload ();
put_space (spaces);
}
Cload ();
Flush ();
}
Cgoto (index)
int index;
{
Conversion *cv;
int row, col;
cv = GetConversion ();
SetVcol (index);
row = cv->SavedRow + (int)(cv->CurrentVcol / cv->column);
col = cv->CurrentVcol % cv->column;
CursorSet (row, col);
}
ClearToMax ()
{
Conversion *cv;
int space;
cv = GetConversion ();
space = cv->MaxVcol - cv->CurrentVcol;
put_space (space);
}
Ccheck ()
{
Conversion *cv;
int row, tmp, diff;
if (Cscroll ()) {
cv = GetConversion ();
tmp = (int)(cv->CurrentVcol / cv->column);
diff = cv->CurrentVcol - (tmp * cv->column);
if (diff == 0)
tmp --;
row = cv->SavedRow + tmp;
if (row >= (unsigned int)cv->line)
cv->SavedRow -= (row - cv->line);
}
}
spaceR (s)
wchar16_t *s;
{
wchar16_t *t;
wchar16_t tmp[40];
t = tmp;
while (*s != '\0') {
if (*s == ' ') {
*t = '\0';
printR (tmp);
t = tmp;
put_space (1);
}
else
*(t ++) = *s;
s ++;
}
*t = '\0';
printR (tmp);
Flush ();
}
clear_guide_line ()
{
unsigned short row, col;
StartGuide (&row, &col);
Clear_EOL ();
EndGuide (row, col);
Flush ();
}
print_guide_line ()
{
unsigned short row, col;
StartGuide (&row, &col);
spaceR (Guide);
Clear_EOL ();
EndGuide (row, col);
Flush ();
}
set_guide_line (mode)
int mode;
{
switch (mode) {
case KEY_NORMAL:
wscpy (Nguide, WCSJrun);
Guide = Nguide;
break;
case KEY_CONV:
Guide = Cguide;
break;
default:
break;
}
}
disp_mode ()
{
Conversion *cv;
int c_code;
wchar16_t *Pmode, *Bmode;
cv = GetConversion ();
switch (cv->Imode) {
case MODE_CODE:
c_code = GetCcode();
switch (c_code) {
case CODE_SJIS:
Pmode = WCGCshift;
break;
case CODE_EUC:
Pmode = WCGCeuc;
break;
case CODE_JIS:
Pmode = WCGCjis;
break;
case CODE_KUTEN:
Pmode = WCGCkuten;
break;
case CODE_EUC2:
Pmode = WCGCeuc2;
break;
case CODE_JIS2:
Pmode = WCGCjis2;
break;
case CODE_KUTEN2:
Pmode = WCGCkuten2;
break;
}
break;
case MODE_ZHIRA:
Pmode = WCMode_Zhira;
break;
case MODE_ZKATA:
Pmode = WCMode_Zkata;
break;
case MODE_HKATA:
Pmode = WCMode_Hkata;
break;
case MODE_ZALPHA:
Pmode = WCMode_Zalpha;
break;
case MODE_HALPHA:
Pmode = WCMode_Halpha;
break;
default:
break;
}
switch (cv->BuffMode) {
case BUFF:
Bmode = WCMode_buff;
break;
case UNBUFF:
Bmode = WCMode_unbuff;
break;
default:
break;
}
wscpy (Cguide, Bmode);
wscat (Cguide, Pmode);
wscpy (Mguide, Cguide);
if (Hlevel > 1)
wscat (Cguide, WCGmode);
print_guide_line ();
}
TopGuide ()
{
unsigned short row, col;
StartGuide (&row, &col);
}
guide_print (s1, s2)
wchar16_t *s1, *s2;
{
unsigned short row, col;
StartGuide (&row, &col);
if (s1)
printR (s1);
SJ_print (s2);
Clear_EOL ();
EndGuide (row, col);
Flush ();
}