示例#1
0
// init sets the system to its initial state
void init(int *w, int *h) {
	bcm_host_init();
	memset(state, 0, sizeof(*state));
	oglinit(state);
	SansTypeface = loadfont(DejaVuSans_glyphPoints,
				DejaVuSans_glyphPointIndices,
				DejaVuSans_glyphInstructions,
				DejaVuSans_glyphInstructionIndices,
				DejaVuSans_glyphInstructionCounts,
				DejaVuSans_glyphAdvances, DejaVuSans_characterMap, DejaVuSans_glyphCount);

	SerifTypeface = loadfont(DejaVuSerif_glyphPoints,
				 DejaVuSerif_glyphPointIndices,
				 DejaVuSerif_glyphInstructions,
				 DejaVuSerif_glyphInstructionIndices,
				 DejaVuSerif_glyphInstructionCounts,
				 DejaVuSerif_glyphAdvances, DejaVuSerif_characterMap, DejaVuSerif_glyphCount);

	MonoTypeface = loadfont(DejaVuSansMono_glyphPoints,
				DejaVuSansMono_glyphPointIndices,
				DejaVuSansMono_glyphInstructions,
				DejaVuSansMono_glyphInstructionIndices,
				DejaVuSansMono_glyphInstructionCounts,
				DejaVuSansMono_glyphAdvances, DejaVuSansMono_characterMap, DejaVuSansMono_glyphCount);

	*w = state->screen_width;
	*h = state->screen_height;
}
示例#2
0
文件: osd.c 项目: noonat/omplex
void init_osd()
{
    if (MAIN_OSD != NULL)
    {
        return;
    }

    MAIN_OSD = (OSD*)malloc(sizeof(OSD));

    init(&MAIN_OSD->width, &MAIN_OSD->height);

    OpenSansSemiBold = loadfont(OpenSansSemibold_glyphPoints,
                            OpenSansSemibold_glyphPointIndices,
                            OpenSansSemibold_glyphInstructions,
                            OpenSansSemibold_glyphInstructionIndices,
                            OpenSansSemibold_glyphInstructionCounts,
                            OpenSansSemibold_glyphAdvances,
                            OpenSansSemibold_characterMap,
                            OpenSansSemibold_glyphCount);

    OpenSansBold = loadfont(OpenSansBold_glyphPoints,
                            OpenSansBold_glyphPointIndices,
                            OpenSansBold_glyphInstructions,
                            OpenSansBold_glyphInstructionIndices,
                            OpenSansBold_glyphInstructionCounts,
                            OpenSansBold_glyphAdvances,
                            OpenSansBold_characterMap,
                            OpenSansBold_glyphCount);
};
示例#3
0
文件: draw.c 项目: Yomin/dmenu
void
initfont(DC *dc, const char *fontstr) {
	if(!loadfont(dc, fontstr ? fontstr : DEFAULTFN)) {
		if(fontstr != NULL)
			fprintf(stderr, "cannot load font '%s'\n", fontstr);
		if(fontstr == NULL || !loadfont(dc, DEFAULTFN))
			eprintf("cannot load font '%s'\n", DEFAULTFN);
	}
	dc->font.height = dc->font.ascent + dc->font.descent;
}
示例#4
0
Game::Game(const char* title, int x, int  y, int  width, int height)
{
    SDL_Init(SDL_INIT_EVERYTHING);
    IMG_Init(IMG_INIT_PNG);


    if (TTF_Init() == -1)
  {
    printf("Unable to initialize SDL_ttf: %s \n", TTF_GetError());
  }

    window = SDL_CreateWindow(title,x, y, WIDTH, HEIGHT, SDL_WINDOW_SHOWN);
    if(window == NULL)
    {
        cout << "WINDOW COULDN`T BE CREATED!" << endl;
    }
    renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED );
    if(renderer == NULL)
    {
        cout << "RENDERER COULDN`T BE CREATED!" << endl;
    }

    font = loadfont("font.ttf" , 28);

    quit = false;


    information.score = 0;
    information.lives = 3;


}
示例#5
0
文件: dsplit.c 项目: n-t-roff/DWB3.3
static void
devcntrl(FILE *fp)

