コード例 #1
0
ファイル: openfont.c プロジェクト: keedon/harvey
Font*
openfont(Display *d, char *name)
{
	Font *fnt;
	int fd, i, n;
	char *buf;
	Dir *dir;

	fd = open(name, OREAD);
	if(fd < 0)
		return 0;

	dir = dirfstat(fd);
	if(dir == nil){
    Err0:
		close(fd);
		return 0;
	}
	n = dir->length;
	free(dir);
	buf = malloc(n+1);
	if(buf == 0)
		goto Err0;
	buf[n] = 0;
	i = read(fd, buf, n);
	close(fd);
	if(i != n){
		free(buf);
		return 0;
	}
	fnt = buildfont(d, buf, name);
	free(buf);
	return fnt;
}
コード例 #2
0
ファイル: openfont.c プロジェクト: grobe0ba/plan9front
Font*
openfont(Display *d, char *name)
{
	Font *fnt;
	char *buf;

	if((buf = readfile(name)) == nil)
		return nil;
	fnt = buildfont(d, buf, name);
	free(buf);
	return fnt;
}
コード例 #3
0
ファイル: 21.c プロジェクト: manish05/TCR
/* stuff to be initialized for change between fullscreen/windowed */
int initgl() {
  glShadeModel(GL_SMOOTH);                  /* select shade model: smooth */
  glClearColor(0,0,0,.5);                   /* black background: r,g,b,alpha */
  glClearDepth(1);                          /* depth buffer setup */
  glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
  /* unfortunately, need to do this for each resize */
  if(!loadgltexture("21font.bmp",&texture[0])) return 0;
  if(!loadgltexture("21image.bmp",&texture[1])) return 0;
  buildfont();
  return 1;
}
コード例 #4
0
ファイル: text.cpp プロジェクト: r-lyeh-forks/mini.q
void start() {
  buildfont();
  font::s.fixedfunction = true;
}
コード例 #5
0
ファイル: init.c プロジェクト: 99years/plan9
int
geninitdraw(char *devdir, void(*error)(Display*, char*), char *fontname, char *label, char *windir, int ref)
{
	int fd, n;
	Subfont *df;
	char buf[128];

	display = initdisplay(devdir, windir, error);
	if(display == nil)
		return -1;

	/*
	 * Set up default font
	 */
	df = getdefont(display);
	display->defaultsubfont = df;
	if(df == nil){
		fprint(2, "imageinit: can't open default subfont: %r\n");
    Error:
		closedisplay(display);
		display = nil;
		return -1;
	}
	if(fontname == nil){
		fd = open("/env/font", OREAD);
		if(fd >= 0){
			n = read(fd, buf, sizeof(buf));
			if(n>0 && n<sizeof buf-1){
				buf[n] = 0;
				fontname = buf;
			}
			close(fd);
		}
	}
	/*
	 * Build fonts with caches==depth of screen, for speed.
	 * If conversion were faster, we'd use 0 and save memory.
	 */
	if(fontname == nil){
		snprint(buf, sizeof buf, "%d %d\n0 %d\t%s\n", df->height, df->ascent,
			df->n-1, deffontname);
//BUG: Need something better for this	installsubfont("*default*", df);
		font = buildfont(display, buf, deffontname);
		if(font == nil){
			fprint(2, "imageinit: can't open default font: %r\n");
			goto Error;
		}
	}else{
		font = openfont(display, fontname);	/* BUG: grey fonts */
		if(font == nil){
			fprint(2, "imageinit: can't open font %s: %r\n", fontname);
			goto Error;
		}
	}
	display->defaultfont = font;

	/*
	 * Write label; ignore errors (we might not be running under rio)
	 */
	if(label){
		snprint(buf, sizeof buf, "%s/label", display->windir);
		fd = open(buf, OREAD);
		if(fd >= 0){
			read(fd, display->oldlabel, (sizeof display->oldlabel)-1);
			close(fd);
			fd = create(buf, OWRITE, 0666);
			if(fd >= 0){
				write(fd, label, strlen(label));
				close(fd);
			}
		}
	}

	snprint(buf, sizeof buf, "%s/winname", display->windir);
	if(gengetwindow(display, buf, &screen, &_screen, ref) < 0)
		goto Error;

	atexit(drawshutdown);

	return 1;
}
コード例 #6
0
ファイル: glxspheres.c プロジェクト: stroyan/vogl
int display(SDL_Window *window, int advance)
{
    static int first = 1;
    static double start = 0., elapsed = 0., mpixels = 0.;
    static unsigned long frames = 0;
    static char temps[256];
    GLfloat xaspect, yaspect;

    if (first)
    {
        buildfont();

        GLfloat id4[] = { 1., 1., 1., 1. };
        GLfloat light0_amb[] = { 0.3f, 0.3f, 0.3f, 1.0f };
        GLfloat light0_dif[] = { 0.8f, 0.8f, 0.8f, 1.0f };
        GLfloat light0_pos[] = { 1., 1., 1., 0. };

        spherelist = glGenLists(1);
        if (!(spherequad = gluNewQuadric()))
            _throw("Could not allocate GLU quadric object");
        glNewList(spherelist, GL_COMPILE);
        gluSphere(spherequad, 1.3, slices, stacks);
        glEndList();

        if (!locolor)
        {
            if (useci)
            {
                glMaterialf(GL_FRONT, GL_SHININESS, 50.);
            }
            else
            {
                glMaterialfv(GL_FRONT, GL_AMBIENT, id4);
                glMaterialfv(GL_FRONT, GL_DIFFUSE, id4);
                glMaterialfv(GL_FRONT, GL_SPECULAR, id4);
                glMaterialf(GL_FRONT, GL_SHININESS, 50.);

                glLightfv(GL_LIGHT0, GL_AMBIENT, light0_amb);
                glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_dif);
                glLightfv(GL_LIGHT0, GL_SPECULAR, id4);
            }
            glLightfv(GL_LIGHT0, GL_POSITION, light0_pos);
            glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 180.);
            glEnable(GL_LIGHTING);
            glEnable(GL_LIGHT0);
        }

        if (locolor)
            glShadeModel(GL_FLAT);
        else
            glShadeModel(GL_SMOOTH);
        glEnable(GL_DEPTH_TEST);
        glDepthFunc(GL_LESS);

        SDL_snprintf(temps, 255, "Measuring performance ...");

        first = 0;
    }

    if (advance)
    {
        z -= 0.5;
        if (z < -29.)
        {
            if (useci)
            {
                colorscheme = (colorscheme + 1) % NSCHEMES;
                _catch(setcolorscheme(window, ncolors, colorscheme));
            }

            z = -3.5;
        }

        outer_angle += 0.1f;
        if (outer_angle > 360.0f)
            outer_angle -= 360.0f;
        middle_angle -= 0.37f;
        if (middle_angle < -360.0f)
            middle_angle += 360.0f;
        inner_angle += 0.63f;
        if (inner_angle > 360.0f)
            inner_angle -= 360.0f;
        lonesphere_color += 0.005f;
        if (lonesphere_color > 1.0f)
            lonesphere_color -= 1.0f;
    }

    if (usestereo)
    {
        renderspheres(GL_BACK_LEFT);
        renderspheres(GL_BACK_RIGHT);
    }
    else
    {
        renderspheres(GL_BACK);
    }

    glDrawBuffer(GL_BACK);
    glPushAttrib(GL_CURRENT_BIT);
    glPushAttrib(GL_LIST_BIT);
    glPushAttrib(GL_ENABLE_BIT);
    glDisable(GL_LIGHTING);

    if (useci)
        glIndexf(254.);
    else
        glColor3f(1., 1., 1.);

    xaspect = (GLfloat)width / (GLfloat)(min(width, height));
    yaspect = (GLfloat)height / (GLfloat)(min(width, height));
    glRasterPos3f(-0.95f * xaspect, -0.95f * yaspect, -1.5f);

    glListBase(fontlistbase);
    glCallLists((GLsizei)strlen(temps), GL_UNSIGNED_BYTE, temps);
    glPopAttrib();
    glPopAttrib();
    glPopAttrib();

    SDL_GL_SwapWindow(window);

    if (start > 0.)
    {
        elapsed += rrtime() - start;
        frames++;
        totalframes++;
        mpixels += (double)width * (double)height / 1000000.;
        if (elapsed > benchtime || (maxframes && totalframes > maxframes))
        {
            SDL_snprintf(temps, 255, "%f frames/sec - %f Mpixels/sec",
                     (double)frames / elapsed, mpixels / elapsed);
            printf("%s\n", temps);
            elapsed = mpixels = 0.;
            frames = 0;
        }
    }
    if (maxframes && totalframes > maxframes)
        goto bailout;

    start = rrtime();

    return 0;

