Text output after a call to settextjustify is justified around the
current position (CP) horizontally and vertically, as specified. The
default justification settings are LEFT_TEXT (for horizontal) and
TOP_TEXT (for vertical). The enumeration text_just in graphics.h provides
names for the horiz and vert settings passed to settextjustify.
==== Description of settextjustify ====
<code c> Name Value Action
horiz LEFT_TEXT 0 left-justify text
CENTER_TEXT 1 center text
RIGHT_TEXT 2 right-justify text
vertical BOTTOM_TEXT 0 bottom-justify text
CENTER_TEXT 1 center text
TOP_TEXT 2 top-justify text
If horiz is equal to LEFT_TEXT and direction equals HORIZ_DIR, the CP's x
component is advanced after a call to outtext(string) by textwidth
(string).
settextjustify affects text written with outtext and cannot be used with
text mode and stream functions.
/* settextjustify example */
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
/* function prototype */
void xat(int x, int y);
/* horizontal text justification settings */
char *hjust[] = { "LEFT_TEXT", "CENTER_TEXT", "RIGHT_TEXT" };
/* vertical text justification settings */
char *vjust[] = { "BOTTOM_TEXT", "CENTER_TEXT", "TOP_TEXT" };
int main(void)
{
/* request autodetection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy, hj, vj;
char msg[80];
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) { /* an error occurred */
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
/* loop through text justifications */
for (hj=LEFT_TEXT; hj<=RIGHT_TEXT; hj++)
for (vj=LEFT_TEXT; vj<=RIGHT_TEXT; vj++) {
cleardevice();
/* set the text justification */
settextjustify(hj, vj);
/* create a message string */
sprintf(msg, "%s %s", hjust[hj], vjust[vj]);
/* create crosshairs on the screen */
xat(midx, midy);
/* output the message */
outtextxy(midx, midy, msg);
getch();
}
/* clean up */
closegraph();
return 0;
}
void xat(int x, int y) /* draw an x at (x,y) */
{
line(x-4, y, x+4, y);
line(x, y-4, x, y+4);
}