{

    char    line[200];			/* rest of the line saved here */
    char    cmd[20];			/* requested device command */
    int	    num;			/* font number, height, or slant */
    char    name[20];			/* name of the font */

/*
 *
 * Handles troff's device control commands. Unrecognized device control commands
 * are copied to the output file, and otherwise ignored.
 * 
 */

    fgets(line, sizeof(line), fp);

    sscanf(line, "%s", cmd);

    switch ( cmd[0] )  {

	case 'i':			/* init */
	case 't':			/* trailer */
	case 'p':			/* pause */
	case 's':			/* stop */
		break;

	case 'T':			/* typesetter name */
		sscanf(line, "%*s %10s", dwb_devname);
		break;

	case 'r':			/* resolution */
		sscanf(line, "%*s %d %d %d", &res, &hort, &vert);
		break;

	case 'f':			/* mount a font */
		sscanf(line, "%*s %d %s", &num, name);
		loadfont(num, name);
		break;

	case 'H':			/* height */
		sscanf(line, "%*s %d", &height);
		break;

	case 'S':			/* slant */
		sscanf(line, "%*s %d", &slant);
		break;

	default:			/* ignore anything not recognized */
		break;

    }	/* End switch */

    put_string(line, fp_out);

}   /* End of devcntrl */
示例#6
0
void		SdlDisplay::sdlDrawFont(int r, int g, int b, int w, int h,
                                    const std::string &fd, size_t size,
                                    const std::string &getValue)
{
    font = loadfont(fd, size);
    drawcoloredfont(&fontapply, getValue, r, g, b);
    sdlSetRect(&rtmp, w, h, 0, 0);
    SDL_BlitSurface(fontapply, NULL, screen, &rtmp);
}
示例#7
0
void engine_init() {
	SDL_Init(SDL_INIT_EVERYTHING);
	if (TTF_Init()==-1) {
		std::cout << "unable to init ttf" <<
		std::endl;
	}
	menu_font = loadfont("data/visitor1.ttf",10);
	if (menu_font==0) {
		std::cout << "unable to load menu font" <<
		std::endl;
	}
}
示例#8
0
文件: slap.c 项目: mundis/slap
static FONT *try_load_font(const CHAR *path)
	{
	FILE *pf = NULL;
	FONT *f = NULL;

	if ((pf = fopen(path, "r")))
		{
		f = loadfont(pf);
		fclose(pf);
		}
	return (f);
	}