bailout:
    if (spherequad)
    {
        gluDeleteQuadric(spherequad);
        spherequad = NULL;
    }
    return -1;
}
コード例 #7
0
ファイル: openfont.c プロジェクト: rvedam/plan9port
Font*
openfont1(Display *d, char *name)
{
	Font *fnt;
	int fd, i, n, scale;
	char *buf, *nambuf, *fname, *freename;

	nambuf = 0;
	freename = nil;
	scale = parsefontscale(name, &fname);

	fd = open(fname, OREAD);
	if(fd < 0 && strncmp(fname, "/lib/font/bit/", 14) == 0){
		nambuf = smprint("#9/font/%s", fname+14);
		if(nambuf == nil)
			return 0;
		nambuf = unsharp(nambuf);
		if(nambuf == nil)
			return 0;
		if((fd = open(nambuf, OREAD)) < 0){
			free(nambuf);
			return 0;
		}
		fname = nambuf;
		if(scale > 1) {
			name = smprint("%d*%s", scale, fname);
			freename = name;
		} else {
			name = fname;
		}
	}
	if(fd >= 0)
		n = _drawflength(fd);
	if(fd < 0 && strncmp(fname, "/mnt/font/", 10) == 0) {
		fd = _fontpipe(fname+10);
		n = 8192;
	}
	if(fd < 0)
		return 0;

	buf = malloc(n+1);
	if(buf == 0){
		close(fd);
		free(nambuf);
		return 0;
	}
	i = readn(fd, buf, n);
	close(fd);
	if(i <= 0){
		free(buf);
		free(nambuf);
		return 0;
	}
	buf[i] = 0;
	fnt = buildfont(d, buf, name);
	free(buf);
	free(nambuf);
	free(freename);
	if(scale != 1) {
		fnt->scale = scale;
		fnt->height *= scale;
		fnt->ascent *= scale;
		fnt->width *= scale;
	}
	return fnt;
}