Introduction
Introduction Statistics Contact Development Disclaimer Help
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);
-}
You are viewing proxied material from vernunftzentrum.de. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.