summaryrefslogtreecommitdiff
path: root/Build/source/texk/seetexk/rotate.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/seetexk/rotate.c')
-rw-r--r--Build/source/texk/seetexk/rotate.c156
1 files changed, 0 insertions, 156 deletions
diff --git a/Build/source/texk/seetexk/rotate.c b/Build/source/texk/seetexk/rotate.c
deleted file mode 100644
index 757a479f291..00000000000
--- a/Build/source/texk/seetexk/rotate.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 1987, 1989 University of Maryland
- * Department of Computer Science. All rights reserved.
- * Permission to copy for any purpose is hereby granted
- * so long as this copyright notice remains intact.
- */
-
-#ifndef lint
-static char rcsid[] = "$Header: /usr/src/local/tex/local/mctex/lib/RCS/rotate.c,v 2.4 89/08/22 21:56:05 chris Exp $";
-#endif
-
-/*
- * Routines to generate rotated bitmaps given unrotated inputs.
- *
- * The rotated bitmap is indistinguishable from the unrotated one (aside
- * from being rotated of course!).
- */
-
-#include "types.h"
-#include "error.h"
-#include "font.h"
-
-static void RotateClockwise();
-
-#if !defined( WIN32 ) && !defined( _AMIGA )
-extern int errno;
-char *malloc();
-#endif
-
-/*
- * Rounding, but by powers of two only.
- */
-#define ROUND(n,r) (((n) + ((r) - 1)) & ~((r) - 1))
-
-/*
- * Set the rotation of glyph g to r.
- */
-void SetRotation(g, r)
- register struct glyph *g;
- int r;
-{
-
- if (r < ROT_NORM || r > ROT_RIGHT)
- error(1, 0, "bad rotation value %d", r);
-
- /*
- * The null glyph is trivial to rotate by any amount.
- *
- * Note that this assumes that any raster has been obtained
- * BEFORE calling SetRotation()!
- */
- if (g->g_raster == NULL) {
- g->g_rotation = r;
- return;
- }
-
- /*
- * This is hardly efficient, but it *is* expedient....
- */
- while (g->g_rotation != r) {
- RotateClockwise(g);
- g->g_rotation = (g->g_rotation - 1) & 3;
- }
-}
-
-/*
- * Rotation by 1/4 turn clockwise (from ROT_NORM to ROT_RIGHT, e.g.).
- */
-static void
-RotateClockwise(glyph)
- struct glyph *glyph;
-{
- register char *nrast; /* new raster */
- register char *orast; /* old raster */
- register int oheight; /* old raster height, new raster width */
- register int owidth; /* old raster width, new raster height */
- unsigned int size; /* size of new raster (in bytes) */
- int nplus; /* offset between rows in nrast */
-
- /*
- * First, get a new raster.
- */
- {
- register struct glyph *g = glyph;
- register int t;
-
- oheight = g->g_height;
- owidth = g->g_width;
-
- /*
- * Offset is (new width) rounded to bytes.
- */
- nplus = ROUND(oheight, 8) >> 3;
-
- /*
- * Size of new raster is (new height) * (new rounded width,
- * in bytes).
- */
- size = nplus * owidth;
- if ((nrast = malloc(size)) == NULL)
- error(1, errno, "out of memory");
- bzero(nrast, size);
-
- /*
- * New y origin is old x origin; new x origin is old height
- * minus old y origin - 1.
- */
- t = g->g_yorigin;
- g->g_yorigin = g->g_xorigin;
- g->g_xorigin = oheight - t - 1;
-
- /* While we are at it, exchange height & width... */
- g->g_height = owidth;
- g->g_width = oheight;
-
- /* and grab a pointer to the old raster. */
- orast = g->g_raster;
- }
-
- /*
- * Now copy bits from the old raster to the new one. The mapping
- * function is
- *
- * for i in [0..height)
- * for j in [0..width)
- * new[j, height-i-1] = old[i, j]
- *
- * Thus i maps to height-i-1 and (since we have to do our own 2
- * dimensional array indexing) j to nplus*j. We call the mapped
- * variables mapi and mapj, and, since we scan sequentially through
- * the old raster, can discard the original i and j.
- */
- {
- register int mapj, c, k, mapi;
-
- mapi = oheight;
- owidth *= nplus;
- while (--mapi >= 0) {
- k = 7;
- for (mapj = 0; mapj < owidth; mapj += nplus) {
- if (++k == 8) /* get another byte */
- c = *orast++, k = 0;
- if (c & 0x80) /* old[i,j] was set */
- nrast[mapj + (mapi >> 3)] |=
- 1 << (7 - (mapi & 7));
- c <<= 1;
- }
- }
- }
-
- /*
- * Finally, free the storage associated with the original raster.
- */
- free(glyph->g_raster);
- glyph->g_raster = nrast;
-}