* Fixed broken CodeConv semantics (missing length parameter).
* No longer writes to the message data from clipboard. * some cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15153 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
+64
-114
@@ -1,34 +1,11 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright (c) 2001-2005, Haiku, Inc.
|
||||||
* Copyright (c) 2003-4 Kian Duffy <[email protected]>
|
* Copyright (c) 2003-4 Kian Duffy <[email protected]>
|
||||||
* Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
|
* Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
|
||||||
*
|
* Distributed under the terms of the MIT license.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
* a copy of this software and associated documentation files or portions
|
|
||||||
* thereof (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:
|
|
||||||
*
|
|
||||||
* * Redistributions of source code must retain the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer.
|
|
||||||
*
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright notice
|
|
||||||
* in the binary, as well as this list of conditions and the following
|
|
||||||
* disclaimer in the documentation and/or other materials provided with
|
|
||||||
* the distribution.
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
* THE AUTHORS OR COPYRIGHT HOLDERS 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.
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/************************************************************************
|
/*********************************************************************
|
||||||
MuTerminal Code Conversion class (MC3).
|
MuTerminal Code Conversion class (MC3).
|
||||||
|
|
||||||
version 1.1 Internal coding system is UTF8.
|
version 1.1 Internal coding system is UTF8.
|
||||||
@@ -52,89 +29,86 @@ UTF8
|
|||||||
|
|
||||||
extern char utf8_width_table[]; /* define UTF8WidthTbl.c */
|
extern char utf8_width_table[]; /* define UTF8WidthTbl.c */
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
// Constructor
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
CodeConv::CodeConv (void)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
CodeConv::CodeConv()
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
// Destructor
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
CodeConv::~CodeConv (void)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
// UTF8GetFontWidth (const uchar *string)
|
|
||||||
// get font width in coding.
|
CodeConv::~CodeConv()
|
||||||
//////////////////////////////////////////////////////////////////////
|
{
|
||||||
int
|
}
|
||||||
CodeConv::UTF8GetFontWidth (const uchar *string)
|
|
||||||
|
|
||||||
|
//! get font width in coding.
|
||||||
|
int32
|
||||||
|
CodeConv::UTF8GetFontWidth(const char *string)
|
||||||
{
|
{
|
||||||
uchar width, point;
|
uchar width, point;
|
||||||
ushort unicode, offset;
|
ushort unicode, offset;
|
||||||
|
|
||||||
offset = unicode = UTF8toUnicode (string);
|
offset = unicode = UTF8toUnicode(string);
|
||||||
width = utf8_width_table [unicode >> 3];
|
width = utf8_width_table[unicode >> 3];
|
||||||
offset = offset & 0x07;
|
offset = offset & 0x07;
|
||||||
|
|
||||||
point = 0x80 >> offset;
|
point = 0x80 >> offset;
|
||||||
|
|
||||||
return ((width & point) > 0 ) ? 2 : 1;
|
return (width & point) > 0 ? 2 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
// ConvertFromInternal (const uchar *src, uchar *dst, int coding)
|
//! Convert internal coding from src coding.
|
||||||
// Convert internal coding from src coding.
|
int32
|
||||||
//////////////////////////////////////////////////////////////////////
|
CodeConv::ConvertFromInternal(const char *src, int32 srclen, char *dst, int coding)
|
||||||
int
|
|
||||||
CodeConv::ConvertFromInternal (const uchar *src, uchar *dst, int coding)
|
|
||||||
{
|
{
|
||||||
const uchar *src_p = src;
|
int32 dstlen = 0;
|
||||||
long srclen = 0, dstlen = 0;
|
|
||||||
long state = 0;
|
long state = 0;
|
||||||
int theCoding;
|
int theCoding;
|
||||||
|
|
||||||
if (coding == M_UTF8) return 0;
|
if (srclen == -1)
|
||||||
|
srclen = strlen(src);
|
||||||
|
|
||||||
|
if (coding == M_UTF8) {
|
||||||
|
memcpy(dst, src, srclen);
|
||||||
|
dst[srclen] = '\0';
|
||||||
|
return srclen;
|
||||||
|
}
|
||||||
|
|
||||||
theCoding = coding_translation_table[coding];
|
theCoding = coding_translation_table[coding];
|
||||||
|
|
||||||
while (*src_p++) srclen++;
|
|
||||||
|
|
||||||
dstlen = srclen * 256;
|
dstlen = srclen * 256;
|
||||||
|
|
||||||
convert_from_utf8 (theCoding,
|
convert_from_utf8(theCoding, (char *)src, &srclen,
|
||||||
(char *)src, &srclen,
|
(char *)dst, &dstlen, &state, '?');
|
||||||
(char *)dst, &dstlen,
|
|
||||||
&state, '?');
|
|
||||||
|
|
||||||
if (coding == M_ISO_2022_JP && state != 0) {
|
if (coding == M_ISO_2022_JP && state != 0) {
|
||||||
const char *end_of_jis = "(B";
|
const char *end_of_jis = "(B";
|
||||||
strncpy ((char *)dst+dstlen, end_of_jis, 3);
|
strncpy((char *)dst + dstlen, end_of_jis, 3);
|
||||||
dstlen += 3;
|
dstlen += 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
dst[dstlen] = '\0';
|
dst[dstlen] = '\0';
|
||||||
|
|
||||||
return dstlen;
|
return dstlen;
|
||||||
|
|
||||||
}
|
}
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
// ConvertToInternal (const uchar *src, uchar *dst, int coding)
|
|
||||||
// Convert internal coding to src coding.
|
//! Convert internal coding to src coding.
|
||||||
//////////////////////////////////////////////////////////////////////
|
int32
|
||||||
void
|
CodeConv::ConvertToInternal(const char *src, int32 srclen, char *dst, int coding)
|
||||||
CodeConv::ConvertToInternal (const uchar *src, uchar *dst, int coding)
|
|
||||||
{
|
{
|
||||||
const uchar *src_p = src;
|
int32 dstlen = 4;
|
||||||
long srclen = 0, dstlen = 4;
|
|
||||||
long state = 0;
|
long state = 0;
|
||||||
int theCoding;
|
int theCoding;
|
||||||
|
|
||||||
|
if (srclen == -1)
|
||||||
|
srclen = strlen(src);
|
||||||
|
|
||||||
if (coding == M_UTF8) return;
|
if (coding == M_UTF8) {
|
||||||
|
memcpy(dst, src, srclen);
|
||||||
|
dst[srclen] = '\0';
|
||||||
|
return srclen;
|
||||||
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
#ifndef __INTEL__
|
#ifndef __INTEL__
|
||||||
@@ -149,34 +123,21 @@ CodeConv::ConvertToInternal (const uchar *src, uchar *dst, int coding)
|
|||||||
dst[dstlen] = '\0';
|
dst[dstlen] = '\0';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
theCoding = coding_translation_table[coding];
|
theCoding = coding_translation_table[coding];
|
||||||
|
|
||||||
while (*src_p++) srclen++;
|
convert_to_utf8(theCoding, (char *)src, &srclen,
|
||||||
|
(char *)dst, &dstlen, &state, '?');
|
||||||
convert_to_utf8 (theCoding,
|
|
||||||
(char *)src, &srclen,
|
|
||||||
(char *)dst, &dstlen,
|
|
||||||
&state, '?');
|
|
||||||
|
|
||||||
dst[dstlen] = '\0';
|
dst[dstlen] = '\0';
|
||||||
|
return dstlen;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Private member functions.
|
|
||||||
*/
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
// UTF8toUnicode (uchar *utf8)
|
|
||||||
//
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
unsigned short
|
unsigned short
|
||||||
CodeConv::UTF8toUnicode (const uchar *utf8)
|
CodeConv::UTF8toUnicode(const char *utf8)
|
||||||
{
|
{
|
||||||
uchar tmp;
|
uchar tmp;
|
||||||
unsigned short unicode = 0x0000;
|
unsigned short unicode = 0x0000;
|
||||||
@@ -184,30 +145,25 @@ CodeConv::UTF8toUnicode (const uchar *utf8)
|
|||||||
tmp = *utf8 & 0xe0;
|
tmp = *utf8 & 0xe0;
|
||||||
|
|
||||||
if (tmp < 0x80) {
|
if (tmp < 0x80) {
|
||||||
unicode = (unsigned short) *utf8;
|
unicode = (unsigned short)*utf8;
|
||||||
}
|
} else if (tmp < 0xe0) {
|
||||||
else if (tmp < 0xe0) {
|
unicode = (unsigned short)*utf8++ & 0x1f;
|
||||||
unicode = (unsigned short) *utf8++ & 0x1f;
|
|
||||||
unicode = unicode << 6;
|
unicode = unicode << 6;
|
||||||
unicode = unicode | ((unsigned short) *utf8 & 0x3f);
|
unicode = unicode | ((unsigned short)*utf8 & 0x3f);
|
||||||
}
|
} else if (tmp < 0xf0) {
|
||||||
else if (tmp < 0xf0) {
|
unicode = (unsigned short)*utf8++ & 0x0f;
|
||||||
unicode = (unsigned short) *utf8++ & 0x0f;
|
|
||||||
unicode = unicode << 6;
|
unicode = unicode << 6;
|
||||||
unicode = unicode | ((unsigned short) *utf8++ & 0x3f);
|
unicode = unicode | ((unsigned short)*utf8++ & 0x3f);
|
||||||
unicode = unicode << 6;
|
unicode = unicode << 6;
|
||||||
unicode = unicode | ((unsigned short) *utf8 & 0x3f);
|
unicode = unicode | ((unsigned short)*utf8 & 0x3f);
|
||||||
}
|
}
|
||||||
|
|
||||||
return unicode;
|
return unicode;
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
// euc_to_sjis
|
|
||||||
//
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
void
|
void
|
||||||
CodeConv::euc_to_sjis (uchar *buf)
|
CodeConv::euc_to_sjis(uchar *buf)
|
||||||
{
|
{
|
||||||
int gl, gr;
|
int gl, gr;
|
||||||
int p;
|
int p;
|
||||||
@@ -223,22 +179,16 @@ CodeConv::euc_to_sjis (uchar *buf)
|
|||||||
c1 = p / 188;
|
c1 = p / 188;
|
||||||
c2 = p % 188;
|
c2 = p % 188;
|
||||||
|
|
||||||
if (c1 >= 31) {
|
if (c1 >= 31)
|
||||||
c1 = c1 - 31 + 0xE0;
|
c1 = c1 - 31 + 0xE0;
|
||||||
}
|
else
|
||||||
else {
|
|
||||||
c1 += 0x81;
|
c1 += 0x81;
|
||||||
}
|
|
||||||
|
|
||||||
if (c2 >= 63) {
|
if (c2 >= 63)
|
||||||
c2 = c2 - 63 + 0x80;
|
c2 = c2 - 63 + 0x80;
|
||||||
}
|
else
|
||||||
else {
|
|
||||||
c2 += 0x40;
|
c2 += 0x40;
|
||||||
}
|
|
||||||
|
|
||||||
*buf++ = c1;
|
*buf++ = c1;
|
||||||
*buf = c2;
|
*buf = c2;
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,83 +1,37 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright (c) 2001-2005, Haiku, Inc.
|
||||||
* Copyright (c) 2003-4 Kian Duffy <[email protected]>
|
* Copyright (c) 2003-4 Kian Duffy <[email protected]>
|
||||||
* Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
|
* Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
|
||||||
*
|
* Distributed under the terms of the MIT license.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
* a copy of this software and associated documentation files or portions
|
|
||||||
* thereof (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:
|
|
||||||
*
|
|
||||||
* * Redistributions of source code must retain the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer.
|
|
||||||
*
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright notice
|
|
||||||
* in the binary, as well as this list of conditions and the following
|
|
||||||
* disclaimer in the documentation and/or other materials provided with
|
|
||||||
* the distribution.
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
* THE AUTHORS OR COPYRIGHT HOLDERS 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.
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef CODECONV_H
|
#ifndef CODECONV_H
|
||||||
#define CODECONV_H
|
#define CODECONV_H
|
||||||
|
|
||||||
|
|
||||||
#include <SupportDefs.h>
|
#include <SupportDefs.h>
|
||||||
#include "Coding.h"
|
#include "Coding.h"
|
||||||
|
|
||||||
#define BEGINS_CHAR(byte) ((byte & 0xc0) >= 0x80)
|
#define BEGINS_CHAR(byte) ((byte & 0xc0) >= 0x80)
|
||||||
|
|
||||||
/*
|
class CodeConv {
|
||||||
* Coding system define.
|
public:
|
||||||
*/
|
CodeConv();
|
||||||
class CodeConv
|
~CodeConv();
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Constructor and Destuructor.
|
|
||||||
*/
|
|
||||||
public:
|
|
||||||
CodeConv (void);
|
|
||||||
~CodeConv (void);
|
|
||||||
|
|
||||||
/*
|
int32 UTF8GetFontWidth(const char *string);
|
||||||
* Public member functions.
|
|
||||||
*/
|
|
||||||
int UTF8GetFontWidth (const uchar *string);
|
|
||||||
|
|
||||||
/* internal(UTF8) -> coding */
|
/* internal(UTF8) -> coding */
|
||||||
int ConvertFromInternal (const uchar *src, uchar *dst, int coding);
|
int32 ConvertFromInternal(const char *src, int32 bytes, char *dst, int coding);
|
||||||
|
|
||||||
/* coding -> internal(UTF8) */
|
/* coding -> internal(UTF8) */
|
||||||
void ConvertToInternal (const uchar *src, uchar *dst, int coding);
|
int32 ConvertToInternal(const char *src, int32 bytes, char *dst, int coding);
|
||||||
|
|
||||||
/*
|
private:
|
||||||
* PRIVATE MEMBER.
|
void euc_to_sjis(uchar *buf);
|
||||||
*/
|
|
||||||
|
|
||||||
private:
|
unsigned short UTF8toUnicode(const char *utf8);
|
||||||
/*
|
|
||||||
* Private member functions.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void euc_to_sjis (uchar *buf);
|
|
||||||
|
|
||||||
unsigned short UTF8toUnicode (const uchar *utf8);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* DATA Member.
|
|
||||||
*/
|
|
||||||
|
|
||||||
int fNowCoding;
|
int fNowCoding;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* CODECONV_H */
|
#endif /* CODECONV_H */
|
||||||
|
|||||||
@@ -3,34 +3,42 @@
|
|||||||
* Copyright (c) 2003-4 Kian Duffy <[email protected]>
|
* Copyright (c) 2003-4 Kian Duffy <[email protected]>
|
||||||
* Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
|
* Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
|
||||||
* Distributed under the terms of the MIT license.
|
* Distributed under the terms of the MIT license.
|
||||||
*
|
|
||||||
* Authors:
|
|
||||||
* Kian Duffy <[email protected]>
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*! This view is a shell for the TermView and makes sure it's always
|
||||||
|
resized in whole character sizes.
|
||||||
|
It doesn't serve any other purpose (and could possibly removed
|
||||||
|
with a tiny bit smarter programming).
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "TermBaseView.h"
|
#include "TermBaseView.h"
|
||||||
#include "TermView.h"
|
#include "TermView.h"
|
||||||
|
|
||||||
TermBaseView::TermBaseView (BRect frame, TermView *inTermView)
|
|
||||||
:BView(frame, "baseview", B_FOLLOW_ALL_SIDES,
|
TermBaseView::TermBaseView(BRect frame, TermView *inTermView)
|
||||||
|
: BView(frame, "baseview", B_FOLLOW_ALL_SIDES,
|
||||||
B_WILL_DRAW | B_FRAME_EVENTS)
|
B_WILL_DRAW | B_FRAME_EVENTS)
|
||||||
{
|
{
|
||||||
fTermView = inTermView;
|
fTermView = inTermView;
|
||||||
}
|
}
|
||||||
|
|
||||||
TermBaseView::~TermBaseView ()
|
|
||||||
|
TermBaseView::~TermBaseView()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TermBaseView::FrameResized (float width, float height)
|
TermBaseView::FrameResized(float width, float height)
|
||||||
{
|
{
|
||||||
int font_width, font_height;
|
int fontWidth, fontHeight;
|
||||||
int cols, rows;
|
int cols, rows;
|
||||||
|
|
||||||
fTermView->GetFontInfo (&font_width, &font_height);
|
fTermView->GetFontInfo(&fontWidth, &fontHeight);
|
||||||
|
|
||||||
cols = (int)(width - VIEW_OFFSET * 2) / font_width;
|
cols = (int)(width - VIEW_OFFSET * 2) / fontWidth;
|
||||||
rows = (int)(height - VIEW_OFFSET * 2)/ font_height;
|
rows = (int)(height - VIEW_OFFSET * 2) / fontHeight;
|
||||||
|
|
||||||
fTermView->ResizeTo (cols * font_width - 1, rows * font_height - 1);
|
fTermView->ResizeTo(cols * fontWidth - 1, rows * fontHeight - 1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,58 +1,29 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright (c) 2001-2005, Haiku, Inc.
|
||||||
* Copyright (c) 2003-4 Kian Duffy <[email protected]>
|
* Copyright (c) 2003-4 Kian Duffy <[email protected]>
|
||||||
* Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
|
* Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
|
||||||
*
|
* Distributed under the terms of the MIT license.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
* a copy of this software and associated documentation files or portions
|
|
||||||
* thereof (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:
|
|
||||||
*
|
|
||||||
* * Redistributions of source code must retain the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer.
|
|
||||||
*
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright notice
|
|
||||||
* in the binary, as well as this list of conditions and the following
|
|
||||||
* disclaimer in the documentation and/or other materials provided with
|
|
||||||
* the distribution.
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
* THE AUTHORS OR COPYRIGHT HOLDERS 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.
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
#ifndef TERM_BASE_VIEW_H
|
||||||
|
#define TERM_BASE_VIEW_H
|
||||||
|
|
||||||
|
|
||||||
#ifndef TERMBASEVIEW_H_INCLUDED
|
|
||||||
#define TERMBASEVIEW_H_INCLUDED
|
|
||||||
#include <View.h>
|
#include <View.h>
|
||||||
|
|
||||||
|
|
||||||
class TermView;
|
class TermView;
|
||||||
|
|
||||||
class TermBaseView : public BView
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
//
|
|
||||||
// Constructor and Desctructor
|
|
||||||
//
|
|
||||||
TermBaseView (BRect frame, TermView *);
|
|
||||||
~TermBaseView ();
|
|
||||||
|
|
||||||
private:
|
class TermBaseView : public BView {
|
||||||
//
|
public:
|
||||||
// Hook Functions.
|
TermBaseView(BRect frame, TermView *);
|
||||||
//
|
~TermBaseView();
|
||||||
void SetBaseColor (rgb_color);
|
|
||||||
|
|
||||||
void FrameResized (float, float);
|
private:
|
||||||
|
void SetBaseColor(rgb_color);
|
||||||
|
virtual void FrameResized(float newWidth, float newHeight);
|
||||||
|
|
||||||
TermView *fTermView;
|
TermView *fTermView;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* TERMBASEVIEW_H_INCLUDED */
|
#endif /* TERM_BASE_VIEW_H */
|
||||||
|
|||||||
+83
-110
@@ -1,33 +1,11 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright (c) 2001-2005, Haiku, Inc.
|
||||||
* Copyright (c) 2003-4 Kian Duffy <[email protected]>
|
* Copyright (c) 2003-4 Kian Duffy <[email protected]>
|
||||||
* Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
|
* Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
|
||||||
*
|
* Distributed under the terms of the MIT license.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
* a copy of this software and associated documentation files or portions
|
|
||||||
* thereof (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:
|
|
||||||
*
|
|
||||||
* * Redistributions of source code must retain the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer.
|
|
||||||
*
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright notice
|
|
||||||
* in the binary, as well as this list of conditions and the following
|
|
||||||
* disclaimer in the documentation and/or other materials provided with
|
|
||||||
* the distribution.
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
* THE AUTHORS OR COPYRIGHT HOLDERS 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.
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
@@ -52,7 +30,7 @@ extern int pfd; // defined Muterminal.cpp
|
|||||||
//
|
//
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
int32
|
int32
|
||||||
TermParse::PtyReader (void *data)
|
TermParse::PtyReader(void *data)
|
||||||
{
|
{
|
||||||
int nread;
|
int nread;
|
||||||
uint read_p = 0;
|
uint read_p = 0;
|
||||||
@@ -253,15 +231,16 @@ int gNowCoding = M_UTF8;
|
|||||||
#define DEFAULT -1
|
#define DEFAULT -1
|
||||||
#define NPARAM 10 // Max parameters
|
#define NPARAM 10 // Max parameters
|
||||||
|
|
||||||
|
|
||||||
int32
|
int32
|
||||||
TermParse::EscParse (void *data)
|
TermParse::EscParse(void *data)
|
||||||
{
|
{
|
||||||
int tmp;
|
int tmp;
|
||||||
int top, bot;
|
int top, bot;
|
||||||
int cs96;
|
int cs96;
|
||||||
uchar curess = 0;
|
uchar curess = 0;
|
||||||
|
|
||||||
TermParse *theObj = (TermParse *) data;
|
TermParse *theObj = (TermParse *)data;
|
||||||
|
|
||||||
TermView *viewObj = theObj->fViewObj;
|
TermView *viewObj = theObj->fViewObj;
|
||||||
CodeConv *convObj = theObj->fConvObj;
|
CodeConv *convObj = theObj->fConvObj;
|
||||||
@@ -286,7 +265,7 @@ TermParse::EscParse (void *data)
|
|||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
|
|
||||||
while (theObj->fQuitting) {
|
while (theObj->fQuitting) {
|
||||||
c = theObj->GetReaderBuf ();
|
c = theObj->GetReaderBuf();
|
||||||
|
|
||||||
if (now_coding != gNowCoding) {
|
if (now_coding != gNowCoding) {
|
||||||
/*
|
/*
|
||||||
@@ -322,20 +301,18 @@ TermParse::EscParse (void *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (parsestate[c]) {
|
switch (parsestate[c]) {
|
||||||
|
|
||||||
case CASE_PRINT:
|
case CASE_PRINT:
|
||||||
cbuf[0] = (uchar) c;
|
cbuf[0] = c;
|
||||||
cbuf[1] = '\0';
|
cbuf[1] = '\0';
|
||||||
width = HALF_WIDTH;
|
width = HALF_WIDTH;
|
||||||
viewObj->PutChar (cbuf, attr, width);
|
viewObj->PutChar(cbuf, attr, width);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_PRINT_GR:
|
case CASE_PRINT_GR:
|
||||||
/* case iso8859 gr character, or euc */
|
/* case iso8859 gr character, or euc */
|
||||||
ptr = cbuf;
|
ptr = cbuf;
|
||||||
if (now_coding == M_EUC_JP || now_coding == M_EUC_KR ||
|
if (now_coding == M_EUC_JP || now_coding == M_EUC_KR
|
||||||
now_coding == M_ISO_2022_JP) {
|
|| now_coding == M_ISO_2022_JP) {
|
||||||
|
|
||||||
switch (parsestate[curess]) {
|
switch (parsestate[curess]) {
|
||||||
case CASE_SS2: /* JIS X 0201 */
|
case CASE_SS2: /* JIS X 0201 */
|
||||||
*ptr++ = curess;
|
*ptr++ = curess;
|
||||||
@@ -361,19 +338,19 @@ TermParse::EscParse (void *data)
|
|||||||
width = 2;
|
width = 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else { /* ISO-8859-1...10 and MacRoman */
|
} else {
|
||||||
|
/* ISO-8859-1...10 and MacRoman */
|
||||||
*ptr++ = c;
|
*ptr++ = c;
|
||||||
*ptr = 0;
|
*ptr = 0;
|
||||||
width = 1;
|
width = 1;
|
||||||
}
|
}
|
||||||
if (now_coding != M_ISO_2022_JP) {
|
|
||||||
convObj->ConvertToInternal (cbuf, dstbuf, now_coding);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
convObj->ConvertToInternal (cbuf, dstbuf, M_EUC_JP);
|
|
||||||
}
|
|
||||||
|
|
||||||
viewObj->PutChar (dstbuf, attr, width);
|
if (now_coding != M_ISO_2022_JP)
|
||||||
|
convObj->ConvertToInternal((char*)cbuf, -1, (char*)dstbuf, now_coding);
|
||||||
|
else
|
||||||
|
convObj->ConvertToInternal((char*)cbuf, -1, (char*)dstbuf, M_EUC_JP);
|
||||||
|
|
||||||
|
viewObj->PutChar(dstbuf, attr, width);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_PRINT_CS96:
|
case CASE_PRINT_CS96:
|
||||||
@@ -381,60 +358,59 @@ TermParse::EscParse (void *data)
|
|||||||
cbuf[1] = theObj->GetReaderBuf() | 0x80;
|
cbuf[1] = theObj->GetReaderBuf() | 0x80;
|
||||||
cbuf[2] = 0;
|
cbuf[2] = 0;
|
||||||
width = 2;
|
width = 2;
|
||||||
convObj->ConvertToInternal (cbuf, dstbuf, M_EUC_JP);
|
convObj->ConvertToInternal((char*)cbuf, 2, (char*)dstbuf, M_EUC_JP);
|
||||||
viewObj->PutChar (dstbuf, attr, width);
|
viewObj->PutChar(dstbuf, attr, width);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_LF:
|
case CASE_LF:
|
||||||
viewObj->PutLF ();
|
viewObj->PutLF();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_CR:
|
case CASE_CR:
|
||||||
viewObj->PutCR ();
|
viewObj->PutCR();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_SJIS_KANA:
|
case CASE_SJIS_KANA:
|
||||||
cbuf[0] = (uchar) c;
|
cbuf[0] = (uchar)c;
|
||||||
cbuf[1] = '\0';
|
cbuf[1] = '\0';
|
||||||
convObj->ConvertToInternal (cbuf, dstbuf, now_coding);
|
convObj->ConvertToInternal((char*)cbuf, 1, (char*)dstbuf, now_coding);
|
||||||
width = 1;
|
width = 1;
|
||||||
viewObj->PutChar (dstbuf, attr, width);
|
viewObj->PutChar(dstbuf, attr, width);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_SJIS_INSTRING:
|
case CASE_SJIS_INSTRING:
|
||||||
cbuf[0] = (uchar) c;
|
cbuf[0] = (uchar)c;
|
||||||
cbuf[1] = theObj->GetReaderBuf ();
|
cbuf[1] = theObj->GetReaderBuf();
|
||||||
cbuf[2] = '\0';
|
cbuf[2] = '\0';
|
||||||
convObj->ConvertToInternal (cbuf, dstbuf, now_coding);
|
convObj->ConvertToInternal((char*)cbuf, 2, (char*)dstbuf, now_coding);
|
||||||
width = 2;
|
width = 2;
|
||||||
viewObj->PutChar (dstbuf, attr, width);
|
viewObj->PutChar(dstbuf, attr, width);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_UTF8_2BYTE:
|
case CASE_UTF8_2BYTE:
|
||||||
cbuf[0] = (uchar) c;
|
cbuf[0] = (uchar)c;
|
||||||
c =theObj->GetReaderBuf ();
|
c = theObj->GetReaderBuf();
|
||||||
if (groundtable[c] != CASE_UTF8_INSTRING)
|
if (groundtable[c] != CASE_UTF8_INSTRING)
|
||||||
break;
|
break;
|
||||||
cbuf[1] = (uchar) c;
|
cbuf[1] = (uchar)c;
|
||||||
cbuf[2] = '\0';
|
cbuf[2] = '\0';
|
||||||
width = convObj->UTF8GetFontWidth (cbuf);
|
width = convObj->UTF8GetFontWidth((char*)cbuf);
|
||||||
viewObj->PutChar (cbuf, attr, width);
|
viewObj->PutChar(cbuf, attr, width);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_UTF8_3BYTE:
|
case CASE_UTF8_3BYTE:
|
||||||
cbuf[0] = (uchar) c;
|
cbuf[0] = c;
|
||||||
c =theObj->GetReaderBuf ();
|
c = theObj->GetReaderBuf();
|
||||||
if (groundtable[c] != CASE_UTF8_INSTRING)
|
if (groundtable[c] != CASE_UTF8_INSTRING)
|
||||||
break;
|
break;
|
||||||
cbuf[1] = (uchar) c;
|
cbuf[1] = c;
|
||||||
|
|
||||||
c =theObj->GetReaderBuf ();
|
c = theObj->GetReaderBuf();
|
||||||
if (groundtable[c] != CASE_UTF8_INSTRING)
|
if (groundtable[c] != CASE_UTF8_INSTRING)
|
||||||
break;
|
break;
|
||||||
cbuf[2] = (uchar) c;
|
cbuf[2] = c;
|
||||||
|
|
||||||
cbuf[3] = '\0';
|
cbuf[3] = '\0';
|
||||||
width = convObj->UTF8GetFontWidth (cbuf);
|
width = convObj->UTF8GetFontWidth((char*)cbuf);
|
||||||
viewObj->PutChar (cbuf, attr, width);
|
viewObj->PutChar (cbuf, attr, width);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -465,13 +441,13 @@ TermParse::EscParse (void *data)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_BS:
|
case CASE_BS:
|
||||||
viewObj->MoveCurLeft (1);
|
viewObj->MoveCurLeft(1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_TAB:
|
case CASE_TAB:
|
||||||
tmp = viewObj->GetCurX ();
|
tmp = viewObj->GetCurX();
|
||||||
tmp %= 8;
|
tmp %= 8;
|
||||||
viewObj->MoveCurRight (8-tmp);
|
viewObj->MoveCurRight(8 - tmp);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_ESC:
|
case CASE_ESC:
|
||||||
@@ -511,7 +487,7 @@ TermParse::EscParse (void *data)
|
|||||||
|
|
||||||
case CASE_ESC_DIGIT: // ESC [ number
|
case CASE_ESC_DIGIT: // ESC [ number
|
||||||
/* digit in csi or dec mode */
|
/* digit in csi or dec mode */
|
||||||
if((row = param[nparam - 1]) == DEFAULT)
|
if ((row = param[nparam - 1]) == DEFAULT)
|
||||||
row = 0;
|
row = 0;
|
||||||
param[nparam - 1] = 10 * row + (c - '0');
|
param[nparam - 1] = 10 * row + (c - '0');
|
||||||
break;
|
break;
|
||||||
@@ -529,53 +505,52 @@ TermParse::EscParse (void *data)
|
|||||||
|
|
||||||
case CASE_ICH: // ESC [@ insert charactor
|
case CASE_ICH: // ESC [@ insert charactor
|
||||||
/* ICH */
|
/* ICH */
|
||||||
if((row = param[0]) < 1)
|
if ((row = param[0]) < 1)
|
||||||
row = 1;
|
row = 1;
|
||||||
viewObj->InsertSpace (row);
|
viewObj->InsertSpace(row);
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_CUU: // ESC [A cursor up, up arrow key.
|
case CASE_CUU: // ESC [A cursor up, up arrow key.
|
||||||
/* CUU */
|
/* CUU */
|
||||||
if((row = param[0]) < 1)
|
if ((row = param[0]) < 1)
|
||||||
row = 1;
|
row = 1;
|
||||||
viewObj->MoveCurUp (row);
|
viewObj->MoveCurUp(row);
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_CUD: // ESC [B cursor down, down arrow key.
|
case CASE_CUD: // ESC [B cursor down, down arrow key.
|
||||||
/* CUD */
|
/* CUD */
|
||||||
if((row = param[0]) < 1)
|
if ((row = param[0]) < 1)
|
||||||
row = 1;
|
row = 1;
|
||||||
viewObj->MoveCurDown (row);
|
viewObj->MoveCurDown(row);
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_CUF: // ESC [C cursor forword
|
case CASE_CUF: // ESC [C cursor forword
|
||||||
/* CUF */
|
/* CUF */
|
||||||
if((row = param[0]) < 1)
|
if ((row = param[0]) < 1)
|
||||||
row = 1;
|
row = 1;
|
||||||
viewObj->MoveCurRight (row);
|
viewObj->MoveCurRight(row);
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_CUB: // ESC [D cursor backword
|
case CASE_CUB: // ESC [D cursor backword
|
||||||
/* CUB */
|
/* CUB */
|
||||||
if((row = param[0]) < 1)
|
if ((row = param[0]) < 1)
|
||||||
row = 1;
|
row = 1;
|
||||||
viewObj->MoveCurLeft (row);
|
viewObj->MoveCurLeft(row);
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_CUP: // ESC [...H move cursor
|
case CASE_CUP: // ESC [...H move cursor
|
||||||
/* CUP | HVP */
|
/* CUP | HVP */
|
||||||
if((row = param[0]) < 1)
|
if ((row = param[0]) < 1)
|
||||||
row = 1;
|
row = 1;
|
||||||
if(nparam < 2 || (col = param[1]) < 1)
|
if (nparam < 2 || (col = param[1]) < 1)
|
||||||
col = 1;
|
col = 1;
|
||||||
|
|
||||||
viewObj->SetCurPos (col - 1, row - 1 );
|
viewObj->SetCurPos(col - 1, row - 1 );
|
||||||
|
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -584,15 +559,15 @@ TermParse::EscParse (void *data)
|
|||||||
switch (param[0]) {
|
switch (param[0]) {
|
||||||
case DEFAULT:
|
case DEFAULT:
|
||||||
case 0:
|
case 0:
|
||||||
viewObj->EraseBelow ();
|
viewObj->EraseBelow();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
viewObj->SetCurPos (0, 0);
|
viewObj->SetCurPos(0, 0);
|
||||||
viewObj->EraseBelow ();
|
viewObj->EraseBelow();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
@@ -600,29 +575,29 @@ TermParse::EscParse (void *data)
|
|||||||
|
|
||||||
case CASE_EL: // delete line
|
case CASE_EL: // delete line
|
||||||
/* EL */
|
/* EL */
|
||||||
viewObj->DeleteColumns ();
|
viewObj->DeleteColumns();
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_IL:
|
case CASE_IL:
|
||||||
/* IL */
|
/* IL */
|
||||||
if((row = param[0]) < 1)
|
if ((row = param[0]) < 1)
|
||||||
row = 1;
|
row = 1;
|
||||||
viewObj->PutNL (row);
|
viewObj->PutNL(row);
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_DL:
|
case CASE_DL:
|
||||||
/* DL */
|
/* DL */
|
||||||
if((row = param[0]) < 1)
|
if ((row = param[0]) < 1)
|
||||||
row = 1;
|
row = 1;
|
||||||
viewObj->DeleteLine (row);
|
viewObj->DeleteLine(row);
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_DCH:
|
case CASE_DCH:
|
||||||
/* DCH */
|
/* DCH */
|
||||||
if((row = param[0]) < 1)
|
if ((row = param[0]) < 1)
|
||||||
row = 1;
|
row = 1;
|
||||||
viewObj->DeleteChar(row);
|
viewObj->DeleteChar(row);
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
@@ -630,19 +605,19 @@ TermParse::EscParse (void *data)
|
|||||||
|
|
||||||
case CASE_SET:
|
case CASE_SET:
|
||||||
/* SET */
|
/* SET */
|
||||||
viewObj->SetInsertMode (MODE_INSERT);
|
viewObj->SetInsertMode(MODE_INSERT);
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_RST:
|
case CASE_RST:
|
||||||
/* RST */
|
/* RST */
|
||||||
viewObj->SetInsertMode (MODE_OVER);
|
viewObj->SetInsertMode(MODE_OVER);
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_SGR:
|
case CASE_SGR:
|
||||||
/* SGR */
|
/* SGR */
|
||||||
for (row=0; row<nparam; ++row) {
|
for (row = 0; row < nparam; ++row) {
|
||||||
switch (param[row]) {
|
switch (param[row]) {
|
||||||
case DEFAULT:
|
case DEFAULT:
|
||||||
case 0: /* Reset attribute */
|
case 0: /* Reset attribute */
|
||||||
@@ -703,29 +678,27 @@ TermParse::EscParse (void *data)
|
|||||||
case CASE_CPR:
|
case CASE_CPR:
|
||||||
// Q & D hack by Y.Hayakawa ([email protected])
|
// Q & D hack by Y.Hayakawa ([email protected])
|
||||||
// 21-JUL-99
|
// 21-JUL-99
|
||||||
viewObj->DeviceStatusReport(param[0]) ;
|
viewObj->DeviceStatusReport(param[0]);
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_DECSTBM:
|
case CASE_DECSTBM:
|
||||||
/* DECSTBM - set scrolling region */
|
/* DECSTBM - set scrolling region */
|
||||||
|
|
||||||
if((top = param[0]) < 1)
|
if ((top = param[0]) < 1)
|
||||||
top = 1;
|
top = 1;
|
||||||
|
|
||||||
if(nparam < 2) {
|
if (nparam < 2)
|
||||||
bot = -1;
|
bot = -1;
|
||||||
}
|
else
|
||||||
else {
|
|
||||||
bot = param[1];
|
bot = param[1];
|
||||||
}
|
|
||||||
|
|
||||||
top--;
|
top--;
|
||||||
bot --;
|
bot--;
|
||||||
|
|
||||||
|
if (bot > top)
|
||||||
|
viewObj->SetScrollRegion(top, bot);
|
||||||
|
|
||||||
if (bot > top) {
|
|
||||||
viewObj->SetScrollRegion (top, bot);
|
|
||||||
}
|
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -761,13 +734,13 @@ TermParse::EscParse (void *data)
|
|||||||
|
|
||||||
case CASE_DECSC:
|
case CASE_DECSC:
|
||||||
/* DECSC */
|
/* DECSC */
|
||||||
viewObj->SaveCursor ();
|
viewObj->SaveCursor();
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CASE_DECRC:
|
case CASE_DECRC:
|
||||||
/* DECRC */
|
/* DECRC */
|
||||||
viewObj->RestoreCursor ();
|
viewObj->RestoreCursor();
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -779,7 +752,7 @@ TermParse::EscParse (void *data)
|
|||||||
|
|
||||||
case CASE_RI:
|
case CASE_RI:
|
||||||
/* RI */
|
/* RI */
|
||||||
viewObj->ScrollRegion (-1, -1, SCRDOWN, 1);
|
viewObj->ScrollRegion(-1, -1, SCRDOWN, 1);
|
||||||
parsestate = groundtable;
|
parsestate = groundtable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -846,7 +819,7 @@ TermParse::EscParse (void *data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
theObj->fParseThread = -1;
|
theObj->fParseThread = -1;
|
||||||
exit_thread (B_OK);
|
exit_thread(B_OK);
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+334
-347
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user