Re: Function for centering text

From: Gary Barnett (gbarnett@POLARNET.COM)
Date: 03/26/98


-----Original Message-----
From: Chris Hyde <slugger@CRYOGEN.FERRIS.EDU>
To: CIRCLE@post.queensu.ca <CIRCLE@post.queensu.ca>
Date: Thursday, March 26, 1998 7:48 PM
Subject:  Function for centering text


>Hello again =)
>
>I used the same formula that is used in the autowiz code, but it still
>will not work.  The autowiz uses a call to fputc(), and that requires as
>an argument a FILE stream to write to.  I tried using puts(), printf(),
>etc, and it still doesn't work(crashes with a seg fault).  I am trying to
>get it to work as a console program before incorporating it into my MUD
>code, but am having no luck.  Does anyone know of another way to write
>strings to the screen that I havent tried?  I realize that once
>incorporated, it will have to work with the send_to_char(), but I can
>tackle that later.

<snip>

I won't comment on fputs, local console output or the rest. But.. for doing
this in the normal context of a CircleMUD I'll give a shot at it.

Seems to me you need to define the following variables and then you write a
routine to wrap around send_to_char.

1) Screen width (how wide is their screen.. 40/80/132?)

2) How wide is the line you are sending?

Given those two pieces of info, here's an approach using Mailer Code FWIW:

#define MIN_USER_SCREEN_WIDTH 40

void send_to_char_centered(char *to_send, struct char_data *ch, shint
user_width) {
   shint spaces=0;
   shint line_width=0;
   char buf[MAX_STRING_LENGTH];

   if (*to_send)
      line_width = strlen(to_send);

   if ( (line_width > user_width)  ||
        (user_width <MIN_USER_SCREEN_WIDTH ) ||
        (line_width <1) )
      return; /* you can deal with these problems :-) */

   spaces = (user_width/2) - (line_width/2);

   buf[0]='\0';
   for(x=0;x<spaces;x++)
      buf[x] = ' ';
   buf[spaces]='\0'

   strcat(buf, to_send);
   send_to_char(buf,ch);
}

--Mallory


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST