diff src/term.c @ 88391:1953d0d56cd7

Include "buffer.h" and "character.h". (encode_terminal_code): Adjusted for the new code-conversion API. (write_glyphs): Likewise. (produce_glyphs): Call CHAR_WIDTH instead of CHARSET_WIDTH.
author Kenichi Handa <handa@m17n.org>
date Fri, 01 Mar 2002 01:48:37 +0000
parents c9baf4b00820
children 54f9d745df15
line wrap: on
line diff
--- a/src/term.c	Fri Mar 01 01:48:16 2002 +0000
+++ b/src/term.c	Fri Mar 01 01:48:37 2002 +0000
@@ -29,6 +29,8 @@
 #include "termchar.h"
 #include "termopts.h"
 #include "lisp.h"
+#include "buffer.h"
+#include "character.h"
 #include "charset.h"
 #include "coding.h"
 #include "keyboard.h"
@@ -872,12 +874,13 @@
 		}
 	    }
 	  
-	  result = encode_coding (coding, buf, dst, len, dst_end - dst);
+	  coding->source = buf;
+	  coding->destination = dst;
+	  coding->dst_bytes = dst_end - dst;
+	  encode_coding_object (coding, Qnil, 0, 0, 1, len, Qnil);
 	  len -= coding->consumed;
 	  dst += coding->produced;
-	  if (result == CODING_FINISH_INSUFFICIENT_DST
-	      || (result == CODING_FINISH_INSUFFICIENT_SRC
-		  && len > dst_end - dst))
+	  if (coding->result == CODING_RESULT_INSUFFICIENT_DST)
 	    /* The remaining output buffer is too short.  We must
 	       break the loop here without increasing SRC so that the
 	       next call of this function starts from the same glyph.  */
@@ -981,8 +984,10 @@
   if (CODING_REQUIRE_FLUSHING (&terminal_coding))
     {
       terminal_coding.mode |= CODING_MODE_LAST_BLOCK;
-      encode_coding (&terminal_coding, "", conversion_buffer,
-		     0, conversion_buffer_size);
+      terminal_coding.source = (unsigned char *) "";
+      terminal_coding.destination = conversion_buffer;
+      terminal_coding.dst_bytes = conversion_buffer_size;
+      encode_coding_object (&terminal_coding, Qnil, 0, 0, 0, 0, Qnil);
       if (terminal_coding.produced > 0)
 	{
 	  fwrite (conversion_buffer, 1, terminal_coding.produced, stdout);
@@ -1713,13 +1718,7 @@
     }
   else
     {
-      /* A multi-byte character.  The display width is fixed for all
-	 characters of the set.  Some of the glyphs may have to be
-	 ignored because they are already displayed in a continued
-	 line.  */
-      int charset = CHAR_CHARSET (it->c);
-
-      it->pixel_width = CHARSET_WIDTH (charset);
+      it->pixel_width = CHAR_WIDTH (it->c);
       it->nglyphs = it->pixel_width;
       
       if (it->glyph_row)