Removed unused bitblt code. - sam - An updated version of the sam text editor. | |
git clone git://vernunftzentrum.de/sam.git | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit 88e512d6b6c80963bb5c123b7daaf48298fb86c7 | |
parent 1cff9deb7a8839bff68b86fa5c5c4a21049bc849 | |
Author: Rob King <[email protected]> | |
Date: Tue, 6 Sep 2016 17:38:28 -0500 | |
Removed unused bitblt code. | |
Diffstat: | |
libXg/Makefile | 12 ++++++------ | |
libXg/arc.c | 45 ------------------------------- | |
libXg/bitbltclip.c | 68 ------------------------------- | |
libXg/circle.c | 23 ----------------------- | |
libXg/clipline.c | 225 ------------------------------- | |
libXg/copymasked.c | 49 ------------------------------- | |
libXg/ellipse.c | 23 ----------------------- | |
libXg/polysegment.c | 27 --------------------------- | |
libXg/rdbitmapfile.c | 65 ------------------------------- | |
libXg/segment.c | 25 ------------------------- | |
libXg/wrbitmapfile.c | 50 ------------------------------- | |
11 files changed, 6 insertions(+), 606 deletions(-) | |
--- | |
diff --git a/libXg/Makefile b/libXg/Makefile | |
@@ -23,12 +23,12 @@ LIB=libXg.a | |
CFLAGS=$(STANDARDS) $(INCS) $(INCLUDES) | |
CC?=c99 | |
-OBJS= arc.o arith.o balloc.o bitblt.o bitbltclip.o border.o bscreenrect… | |
- circle.o clipline.o clipr.o copymasked.o cursorset.o cursorswitch.o\ | |
- disc.o ellipse.o font.o gcs.o getrect.o gwin.o ldconvert.o latin1.o\ | |
- menuhit.o point.o polysegment.o rdbitmap.o rdbitmapfile.o\ | |
- rectclip.o rune.o segment.o string.o strwidth.o texture.o\ | |
- wrbitmap.o wrbitmapfile.o xtbinit.o | |
+OBJS= arith.o balloc.o bitblt.o border.o bscreenrect.o\ | |
+ clipr.o cursorset.o cursorswitch.o\ | |
+ font.o gcs.o getrect.o gwin.o ldconvert.o latin1.o\ | |
+ menuhit.o point.o rdbitmap.o \ | |
+ rectclip.o rune.o string.o strwidth.o texture.o\ | |
+ wrbitmap.o xtbinit.o | |
all install: $(LIB) | |
compile: $(LIB) | |
diff --git a/libXg/arc.c b/libXg/arc.c | |
@@ -1,45 +0,0 @@ | |
-/* Copyright (c) 1998 Lucent Technologies - All rights reserved. */ | |
-#include <u.h> | |
-#include <libc.h> | |
-#include <libg.h> | |
-#include "libgint.h" | |
-#include <math.h> | |
- | |
-#define rad2deg(x) 180*((x)/3.141592653589793238462643383279502884197169399375… | |
- | |
-void | |
-arc(Bitmap *b, Point p0, Point p1, Point p2, int v, Fcode f) | |
-{ | |
- unsigned int d; | |
- int x, y, r, start, end, delta; | |
- GC g; | |
- | |
- p1.x -= p0.x; | |
- p1.y -= p0.y; | |
- p2.x -= p0.x; | |
- p2.y -= p0.y; | |
- r = (int)sqrt((double)(p1.x*p1.x + p1.y*p1.y)); | |
- start = (int)(64*rad2deg(atan2(-p2.y, p2.x))); | |
- end = (int)(64*rad2deg(atan2(-p1.y, p1.x))); | |
- if(start < 0) | |
- start += 64*360; | |
- if(end < 0) | |
- end += 64*360; | |
- delta = end - start; | |
- if(delta < 0) | |
- delta += 64*360; | |
- x = p0.x - r; | |
- y = p0.y - r; | |
- if(b->flag&SHIFT){ | |
- x -= b->r.min.x; | |
- y -= b->r.min.y; | |
- } | |
- d = 2*r; | |
- g = _getfillgc(f, b, v); | |
- /* | |
- * delta is positive, so this draws counterclockwise arc | |
- * from start to start+delta | |
- */ | |
- XDrawArc(_dpy, (Drawable)b->id, g, x, y, d, d, start, delta); | |
-} | |
- | |
diff --git a/libXg/bitbltclip.c b/libXg/bitbltclip.c | |
@@ -1,68 +0,0 @@ | |
-/* Copyright (c) 1998 Lucent Technologies - All rights reserved. */ | |
-#include <u.h> | |
-#include <libc.h> | |
-#include <libg.h> | |
-#include "libgint.h" | |
- | |
-int | |
-bitbltclip(void *vp) | |
-{ | |
- int dx, dy; | |
- int i; | |
- struct bbcarg{ | |
- Bitmap *dm; | |
- Point p; | |
- Bitmap *sm; | |
- Rectangle r; | |
- Fcode f; | |
- }*bp; | |
- | |
- bp = (struct bbcarg *)vp; | |
- dx = Dx(bp->r); | |
- dy = Dy(bp->r); | |
- if(bp->p.x < bp->dm->clipr.min.x){ | |
- i = bp->dm->clipr.min.x-bp->p.x; | |
- bp->r.min.x += i; | |
- bp->p.x += i; | |
- dx -= i; | |
- } | |
- if(bp->p.y < bp->dm->clipr.min.y){ | |
- i = bp->dm->clipr.min.y-bp->p.y; | |
- bp->r.min.y += i; | |
- bp->p.y += i; | |
- dy -= i; | |
- } | |
- if(bp->p.x+dx > bp->dm->clipr.max.x){ | |
- i = bp->p.x+dx-bp->dm->clipr.max.x; | |
- bp->r.max.x -= i; | |
- dx -= i; | |
- } | |
- if(bp->p.y+dy > bp->dm->clipr.max.y){ | |
- i = bp->p.y+dy-bp->dm->clipr.max.y; | |
- bp->r.max.y -= i; | |
- dy -= i; | |
- } | |
- if(bp->r.min.x < bp->sm->clipr.min.x){ | |
- i = bp->sm->clipr.min.x-bp->r.min.x; | |
- bp->p.x += i; | |
- bp->r.min.x += i; | |
- dx -= i; | |
- } | |
- if(bp->r.min.y < bp->sm->clipr.min.y){ | |
- i = bp->sm->clipr.min.y-bp->r.min.y; | |
- bp->p.y += i; | |
- bp->r.min.y += i; | |
- dy -= i; | |
- } | |
- if(bp->r.max.x > bp->sm->clipr.max.x){ | |
- i = bp->r.max.x-bp->sm->clipr.max.x; | |
- bp->r.max.x -= i; | |
- dx -= i; | |
- } | |
- if(bp->r.max.y > bp->sm->clipr.max.y){ | |
- i = bp->r.max.y-bp->sm->clipr.max.y; | |
- bp->r.max.y -= i; | |
- dy -= i; | |
- } | |
- return dx>0 && dy>0; | |
-} | |
diff --git a/libXg/circle.c b/libXg/circle.c | |
@@ -1,23 +0,0 @@ | |
-/* Copyright (c) 1998 Lucent Technologies - All rights reserved. */ | |
-#include <u.h> | |
-#include <libc.h> | |
-#include <libg.h> | |
-#include "libgint.h" | |
- | |
-void | |
-circle(Bitmap *b, Point p, int r, int v, Fcode f) | |
-{ | |
- unsigned int d; | |
- int x, y; | |
- GC g; | |
- | |
- x = p.x - r; | |
- y = p.y - r; | |
- if (b->flag&SHIFT){ | |
- x -= b->r.min.x; | |
- y -= b->r.min.y; | |
- } | |
- d = 2*r; | |
- g = _getfillgc(f, b, v); | |
- XDrawArc(_dpy, (Drawable)b->id, g, x, y, d, d, 0, 23040/* 360 deg */); | |
-} | |
diff --git a/libXg/clipline.c b/libXg/clipline.c | |
@@ -1,225 +0,0 @@ | |
-/* Copyright (c) 1998 Lucent Technologies - All rights reserved. */ | |
-#include <u.h> | |
-#include <libc.h> | |
-#include <libg.h> | |
-#include "libgint.h" | |
- | |
-typedef struct Linedesc | |
-{ | |
- int x0; | |
- int y0; | |
- char xmajor; | |
- char slopeneg; | |
- long dminor; | |
- long dmajor; | |
-} Linedesc; | |
- | |
-int _clipline(Rectangle, Point*, Point*, Linedesc*); | |
- | |
-#define XYswap(p) t=(p)->x, (p)->x=(p)->y, (p)->y=t | |
-#define Swap(x, y) t=x, x=y, y=t | |
- | |
-static long | |
-lfloor(long x, long y) /* first integer <= x/y */ | |
-{ | |
- if(y <= 0){ | |
- if(y == 0) | |
- return x; | |
- y = -y; | |
- x = -x; | |
- } | |
- if(x < 0){ /* be careful; C div. is undefined */ | |
- x = -x; | |
- x += y-1; | |
- return -(x/y); | |
- } | |
- return x/y; | |
-} | |
- | |
-static long | |
-lceil(long x, long y) /* first integer >= x/y */ | |
-{ | |
- if(y <= 0){ | |
- if(y == 0) | |
- return x; | |
- y = -y; | |
- x = -x; | |
- } | |
- if(x < 0){ | |
- x = -x; | |
- return -(x/y); | |
- } | |
- x += y-1; | |
- return x/y; | |
-} | |
- | |
-int | |
-_gminor(long x, Linedesc *l) | |
-{ | |
- long y; | |
- | |
- y = 2*(x-l->x0)*l->dminor + l->dmajor; | |
- y = lfloor(y, 2*l->dmajor) + l->y0; | |
- return l->slopeneg? -y : y; | |
-} | |
- | |
-int | |
-_gmajor(long y, Linedesc *l) | |
-{ | |
- long x; | |
- | |
- x = 2*((l->slopeneg? -y : y)-l->y0)*l->dmajor - l->dminor; | |
- x = lceil(x, 2*l->dminor) + l->x0; | |
- if(l->dminor) | |
- while(_gminor(x-1, l) == y) | |
- x--; | |
- return x; | |
-} | |
- | |
-void | |
-gsetline(Point *pp0, Point *pp1, Linedesc *l) | |
-{ | |
- long dx, dy, t; | |
- Point endpt; | |
- int swapped; | |
- Point p0, p1; | |
- | |
- swapped = 0; | |
- p0 = *pp0; | |
- p1 = *pp1; | |
- l->xmajor = 1; | |
- l->slopeneg = 0; | |
- dx = p1.x - p0.x; | |
- dy = p1.y - p0.y; | |
- if(abs(dy) > abs(dx)){ /* Steep */ | |
- l->xmajor = 0; | |
- XYswap(&p0); | |
- XYswap(&p1); | |
- Swap(dx, dy); | |
- } | |
- if(dx < 0){ | |
- swapped++; | |
- Swap(p0.x, p1.x); | |
- Swap(p0.y, p1.y); | |
- dx = -dx; | |
- dy = -dy; | |
- } | |
- if(dy < 0){ | |
- l->slopeneg = 1; | |
- dy = -dy; | |
- p0.y = -p0.y; | |
- } | |
- l->dminor = dy; | |
- l->dmajor = dx; | |
- l->x0 = p0.x; | |
- l->y0 = p0.y; | |
- p1.x = swapped? p0.x+1 : p1.x-1; | |
- p1.y = _gminor(p1.x, l); | |
- if(l->xmajor == 0){ | |
- XYswap(&p0); | |
- XYswap(&p1); | |
- } | |
- if(pp0->x > pp1->x){ | |
- *pp1 = *pp0; | |
- *pp0 = p1; | |
- }else | |
- *pp1 = p1; | |
-} | |
-/* | |
- * Modified clip-to-rectangle algorithm | |
- * works in bitmaps | |
- * Everything in SCREEN coordinates. | |
- * | |
- * Newman & Sproull 124 (1st edition) | |
- */ | |
- | |
-static int | |
-code(Point *p, Rectangle *r) | |
-{ | |
- return( (p->x<r->min.x? 1 : p->x>=r->max.x? 2 : 0) | | |
- (p->y<r->min.y? 4 : p->y>=r->max.y? 8 : 0)); | |
-} | |
- | |
-int | |
-clipline(Rectangle r, Point *p0, Point *p1) | |
-{ | |
- Linedesc l; | |
- | |
- return _clipline(r, p0, p1, &l); | |
-} | |
- | |
-int | |
-_clipline(Rectangle r, Point *p0, Point *p1, Linedesc *l) | |
-{ | |
- int c0, c1, n; | |
- long t, ret; | |
- Point temp; | |
- int swapped; | |
- | |
- if(p0->x==p1->x && p0->y==p1->y) | |
- return 0; | |
- gsetline(p0, p1, l); | |
- /* line is now closed */ | |
- if(l->xmajor == 0){ | |
- XYswap(p0); | |
- XYswap(p1); | |
- XYswap(&r.min); | |
- XYswap(&r.max); | |
- } | |
- c0 = code(p0, &r); | |
- c1 = code(p1, &r); | |
- ret = 1; | |
- swapped = 0; | |
- n = 0; | |
- while(c0 | c1){ | |
- if(c0 & c1){ /* no point of line in r */ | |
- ret = 0; | |
- goto Return; | |
- } | |
- if(++n > 10){ /* horrible points; overflow etc. etc. */ | |
- ret = 0; | |
- goto Return; | |
- } | |
- if(c0 == 0){ /* swap points */ | |
- temp = *p0; | |
- *p0 = *p1; | |
- *p1 = temp; | |
- Swap(c0, c1); | |
- swapped ^= 1; | |
- } | |
- if(c0 == 0) | |
- break; | |
- if(c0 & 1){ /* push towards left edge */ | |
- p0->x = r.min.x; | |
- p0->y = _gminor(p0->x, l); | |
- }else if(c0 & 2){ /* push towards right edge */ | |
- p0->x = r.max.x-1; | |
- p0->y = _gminor(p0->x, l); | |
- }else if(c0 & 4){ /* push towards top edge */ | |
- p0->y = r.min.y; | |
- if(l->slopeneg) | |
- p0->x = _gmajor(p0->y-1, l)-1; | |
- else | |
- p0->x = _gmajor(p0->y, l); | |
- }else if(c0 & 8){ /* push towards bottom edge */ | |
- p0->y = r.max.y-1; | |
- if(l->slopeneg) | |
- p0->x = _gmajor(p0->y, l); | |
- else | |
- p0->x = _gmajor(p0->y+1, l)-1; | |
- } | |
- c0 = code(p0, &r); | |
- } | |
- | |
- Return: | |
- if(l->xmajor == 0){ | |
- XYswap(p0); | |
- XYswap(p1); | |
- } | |
- if(swapped){ | |
- temp = *p0; | |
- *p0 = *p1; | |
- *p1 = temp; | |
- } | |
- return ret; | |
-} | |
diff --git a/libXg/copymasked.c b/libXg/copymasked.c | |
@@ -1,49 +0,0 @@ | |
-/* Copyright (c) 1998 Lucent Technologies - All rights reserved. */ | |
-#include <u.h> | |
-#include <libc.h> | |
-#include <libg.h> | |
-#include "libgint.h" | |
- | |
-/* | |
- * m should be a 1-bit-deep bitmap with origin (0,0) and the | |
- * same extents as r. s should have the same depth as d. | |
- * Rectangle r of s is copied to d wherever corresponding | |
- * bits of m are 1 | |
- */ | |
-void | |
-copymasked(Bitmap *d, Point p, Bitmap *s, Bitmap *m, Rectangle r) | |
-{ | |
- int sx, sy, dx, dy; | |
- XGCValues gcv; | |
- GC g; | |
- | |
- if(Dx(r)<=0 || Dy(r)<=0) | |
- return; | |
- sx = r.min.x; | |
- sy = r.min.y; | |
- if(s->flag&SHIFT){ | |
- sx -= s->r.min.x; | |
- sy -= s->r.min.y; | |
- } | |
- dx = p.x; | |
- dy = p.y; | |
- if(d->flag&SHIFT){ | |
- dx -= d->r.min.x; | |
- dy -= d->r.min.y; | |
- } | |
- gcv.fill_style = FillStippled; | |
- gcv.stipple = (Pixmap)m->id; | |
- gcv.function = GXclear; | |
- gcv.ts_x_origin = dx; | |
- gcv.ts_y_origin = dy; | |
- gcv.fill_style = FillStippled; | |
- g = _getgc(d, GCFunction|GCStipple|GCTileStipXOrigin | |
- |GCTileStipYOrigin|GCFillStyle, &gcv); | |
- XFillRectangle(_dpy, (Drawable)d->id, g, | |
- dx, dy, Dx(r), Dy(r)); | |
- gcv.function = GXor; | |
- gcv.fill_style = FillSolid; | |
- g = _getgc(d, GCFunction|GCFillStyle, &gcv); | |
- XCopyArea(_dpy, (Drawable)s->id, (Drawable)d->id, g, | |
- sx, sy, Dx(r), Dy(r), dx, dy); | |
-} | |
diff --git a/libXg/ellipse.c b/libXg/ellipse.c | |
@@ -1,23 +0,0 @@ | |
-/* Copyright (c) 1998 Lucent Technologies - All rights reserved. */ | |
-#include <u.h> | |
-#include <libc.h> | |
-#include <libg.h> | |
-#include "libgint.h" | |
- | |
-/* e(x,y) = b*b*x*x + a*a*y*y - a*a*b*b */ | |
- | |
-void | |
-ellipse(Bitmap *bp, Point p, int a, int b, int v, Fcode f) | |
-{ | |
- int x, y; | |
- GC g; | |
- | |
- x = p.x - a; | |
- y = p.y - b; | |
- if (bp->flag&SHIFT){ | |
- x -= bp->r.min.x; | |
- y -= bp->r.min.y; | |
- } | |
- g = _getfillgc(f, bp, v); | |
- XDrawArc(_dpy, (Drawable)bp->id, g, x, y, 2*a, 2*b, 0, 23040/* 360 deg */); | |
-} | |
diff --git a/libXg/polysegment.c b/libXg/polysegment.c | |
@@ -1,27 +0,0 @@ | |
-/* Copyright (c) 1998 Lucent Technologies - All rights reserved. */ | |
-#include <u.h> | |
-#include <libc.h> | |
-#include <libg.h> | |
-#include "libgint.h" | |
- | |
-void | |
-polysegment(Bitmap *d, int n, Point *pp, int v, Fcode f) | |
-{ | |
- XPoint *xp; | |
- int i; | |
- GC g; | |
- | |
- if (!(xp = (XPoint *)calloc(n, sizeof(XPoint)))) | |
- berror("polysegment: could not allocate XPoints"); | |
- for (i = 0; i < n; i++, pp++) | |
- if(d->flag&SHIFT){ | |
- xp[i].x = pp->x - d->r.min.x; | |
- xp[i].y = pp->y - d->r.min.y; | |
- } else { | |
- xp[i].x = pp->x; | |
- xp[i].y = pp->y; | |
- } | |
- g = _getfillgc(f, d, v); | |
- XDrawLines(_dpy, (Drawable)d->id, g, xp, n, CoordModeOrigin); | |
- free(xp); | |
-} | |
diff --git a/libXg/rdbitmapfile.c b/libXg/rdbitmapfile.c | |
@@ -1,65 +0,0 @@ | |
-/* Copyright (c) 1998 Lucent Technologies - All rights reserved. */ | |
-#include <u.h> | |
-#include <libc.h> | |
-#include <libg.h> | |
-#include "libgint.h" | |
- | |
-#define CHUNK 6000 | |
- | |
-Bitmap* | |
-rdbitmapfile(int fd) | |
-{ | |
- char hdr[5*12+1]; | |
- unsigned char *data; | |
- long dy, px; | |
- unsigned long l, t, n; | |
- long miny, maxy; | |
- Rectangle r; | |
- int ld; | |
- Bitmap *b; | |
- | |
- if(read(fd, hdr, 5*12)!=5*12) | |
- berror("rdbitmapfile read"); | |
- ld = atoi(hdr+0*12); | |
- r.min.x = atoi(hdr+1*12); | |
- r.min.y = atoi(hdr+2*12); | |
- r.max.x = atoi(hdr+3*12); | |
- r.max.y = atoi(hdr+4*12); | |
- if(ld<0 || ld>1) | |
- berror("rdbitmapfile ldepth"); | |
- if(r.min.x>r.max.x || r.min.y>r.max.y) | |
- berror("rdbitmapfile rectangle"); | |
- | |
- miny = r.min.y; | |
- maxy = r.max.y; | |
- px = 1<<(3-ld); /* pixels per byte */ | |
- /* set l to number of bytes of data per scan line */ | |
- if(r.min.x >= 0) | |
- l = (r.max.x+px-1)/px - r.min.x/px; | |
- else{ /* make positive before divide */ | |
- t = (-r.min.x)+px-1; | |
- t = (t/px)*px; | |
- l = (t+r.max.x+px-1)/px; | |
- } | |
- b = balloc(r, ld); | |
- if(b == 0) | |
- return 0; | |
- data = (unsigned char *)malloc(CHUNK); | |
- if(data == 0) | |
- berror("rdbitmapfile malloc"); | |
- while(maxy > miny){ | |
- dy = maxy - miny; | |
- if(dy*l > CHUNK) | |
- dy = CHUNK/l; | |
- n = dy*l; | |
- if(read(fd, data, n) != n){ | |
- free(data); | |
- bfree(b); | |
- berror("rdbitmapfile read"); | |
- } | |
- wrbitmap(b, miny, miny+dy, data); | |
- miny += dy; | |
- } | |
- free(data); | |
- return b; | |
-} | |
diff --git a/libXg/segment.c b/libXg/segment.c | |
@@ -1,25 +0,0 @@ | |
-/* Copyright (c) 1998 Lucent Technologies - All rights reserved. */ | |
-#include <u.h> | |
-#include <libc.h> | |
-#include <libg.h> | |
-#include "libgint.h" | |
- | |
-void | |
-segment(Bitmap *d, Point p1, Point p2, int v, Fcode f) | |
-{ | |
- int x1, y1, x2, y2; | |
- GC g; | |
- | |
- x1 = p1.x; | |
- y1 = p1.y; | |
- x2 = p2.x; | |
- y2 = p2.y; | |
- if(d->flag&SHIFT){ | |
- x1 -= d->r.min.x; | |
- y1 -= d->r.min.y; | |
- x2 -= d->r.min.x; | |
- y2 -= d->r.min.y; | |
- } | |
- g = _getfillgc(f, d, v); | |
- XDrawLine(_dpy, (Drawable)d->id, g, x1, y1, x2, y2); | |
-} | |
diff --git a/libXg/wrbitmapfile.c b/libXg/wrbitmapfile.c | |
@@ -1,50 +0,0 @@ | |
-/* Copyright (c) 1998 Lucent Technologies - All rights reserved. */ | |
-#include <u.h> | |
-#include <libc.h> | |
-#include <libg.h> | |
-#include "libgint.h" | |
- | |
-#define CHUNK 4096 | |
- | |
-void | |
-wrbitmapfile(int fd, Bitmap *b) | |
-{ | |
- char hdr[5*12+1]; | |
- unsigned char *data; | |
- long dy, px; | |
- unsigned long l, t, n; | |
- long miny, maxy; | |
- | |
- sprint(hdr, "%11d %11d %11d %11d %11d ", | |
- b->ldepth, b->r.min.x, b->r.min.y, b->r.max.x, b->r.max.y); | |
- if(write(fd, hdr, 5*12) != 5*12) | |
- berror("wrbitmapfile write"); | |
- | |
- px = 1<<(3-b->ldepth); /* pixels per byte */ | |
- /* set l to number of bytes of data per scan line */ | |
- if(b->r.min.x >= 0) | |
- l = (b->r.max.x+px-1)/px - b->r.min.x/px; | |
- else{ /* make positive before divide */ | |
- t = (-b->r.min.x)+px-1; | |
- t = (t/px)*px; | |
- l = (t+b->r.max.x+px-1)/px; | |
- } | |
- miny = b->r.min.y; | |
- maxy = b->r.max.y; | |
- data = (unsigned char *)malloc(CHUNK); | |
- if(data == 0) | |
- berror("wrbitmapfile malloc"); | |
- while(maxy > miny){ | |
- dy = maxy - miny; | |
- if(dy*l > CHUNK) | |
- dy = CHUNK/l; | |
- rdbitmap(b, miny, miny+dy, data); | |
- n = dy*l; | |
- if(write(fd, data, n) != n){ | |
- free(data); | |
- berror("wrbitmapfile write"); | |
- } | |
- miny += dy; | |
- } | |
- free(data); | |
-} |