示例#9
0
// init sets the system to its initial state
void init(int *w, int *h) {
	bcm_host_init();
	memset(state, 0, sizeof(*state));
	state->window_x = init_x;
	state->window_y = init_y;
	state->window_width = init_w;
	state->window_height = init_h;
	oglinit(state);
	SansTypeface = loadfont(DejaVuSans_glyphPoints,
				DejaVuSans_glyphPointIndices,
				DejaVuSans_glyphInstructions,
				DejaVuSans_glyphInstructionIndices,
				DejaVuSans_glyphInstructionCounts,
				DejaVuSans_glyphAdvances, DejaVuSans_characterMap, DejaVuSans_glyphCount);
	SansTypeface.descender_height = DejaVuSans_descender_height;
	SansTypeface.font_height = DejaVuSans_font_height;

	SerifTypeface = loadfont(DejaVuSerif_glyphPoints,
				 DejaVuSerif_glyphPointIndices,
				 DejaVuSerif_glyphInstructions,
				 DejaVuSerif_glyphInstructionIndices,
				 DejaVuSerif_glyphInstructionCounts,
				 DejaVuSerif_glyphAdvances, DejaVuSerif_characterMap, DejaVuSerif_glyphCount);
	SerifTypeface.descender_height = DejaVuSerif_descender_height;
	SerifTypeface.font_height = DejaVuSerif_font_height;

	MonoTypeface = loadfont(DejaVuSansMono_glyphPoints,
				DejaVuSansMono_glyphPointIndices,
				DejaVuSansMono_glyphInstructions,
				DejaVuSansMono_glyphInstructionIndices,
				DejaVuSansMono_glyphInstructionCounts,
				DejaVuSansMono_glyphAdvances, DejaVuSansMono_characterMap, DejaVuSansMono_glyphCount);
	MonoTypeface.descender_height = DejaVuSansMono_descender_height;
	MonoTypeface.font_height = DejaVuSansMono_font_height;

	*w = state->window_width;
	*h = state->window_height;
}
示例#10
0
void
dochar(Rune r[])
{
    char *s, *fb;
    Font *f;
    Point p;
    int fontno, fm, i;
    char buf[32];

    fontno = curfont;
    if((s = map(r, curfont)) == 0) {		/* not on current font */
        if ((s = map(r, specfont)) != 0)	/* on special font */
            fontno = specfont;
        else {
            /* look for fallback */
            fm = pos2fontmap[curfont];
            fb = fontmap[fm].fallback;
            if(fb) {
                /* see if fallback is mounted */
                for(i = 0; i < NFONT; i++) {
                    if(eq(fb, fontmap[pos2fontmap[i]].troffname)) {
                        s = map(r, i);
                        if(s) {
                            fontno = i;
                            goto found;
                        }
                    }
                }
            }
            /* no such char; use name itself on defont */
            /* this is not a general solution */
            p.x = hpos/DIV + xyoffset.x + offset.x;
            p.y = vpos/DIV + xyoffset.y + offset.y;
            p.y -= font->ascent;
            snprint(buf, sizeof buf, "%S", r);
            string(screen, p, display->black, ZP, font, buf);
            return;
        }
    }
found:
    p.x = hpos/DIV + xyoffset.x + offset.x;
    p.y = vpos/DIV + xyoffset.y + offset.y;
    while ((f = fonttab[fontno][cursize]) == 0)
        loadfont(fontno, cursize);
    p.y -= f->ascent;
    dprint(2, "putting %S at %d,%d font %d, size %d\n", r, p.x, p.y, fontno, cursize);
    string(screen, p, display->black, ZP, f, s);
}
示例#11
0
文件: draw.c 项目: poker335/garglk
void gli_initialize_fonts(void)
{
    float monoaspect = gli_conf_monoaspect;
    float propaspect = gli_conf_propaspect;
    float monosize = gli_conf_monosize;
    float propsize = gli_conf_propsize;
    int err;
    int i;

    for (i = 0; i < 256; i++)
        gammamap[i] = pow(i / 255.0, gli_conf_gamma) * 255.0;

    err = FT_Init_FreeType(&ftlib);
    if (err)
        winabort("FT_Init_FreeType");

    /* replace built-in fonts with configured system font */
    fontload();
    fontreplace(gli_conf_monofont, MONOF);
    fontreplace(gli_conf_propfont, PROPF);
    fontunload();

    /* create oblique transform matrix */
    ftmat.xx = 0x10000L;
    ftmat.yx = 0x00000L;
    ftmat.xy = 0x03000L;
    ftmat.yy = 0x10000L;

    loadfont(&gfont_table[0], gli_conf_monor, monosize, monoaspect, FONTR);
    loadfont(&gfont_table[1], gli_conf_monob, monosize, monoaspect, FONTB);
    loadfont(&gfont_table[2], gli_conf_monoi, monosize, monoaspect, FONTI);
    loadfont(&gfont_table[3], gli_conf_monoz, monosize, monoaspect, FONTZ);

    loadfont(&gfont_table[4], gli_conf_propr, propsize, propaspect, FONTR);
    loadfont(&gfont_table[5], gli_conf_propb, propsize, propaspect, FONTB);
    loadfont(&gfont_table[6], gli_conf_propi, propsize, propaspect, FONTI);
    loadfont(&gfont_table[7], gli_conf_propz, propsize, propaspect, FONTZ);

    loadglyph(&gfont_table[0], '0');

    gli_cellh = gli_leading;
    gli_cellw = (gfont_table[0].lowadvs['0'] + GLI_SUBPIX - 1) / GLI_SUBPIX;
}
示例#12
0
void setup_environment(Char *argv[], boolean *canbeplotted)
{
  boolean firsttree;
  char* treestr;

  /* Set up all kinds of fun stuff */
#ifdef MAC
  OSErr retcode;
  FInfo  fndrinfo;
  macsetup("Drawgram","Preview");
#endif
#ifdef TURBOC
  if ((registerbgidriver(EGAVGA_driver) <0) ||
      (registerbgidriver(Herc_driver) <0)   ||
      (registerbgidriver(CGA_driver) <0)){
    printf("Graphics error: %s ",grapherrormsg(graphresult()));
    exit(-1);}
#endif

  

 
  printf("DRAWGRAM from PHYLIP version %s\n",VERSION);
  printf("Reading tree ... \n");
  firsttree = true;
  treestr = ajStrGetuniquePtr(&phylotrees[0]->Tree); 
  allocate_nodep(&nodep, treestr, &spp);
  treeread (&treestr, &root, treenode, &goteof, &firsttree,
            nodep, &nextnode, &haslengths,
            &grbg, initdrawgramnode,true,-1);
  root->oldlen = 0.0;
  printf("Tree has been read.\n");
  printf("Loading the font .... \n");
  loadfont(font,argv[0]);
  printf("Font loaded.\n");
  previewing = false;
  ansi = ANSICRT;
  ibmpc = IBMCRT;
  firstscreens = true;
  initialparms();
  (*canbeplotted) = false;
}  /* setup_environment */
示例#13
0
static JSBool
js_conio_loadfont(JSContext *cx, uintN argc, jsval *arglist)
{
	jsval *argv=JS_ARGV(cx, arglist);
	char *	str;
	jsrefcount	rc;

	if(argc==1) {
		JSVALUE_TO_MSTRING(cx, argv[0], str, NULL);
		HANDLE_PENDING(cx);
		if(str != NULL) {
			rc=JS_SUSPENDREQUEST(cx);
			JS_SET_RVAL(cx, arglist,INT_TO_JSVAL(loadfont(str)));
			free(str);
			JS_RESUMEREQUEST(cx, rc);
			return(JS_TRUE);
		}
	}

	return(JS_FALSE);
}
示例#14
0
void
devcntrl(FILE *fp)	/* interpret device control functions */
{
	char str[4096];
	int n;

	sget(str, sizeof str, fp);
	switch (str[0]) {	/* crude for now */
	case 'i':	/* initialize */
		fileinit();
		t_init(0);
		break;
	case 'T':	/* device name */
		sget(devname, sizeof devname, fp);
		break;
	case 't':	/* trailer */
		t_trailer();
		break;
	case 'p':	/* pause -- can restart */
		t_reset('p');
		break;
	case 's':	/* stop */
		t_reset('s');
		break;
	case 'r':	/* resolution assumed when prepared */
		fscanf(fp, "%d", &res);
		break;
	case 'f':	/* font used */
		fscanf(fp, "%d", &n);
		sget(str, sizeof str, fp);
		loadfont(n, str);
		break;
	}
	while (getc(fp) != '\n')	/* skip rest of input line */
		;
}
示例#15
0
文件: pc.c 项目: richardg867/PCem-X
void initpc()
{
    char *p;
//        allegro_init();
    get_executable_name(pcempath,511);
    pclog("executable_name = %s\n", pcempath);
    p=get_filename(pcempath);
    *p=0;
    pclog("path = %s\n", pcempath);

    fdd_init();
    keyboard_init();
    mouse_init();
    joystick_init();
    midi_init();

    loadconfig(NULL);
    pclog("Config loaded\n");

    loadfont("mda.rom", 0, cga_fontdat, cga_fontdatm);
    loadfont("roms/pc1512/40078.ic127", 0, pc1512_fontdat, pc1512_fontdatm);
    loadfont("roms/pc200/40109.bin", 0, pc200_fontdat, pc200_fontdatm);

    codegen_init();

    cpuspeed2=(AT)?2:1;
//        cpuspeed2=cpuspeed;
    atfullspeed=0;

    device_init();

    initvideo();
    mem_init();
    loadbios();
    mem_add_bios();

    timer_reset();
    sound_reset();
    fdc_init();
// #ifdef USE_NETWORKING
    vlan_reset();	//NETWORK
    network_card_init(network_card_current);
// #endif

    loaddisc(0,discfns[0]);
    loaddisc(1,discfns[1]);

    //loadfont();
    loadnvr();
    sound_init();
    resetide();
#if __unix
    if (cdrom_drive == -1)
        cdrom_null_open(cdrom_drive);
    else
#endif
        ioctl_open(cdrom_drive);

    pit_reset();
    /*        if (romset==ROM_AMI386 || romset==ROM_AMI486) */fullspeed();
    ali1429_reset();
//        CPUID=(is486 && (cpuspeed==7 || cpuspeed>=9));
//        pclog("Init - CPUID %i %i\n",CPUID,cpuspeed);
    shadowbios=0;

#if __unix
    if (cdrom_drive == -1)
        cdrom_null_reset();
    else
#endif
        ioctl_reset();
}
示例#16
0
void loadmedia()
{
	cnc_head = loadimage("arch/simulator/media/cnc_head.bmp");
	font = loadfont("arch/simulator/media/FreeSans.ttf", POINTSIZE);
} 
示例#17
0
文件: main.c 项目: bartman/wmii
int
main(int argc, char *argv[]) {
	IxpMsg m;
	char **oargv;
	char *wmiirc, *s;
	int i;

	quotefmtinstall();
	fmtinstall('r', errfmt);
	fmtinstall('a', afmt);
	fmtinstall('C', Cfmt);
extern int fmtevent(Fmt*);
	fmtinstall('E', fmtevent);

	wmiirc = "wmiirc";

	oargv = argv;
	ARGBEGIN{
	case 'a':
		address = EARGF(usage());
		break;
	case 'r':
		wmiirc = EARGF(usage());
		break;
	case 'v':
		print("%s", version);
		exit(0);
	case 'D':
		s = EARGF(usage());
		m = ixp_message(s, strlen(s), 0);
		msg_debug(&m);
		break;
	default:
		usage();
		break;
	}ARGEND;

	if(argc)
		usage();

	setlocale(LC_CTYPE, "");
	starting = true;

	initdisplay();

	traperrors(true);
	selectinput(&scr.root, EnterWindowMask
			     | SubstructureRedirectMask);
	if(traperrors(false))
		fatal("another window manager is already running");

	passwd = getpwuid(getuid());
	user = estrdup(passwd->pw_name);

	init_environment();

	fmtinstall('F', Ffmt);
	ixp_printfcall = printfcall;

	sock = ixp_announce(address);
	if(sock < 0)
		fatal("Can't create socket '%s': %r", address);
	closeexec(ConnectionNumber(display));
	closeexec(sock);

	if(wmiirc[0])
		spawn_command(wmiirc);

	init_traps();
	init_cursors();
	init_lock_keys();
	ewmh_init();
	xext_init();

	srv.preselect = check_preselect;
	ixp_listen(&srv, sock, &p9srv, serve_9pcon, nil);
	ixp_listen(&srv, ConnectionNumber(display), nil, check_x_event, closedisplay);

	def.border = 1;
	def.colmode = Colstack;
	def.font = loadfont(FONT);
	def.incmode = ISqueeze;

	def.mod = Mod1Mask;
	strcpy(def.grabmod, "Mod1");

	loadcolor(&def.focuscolor, FOCUSCOLORS);
	loadcolor(&def.normcolor, NORMCOLORS);

	disp.sel = pointerscreen();

	init_screens();
	root_init();

	disp.focus = nil;
	setfocus(screen->barwin, RevertToParent);
	view_select("1");

	scan_wins();
	starting = false;

	view_update_all();
	ewmh_updateviews();

	event("FocusTag %s\n", selview->name);

	i = ixp_serverloop(&srv);
	if(i)
		fprint(2, "%s: error: %r\n", argv0);
	else
		event("Quit");

	cleanup();

	if(exitsignal)
		raise(exitsignal);
	if(execstr) {
		char *toks[32];
		int n;

		n = unquote(strdup(execstr), toks, nelem(toks)-1);
		toks[n] = nil;
		execvp(toks[0], toks);
		fprint(2, "%s: failed to exec %q: %r\n", argv0, execstr);
		execvp(argv0, oargv);
		fatal("failed to exec myself");
	}
	return i;
}
示例#18
0
static int
gra2cairo_output(struct objlist *obj, N_VALUE *inst, N_VALUE *rval,
                 int argc, char **argv)
{
  char code, *cstr, *tmp;
  int *cpar, i, r, font_style;
  double x, y, w, h, fontsize,
    fontspace, fontdir, fontsin, fontcos, a1, a2;
  cairo_line_join_t join;
  cairo_line_cap_t cap;
  double *dashlist = NULL;
  struct gra2cairo_local *local;

  local = (struct gra2cairo_local *)argv[2];
  code = *(char *)(argv[3]);
  cpar = (int *)argv[4];
  cstr = argv[5];

  if (local->cairo == NULL)
    return -1;

  if (code != 'T') {
    gra2cairo_draw_path(local);
  }
  switch (code) {
  case 'I':
    gra2cairo_set_antialias(local, local->antialias);
    local->linetonum = 0;
    r = check_cairo_status(local->cairo);
    if (r) {
      error(obj, r);
      return 1;
    }
  case '%': case 'X':
    break;
  case 'E':
    r = check_cairo_status(local->cairo);
    if (r) {
      error(obj, r);
      return 1;
    }
    break;
  case 'V':
    local->offsetx = mxd2pw(local, cpar[1]);
    local->offsety = mxd2ph(local, cpar[2]);
    cairo_new_path(local->cairo);
    if (cpar[5]) {
      x = mxd2pw(local, cpar[1]);
      y = mxd2ph(local, cpar[2]);
      w = mxd2pw(local, cpar[3]) - x;
      h = mxd2ph(local, cpar[4]) - y;

      cairo_reset_clip(local->cairo);
      cairo_rectangle(local->cairo, x, y, w, h);
      cairo_clip(local->cairo);
    } else {
      cairo_reset_clip(local->cairo);
    }

    if (local->region) {
      gra2cairo_clip_region(local, local->region);
    }
    break;
  case 'A':
    if (cpar[1] == 0) {
      cairo_set_dash(local->cairo, NULL, 0, 0);
    } else {
      dashlist = g_malloc(sizeof(* dashlist) * cpar[1]);
      if (dashlist == NULL)
	break;
      for (i = 0; i < cpar[1]; i++) {
	dashlist[i] = mxd2pw(local, cpar[6 + i]);
        if (dashlist[i] <= 0) {
	  dashlist[i] = 1;
	}
      }
      cairo_set_dash(local->cairo, dashlist, cpar[1], 0);
      g_free(dashlist);
    }

    cairo_set_line_width(local->cairo, mxd2pw(local, cpar[2]));

    if (cpar[3] == 2) {
      cap = CAIRO_LINE_CAP_SQUARE;
    } else if (cpar[3] == 1) {
      cap = CAIRO_LINE_CAP_ROUND;
    } else {
      cap = CAIRO_LINE_CAP_BUTT;
    }
    cairo_set_line_cap(local->cairo, cap);

    if (cpar[4] == 2) {
      join = CAIRO_LINE_JOIN_BEVEL;
    } else if (cpar[4] == 1) {
      join = CAIRO_LINE_JOIN_ROUND;
    } else {
      join = CAIRO_LINE_JOIN_MITER;
    }
    cairo_set_line_join(local->cairo, join);
    break;
  case 'G':
    if (local->use_opacity && cpar[0] > 3 && cpar[4] < 255) {
      cairo_set_source_rgba(local->cairo,
			    cpar[1] / 255.0,
			    cpar[2] / 255.0,
			    cpar[3] / 255.0,
			    cpar[4] / 255.0);
    } else {
      cairo_set_source_rgb(local->cairo,
			   cpar[1] / 255.0,
			   cpar[2] / 255.0,
			   cpar[3] / 255.0);
    }
    break;
  case 'M':
    cairo_move_to(local->cairo, mxd2px(local, cpar[1]), mxd2py(local, cpar[2]));
    break;
  case 'N':
    relative_move(local->cairo, mxd2pw(local, cpar[1]), mxd2ph(local, cpar[2]));
    break;
  case 'L':
    cairo_new_path(local->cairo);
    cairo_move_to(local->cairo, mxd2px(local, cpar[1]), mxd2py(local, cpar[2]));
    cairo_line_to(local->cairo, mxd2px(local, cpar[3]), mxd2py(local, cpar[4]));
    cairo_stroke(local->cairo);
    break;
  case 'T':
    cairo_line_to(local->cairo, mxd2px(local, cpar[1]), mxd2py(local, cpar[2]));
    local->linetonum++;
    break;
  case 'C':
    x = mxd2px(local, cpar[1] - cpar[3]);
    y = mxd2py(local, cpar[2] - cpar[4]);
    w = mxd2pw(local, cpar[3]);
    h = mxd2ph(local, cpar[4]);
    a1 = cpar[5] * (M_PI / 18000.0);
    a2 = cpar[6] * (M_PI / 18000.0) + a1;

    if (w == 0 || h == 0 || a1 == a2)
      break;

    cairo_new_path(local->cairo);
    cairo_save(local->cairo);
    cairo_translate(local->cairo, x + w, y + h);
    cairo_scale(local->cairo, w, h);
    cairo_arc_negative(local->cairo, 0., 0., 1., -a1, -a2);
    cairo_restore (local->cairo);
    switch (cpar[7]) {
    case 1:
      cairo_line_to(local->cairo, x + w, y + h);
      /* fall through */
    case 2:
      cairo_close_path(local->cairo);
      cairo_fill(local->cairo);
      break;
    case 3:
      cairo_line_to(local->cairo, x + w, y + h);
      /* fall through */
    case 4:
      cairo_close_path(local->cairo);
      cairo_stroke(local->cairo);
      break;
    default:
      cairo_stroke(local->cairo);
    }
    break;
  case 'B':
    cairo_new_path(local->cairo);
    if (cpar[1] <= cpar[3]) {
      x = mxd2px(local, cpar[1]);
      w = mxd2pw(local, cpar[3] - cpar[1]);
    } else {
      x = mxd2px(local, cpar[3]);
      w = mxd2pw(local, cpar[1] - cpar[3]);
    }

    if (cpar[2] <= cpar[4]) {
      y = mxd2py(local, cpar[2]);
      h = mxd2ph(local, cpar[4] - cpar[2]);
    } else {
      y = mxd2py(local, cpar[4]);
      h = mxd2ph(local, cpar[2] - cpar[4]);
    }
    cairo_rectangle(local->cairo, x, y, w, h);
    if (cpar[5] == 0) {
      cairo_stroke(local->cairo);
    } else {
      cairo_fill(local->cairo);
    }
    break;
  case 'P':
    cairo_new_path(local->cairo);
    cairo_arc(local->cairo, mxd2px(local, cpar[1]), mxd2py(local, cpar[2]), mxd2pw(local, 1), 0, 2 * M_PI);
    cairo_fill(local->cairo);
    break;
  case 'R':
    cairo_new_path(local->cairo);
    if (cpar[1] == 0)
      break;

    for (i = 0; i < cpar[1]; i++) {
      cairo_line_to(local->cairo,
		    mxd2px(local, cpar[i * 2 + 2]),
		    mxd2py(local, cpar[i * 2 + 3]));
    }
    cairo_stroke(local->cairo);
    break;
  case 'D':
    cairo_new_path(local->cairo);

    if (cpar[1] == 0)
      break;

    for (i = 0; i < cpar[1]; i++) {
      cairo_line_to(local->cairo,
		    mxd2px(local, cpar[i * 2 + 3]),
		    mxd2py(local, cpar[i * 2 + 4]));
    }
    cairo_close_path(local->cairo);

    switch (cpar[2]) {
    case 0:
      cairo_stroke(local->cairo);
      break;
    case 1:
      cairo_set_fill_rule(local->cairo, CAIRO_FILL_RULE_EVEN_ODD);
      cairo_fill(local->cairo);
      break;
    case 2:
      cairo_set_fill_rule(local->cairo, CAIRO_FILL_RULE_WINDING);
      cairo_fill(local->cairo);
      break;
    }
    break;
  case 'F':
    g_free(local->fontalias);
    local->fontalias = g_strdup(cstr);
    break;
  case 'H':
    fontspace = cpar[2] / 72.0 * 25.4;
    local->fontspace = fontspace;
    fontsize = cpar[1] / 72.0 * 25.4;
    local->fontsize = fontsize;
    fontdir = cpar[3] * MPI / 18000.0;
    fontsin = sin(fontdir);
    fontcos = cos(fontdir);
    local->fontdir = (cpar[3] % 36000) / 100.0;
    if (local->fontdir < 0) {
      local->fontdir += 360;
    }
    local->fontsin = fontsin;
    local->fontcos = fontcos;
    font_style = (cpar[0] > 3) ? cpar[4] : -1;
    local->loadfont = loadfont(local->fontalias, font_style, &local->symbol);
    break;
  case 'S':
    if (local->loadfont == NULL)
      break;

    tmp = gra2cairo_get_utf8_str(cstr, local->symbol);
    if (tmp) {
      draw_str(local, TRUE, tmp, local->loadfont, local->fontsize, local->fontspace, NULL, NULL, NULL);
      g_free(tmp);
    }
    break;
  case 'K':
    if (local->loadfont == NULL)
      break;

    tmp = sjis_to_utf8(cstr);
    if (tmp) {
      draw_str(local, TRUE, tmp, local->loadfont, local->fontsize, local->fontspace, NULL, NULL, NULL);
      g_free(tmp);
    }
    break;
  default:
    break;
  }
  return 0;
}
示例#19
0
int
gra2cairo_strwidth(struct objlist *obj, N_VALUE *inst, N_VALUE *rval, int argc, char **argv)
{
  struct gra2cairo_local *local;
  gchar *font, *str;
  double size, dir, s,c ;
  int width, style, symbol;
  struct fontmap *fcur;

  str = argv[3];
  size = ( * (int *) argv[4]) / 72.0 * 25.4;
  font = argv[5];
  style = * (int *) (argv[6]);

  if (size == 0) {
    rval->i = 0;
    return 0;
  }

  if (_getobj(obj, "_local", inst, &local))
    return 1;

  if (local->cairo == NULL)
    return 0;

  fcur = loadfont(font, style, &symbol);

  if (fcur == NULL) {
    rval->i = nround(size * 0.600);
    return 0;
  }

  dir = local->fontdir;
  s = local->fontsin;
  c = local->fontcos;

  local->fontdir = 0;
  local->fontsin = 0;
  local->fontcos = 1;

  if (symbol) {
    char *ptr;
    ptr = ascii2greece(str);
    if (ptr == NULL) {
      return 1;
    }
    str = ptr;
  }

  draw_str(local, FALSE, str, fcur, size, 0, &width, NULL, NULL);

  if (symbol) {
    g_free(str);
  }

  rval->i = mxp2dw(local, width);

  local->fontsin = s;
  local->fontcos = c;
  local->fontdir = dir;

  return 0;
}
示例#20
0
int
gra2cairo_charheight(struct objlist *obj, N_VALUE *inst, N_VALUE *rval, int argc, char **argv)
{
  struct gra2cairo_local *local;
  char *font;
  double size, dir, s, c;
  char *func;
  int height, descent, ascent, style, symbol;
  struct fontmap *fcur;

  func = (char *)argv[1];
  size = (*(int *)(argv[3])) / 72.0 * 25.4;
  font = (char *)(argv[4]);
  style = *(int *) (argv[5]);

  if (size == 0) {
    rval->i = 0;
    return 0;
  }

  if (_getobj(obj, "_local", inst, &local))
    return 1;

  if (local->cairo == NULL)
    return 1;

  if (strcmp0(func, "_charascent") == 0) {
    height = TRUE;
  } else {
    height = FALSE;
  }

  fcur = loadfont(font, style, &symbol);

  if (fcur == NULL) {
    if (height) {
      rval->i = nround(size * 0.562);
    } else {
      rval->i = nround(size * 0.250);
    }

    return 0;
  }

  dir = local->fontdir;
  s = local->fontsin;
  c = local->fontcos;

  local->fontdir = 0;
  local->fontsin = 0;
  local->fontcos = 1;

  draw_str(local, FALSE, "A", fcur, size, 0, NULL, &ascent, &descent);

  if (height) {
    rval->i = mxp2dh(local, ascent);
  } else {
    rval->i = mxp2dh(local, descent);
  }

  local->fontsin = s;
  local->fontcos = c;
  local->fontdir = dir;

  return 0;
}
示例#21
0
文件: pci_vga.c 项目: MarginC/kame
/*
 * Go look for a VGA card on the PCI-bus. This search is a
 * stripped down version of the PCI-probe. It only looks on
 * bus0 for VGA cards. The first card found is used.
 */
int
check_for_vga()
{
    pci_chipset_tag_t	pc = NULL; /* XXX */
    pcitag_t		tag;
    int			device, found, id, maxndevs, i, j;
    volatile u_char		*regs;
    u_char			*fb;
    char			*nbd = "NetBSD/Atari";

    found    = 0;
    tag      = 0;
    id       = 0;
    maxndevs = pci_bus_maxdevs(pc, 0);

    /*
     * These are setup in atari_init.c
     */
    regs = (volatile caddr_t)pci_io_addr;
    fb   = (caddr_t)pci_mem_addr;

    for (device = 0; !found && (device < maxndevs); device++) {

        tag = pci_make_tag(pc, 0, device, 0);
        id  = pci_conf_read(pc, tag, PCI_ID_REG);
        if (id == 0 || id == 0xffffffff)
            continue;
        switch (id = PCI_PRODUCT(id)) {

        /*
         * XXX Make the inclusion of the cases dependend
         *     on config options!
         */
        case PCI_PRODUCT_TSENG_ET6000:
        case PCI_PRODUCT_TSENG_ET4000_W32P_A:
        case PCI_PRODUCT_TSENG_ET4000_W32P_B:
        case PCI_PRODUCT_TSENG_ET4000_W32P_C:
        case PCI_PRODUCT_TSENG_ET4000_W32P_D:
            tseng_init(pc, tag, id, regs, fb);
            found = 1;
            break;
        default:
            break;
        }
    }
    if (!found)
        return (0);

    /*
     * Generic parts of the initialization...
     */

    /* B&W colors */
    vgaw(regs, VDAC_ADDRESS_W, 0);
    for (i = 0; i < 256; i++) {
        j = (i & 1) ? ((i > 7) ? 2 : 1) : 0;
        vgaw(regs, VDAC_DATA, conscolors[j][0]);
        vgaw(regs, VDAC_DATA, conscolors[j][1]);
        vgaw(regs, VDAC_DATA, conscolors[j][2]);
    }

    loadfont(regs, fb);

    /*
     * Clear the screen and print a message. The latter
     * is of diagnostic/debug use only.
     */
    for (i = 50 * 80; i >= 0; i -= 2) {
        fb[i] = 0x20;
        fb[i+1] = 0x07;
    }
    for (i = 56; *nbd; i += 2)
        fb[i] = *nbd++;

    return (1);
}
示例#22
0
文件: main.c 项目: aztrock/wmii
int
main(int argc, char *argv[]) {
	char *wmiirc;
	WMScreen *s;
	WinAttr wa;
	int i;

	fmtinstall('r', errfmt);
	fmtinstall('C', Cfmt);

	wmiirc = "wmiistartrc";

	ARGBEGIN{
	case 'v':
		print("%s", version);
		exit(0);
	case 'V':
		verbose = True;
		break;
	case 'a':
		address = EARGF(usage());
		break;
	case 'r':
		wmiirc = EARGF(usage());
		break;
	default:
		usage();
		break;
	}ARGEND;

	if(argc)
		usage();

	setlocale(LC_CTYPE, "");
	starting = True;

	initdisplay();

	xlib_errorhandler = XSetErrorHandler(errorhandler);

	check_other_wm = True;
	XSelectInput(display, scr.root.w,
			  SubstructureRedirectMask
			| EnterWindowMask);
	XSync(display, False);

	check_other_wm = False;

	passwd = getpwuid(getuid());
	user = estrdup(passwd->pw_name);

	init_environment();

	sock = ixp_announce(address);
	if(sock < 0)
		fatal("Can't create socket '%s': %r", address);

	if(wmiirc)
		spawn_command(wmiirc);

	init_traps();
	init_atoms();
	init_cursors();
	init_lock_keys();

	srv.preselect = check_preselect;
	ixp_listen(&srv, sock, &p9srv, serve_9pcon, nil);
	ixp_listen(&srv, ConnectionNumber(display), nil, check_x_event, closedisplay);

	def.font = loadfont(FONT);
	def.border = 1;
	def.colmode = Coldefault;

	def.mod = Mod1Mask;
	strcpy(def.grabmod, "Mod1");

	loadcolor(&def.focuscolor, FOCUSCOLORS);
	loadcolor(&def.normcolor, NORMCOLORS);

	num_screens = 1;
	screens = emallocz(num_screens * sizeof(*screens));
	screen = &screens[0];
	for(i = 0; i < num_screens; i++) {
		s = &screens[i];
		init_screen(s);

		s->ibuf = allocimage(Dx(s->r), Dy(s->r), scr.depth);

		wa.event_mask = 
				  SubstructureRedirectMask
				| SubstructureNotifyMask
				| EnterWindowMask
				| LeaveWindowMask
				| FocusChangeMask;
		wa.cursor = cursor[CurNormal];
		setwinattr(&scr.root, &wa,
				  CWEventMask
				| CWCursor);
		initbar(s);
	}

	screen->focus = nil;
	setfocus(screen->barwin, RevertToParent);

	scan_wins();
	starting = False;

	select_view("nil");
	update_views();
	write_event("FocusTag %s\n", screen->sel->name);

	check_x_event(nil);
	i = ixp_serverloop(&srv);
	if(i)
		fprint(2, "%s: error: %r\n", argv0);

	cleanup();

	if(exitsignal)
		raise(exitsignal);
	if(execstr)
		execl("/bin/sh", "sh", "-c", execstr, nil);
	return i;
}
示例#23
0
文件: message.c 项目: aztrock/wmii
char *
message_root(void *p, IxpMsg *m) {
	Font *fn;
	char *s, *ret;
	ulong n;

	USED(p);
	ret = nil;
	s = getword(m);

	switch(getsym(s)) {
	case LQUIT:
		srv.running = 0;
		break;
	case LEXEC:
		execstr = smprint("exec %s", (char*)m->pos);
		srv.running = 0;
		break;
	case LVIEW:
		select_view((char*)m->pos);
		break;
	case LSELCOLORS:
		fprint(2, "%s: warning: selcolors have been removed\n", argv0);
		return Ebadcmd;
	case LFOCUSCOLORS:
		ret = parse_colors(m, &def.focuscolor);
		focus_view(screen, screen->sel);
		break;
	case LNORMCOLORS:
		ret = parse_colors(m, &def.normcolor);
		focus_view(screen, screen->sel);
		break;
	case LFONT:
		fn = loadfont((char*)m->pos);
		if(fn) {
			freefont(def.font);
			def.font = fn;
			resize_bar(screen);
		}else
			ret = "can't load font";
		focus_view(screen, screen->sel);
		break;
	case LBORDER:
		if(!getulong(getword(m), &n))
			return Ebadvalue;
		def.border = n;
		focus_view(screen, screen->sel);
		break;
	case LGRABMOD:
		s = getword(m);
		n = str2modmask(s);

		if((n & (Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask)) == 0)
			return Ebadvalue;

		utflcpy(def.grabmod, s, sizeof(def.grabmod));
		def.mod = n;
		break;
	default:
		return Ebadcmd;
	}
	return ret;
}
示例#24
0
    void picked(int b,vector<int>&v, int x, int y)
    {
	loadfont(fnfl);
    }