Example #1
0
/*! load Sppedo fonts */
void load_fontspeedo(void) {
	int nb_fonts, i;
	char fontname[128], temp[35];

	if(vq_vgdos() == GDOS_FSM) {
		graf_mouse(BUSYBEE , 0);
		nb_fonts = vst_load_fonts(work_display.handle, 0);
		fgdos = TRUE;
		i = 2;
		
		do {
			vqt_name(work_display.handle, i, temp);
			strcpy(fontname, "  ");
			strcat(fontname, temp);
			if(strlen(fontname) > 33)
				fontname[33] = '\0';
			set_text(ir_trindex[FONTS], i, fontname);
			ir_trindex[FONTS][i].ob_state &= ~DISABLED;
			i++;
		} while(((i - 1) <= nb_fonts) &&(i <= 41));
		graf_mouse(ARROW, 0);
		fid = 1;
	} /* if GDOS loaded */
	size = 13;
}	/* endof load_fontspeedo */
Example #2
0
void fnt_mdialog(int ap_id, int win, int id, int size, int color,
				 int effect, int prop)
{
	FNT_DIALOG *fnt_dial;
	char name[34];
	int i;
	OBJECT *o = &wdfont[WDFTEXT];

	if ((fnt_dial = malloc(sizeof(FNT_DIALOG))) == NULL)
	{
		xform_error(ENSMEM);
		return;
	}

	if ((fnt_dial->fd = malloc((nfonts + 1) * sizeof(FONTDATA))) == NULL)
	{
		free(fnt_dial);
		xform_error(ENSMEM);
		return;
	}

	fnt_dial->userblock.fnt_dial = fnt_dial;
	fnt_dial->userblock.text = (char *) o->ob_spec.index;

	fnt_dial->userblock.userblock.ub_code = mdraw_text;
	fnt_dial->userblock.userblock.ub_parm = (long) &fnt_dial->userblock;

	o->ob_type = (o->ob_type & 0xFF00) | G_USERDEF;
	o->ob_spec.userblk = &fnt_dial->userblock.userblock;

	rsc_title(wdfont, WDFTITLE, DTVFONT);

	fnt_dial->ap_id = ap_id;	/* Application id of caller. */
	fnt_dial->win = win;		/* Window id of caller. */
	fnt_dial->color = color;	/* Color of font. */
	fnt_dial->effect = effect;	/* Text effects of font. */

	fnt_dial->nf = 0;

	for (i = 0; i <= nfonts; i++)
	{
		FONTDATA *h = &fnt_dial->fd[fnt_dial->nf];
		int j, iw, mw, dummy;
		char *s = h->name;
		FONT fnt;

		h->id = vqt_name(vdi_handle, i + 1, name);
		fnt_setfont(h->id, 10, &fnt);

		vqt_width(vdi_handle, 'i', &iw, &dummy, &dummy);
		vqt_width(vdi_handle, 'm', &mw, &dummy, &dummy);

		if ((prop != FALSE) || (iw == mw))
		{
			strsncpy(s, name, sizeof(h->name));			/* HR 120203: secure cpy */
			j = (int) strlen(h->name);
			while (j < 16)
				s[j++] = ' ';
			h->flag = (int) name[32];
			fnt_dial->nf++;
		}
	}

	fnt_dial->sl_info.slider.type = 0;
	fnt_dial->sl_info.slider.up_arrow = WDFUP;
	fnt_dial->sl_info.slider.down_arrow = WDFDOWN;
	fnt_dial->sl_info.slider.slider = FSLIDER;
	fnt_dial->sl_info.slider.sparent = FSPARENT;
	fnt_dial->sl_info.slider.lines = NLINES;
	fnt_dial->sl_info.slider.n = fnt_dial->nf;
	fnt_dial->sl_info.slider.line = set_font(&fnt_dial->sl_info.slider,
											 id, &fnt_dial->font,
											 fnt_dial->fd, fnt_dial->nf);
	fnt_dial->sl_info.slider.set_selector = mset_selector;
	fnt_dial->sl_info.slider.first = WDFONT1;
	fnt_dial->sl_info.slider.findsel = mfind_selected;

	fnt_dial->sl_info.fnt_dial = fnt_dial;

	fnt_dial->cursize = get_size(fnt_dial->font, fnt_dial->fd,
								 fnt_dial->fsizes, &fnt_dial->nfsizes,
								 size);
	fnt_dial->fsize = fnt_dial->fsizes[fnt_dial->cursize];

	sl_init(wdfont, &fnt_dial->sl_info.slider);

	xd_nmopen(wdfont, &fnt_dial->dialog, &fnt_funcs, 0, -1, -1,
			  NULL, NULL, FALSE, "Font selector");
}
Example #3
0
boolean fnt_dialog(int title, FONT *wd_font, boolean prop)
{
	char name[34];
	int button, i, newfont, curobj, cursize, fsizes[100], nfsizes;
	XDINFO info;
	SLIDER sl_info;
	boolean stop = FALSE, ok = FALSE;
	OBJECT *o = &wdfont[WDFTEXT];
	static USERBLK userblock;

	if ((fd = malloc((nfonts + 1) * sizeof(FONTDATA))) == NULL)
	{
		xform_error(ENSMEM);
		return FALSE;
	}

	if (o->ob_type != G_USERDEF)
		xd_userdef(o, &userblock, draw_text);

	rsc_title(wdfont, WDFTITLE, title);

	nf = 0;

	for (i = 0; i <= nfonts; i++)
	{
		FONTDATA *h = &fd[nf];
		int j, iw, mw, dummy;
		char *s = h->name;
		FONT fnt;

		h->id = vqt_name(vdi_handle, i + 1, name);
		fnt_setfont(h->id, 10, &fnt);

		vqt_width(vdi_handle, 'i', &iw, &dummy, &dummy);
		vqt_width(vdi_handle, 'm', &mw, &dummy, &dummy);

		if ((prop != FALSE) || (iw == mw))
		{
			strsncpy(s, name, sizeof(h->name));			/* HR 120203: secure cpy */
			j = (int) strlen(h->name);
			while (j < 16)
				s[j++] = ' ';
			h->flag = (int) name[32];
			nf++;
		}
	}

	sl_info.type = 0;
	sl_info.up_arrow = WDFUP;
	sl_info.down_arrow = WDFDOWN;
	sl_info.slider = FSLIDER;
	sl_info.sparent = FSPARENT;
	sl_info.lines = NLINES;
	sl_info.n = nf;
	sl_info.line = set_font(&sl_info, wd_font->id, &font, fd, nf);
	sl_info.set_selector = set_selector;
	sl_info.first = WDFONT1;
	sl_info.findsel = find_selected;

	fsize = fsizes[cursize = get_size(font, fd, fsizes, &nfsizes, wd_font->size)];

	sl_init(wdfont, &sl_info);

	xd_open(wdfont, &info);

	while (stop == FALSE)
	{
		button = sl_form_do(wdfont, 0, &sl_info, &info) & 0x7FFF;

		switch (button)
		{
		case WDFONT1:
		case WDFONT2:
		case WDFONT3:
		case WDFONT4:
		case WDFONT5:
		case WDFONT6:
			curobj = font - sl_info.line + WDFONT1;
			if (((newfont = sl_info.line + button - WDFONT1) < nf) && (curobj != button))
			{
				if ((curobj >= WDFONT1) && (curobj <= WDFONT6))
					xd_change(&info, curobj, NORMAL, 1);
				xd_change(&info, button, SELECTED, 1);
				font = newfont;
				fsize = fsizes[cursize = get_size(font, fd, fsizes, &nfsizes, fsize)];
				xd_draw(&info, WDFTEXT, 1);
				xd_draw(&info, WDFSIZE, 1);
			}
			break;
		case WDFSUP:
			if (cursize < nfsizes - 1)
			{
				cursize++;
				goto cont;
			}
			xd_change(&info, button, NORMAL, 1);
			break;
		case WDFSDOWN:
			if (cursize > 0)
			{
				cursize--;
			  cont:fsize = fsizes[cursize];
				itoa(fsize, wdfont[WDFSIZE].ob_spec.free_string, 10);
				xd_draw(&info, WDFTEXT, 1);
				xd_draw(&info, WDFSIZE, 1);
			}
			xd_change(&info, button, NORMAL, 1);
			break;
		case WDFOK:
			if ((fd[font].id != wd_font->id) || (fsize != wd_font->size))
			{
				wd_font->id = fd[font].id;
				wd_font->size = fsize;
				wd_font->cw = chw;
				wd_font->ch = chh;
				ok = TRUE;
			}
		default:
			stop = TRUE;
			break;
		}
	}

	xd_change(&info, button, NORMAL, 0);
	xd_close(&info);

	free(fd);

	return ok;
}
Example #4
0
/* ------------------ */
void set_font(void)
{
register int eo, i, font_nr, font_height;
int tst_x, tst_y, xy[4], dummy;
int minADE, maxADE, distance[5], effects[3], maxw;
char font_names[4][34];

set_eline();

font_nr = akt_font;
font_height = akt_fheight;

rsrc_gaddr(ROOT, SET_FONT, &form_adr);

for (i = 0; i < 4; i++)
	form_adr[FONT_1B + i].ob_spec.tedinfo->te_ptext = font_names[i];

form_adr[FONT_S].ob_state &= ~SELECTED;
for (i = 0; i < 4; i++)
	{
	form_adr[FONT_1B + i].ob_state &= ~SELECTED;
	if (tfont_names[akt_id][i][0])
		{
		strcpy(font_names[i], tfont_names[akt_id][i]);
		form_adr[FONT_1B + i].ob_state &= ~DISABLED;
		}
	else
		{
		strcpy(font_names[i], "-- Unbelegt --");
		form_adr[FONT_1B + i].ob_state |= DISABLED;
		}
	}
form_adr[FONT_S + font_nr - 1].ob_state |= SELECTED;

form_draw();

objc_offset(form_adr, TST_FLD, &tst_x, &tst_y);

xy[0] = tst_x;
xy[1] = tst_y;
xy[2] = xy[0] + form_adr[TST_FLD].ob_width - 2;
xy[3] = xy[1] + form_adr[TST_FLD].ob_height - 2;
vs_clip(vdi_handle, TRUE, xy);
vswr_mode(vdi_handle, 1);

vst_effects(vdi_handle, NORMAL);
vst_alignment(vdi_handle, 0, 5, &dummy, &dummy);

do
	{
	show_testtext(tst_x, tst_y, font_nr, font_height);
	vqt_fontinfo(vdi_handle, &minADE, &maxADE, distance, &maxw, effects);

	if (distance[4] < font_height)
		font_height = distance[4];
 
	eo = form_do(form_adr, 0);
	switch(eo & 0x7FFF)
		{
		case FONT_S:
		case FONT_1B:
		case FONT_2B:
		case FONT_3B:
		case FONT_4B:
			if ((form_adr[eo & 0x7FFF].ob_state & DISABLED) || ((eo & 0x8000) && (eo & 0x7FFF) != FONT_S))
				{
				eo &= 0x7FFF;
	
				if (load_font(eo - FONT_S + 1))
					{
					font_nr = eo - FONT_S + 1;

					vqt_name(vdi_handle, 2, tfont_names[akt_id][eo - FONT_1B]);
					strcpy(font_names[eo - FONT_1B], tfont_names[akt_id][eo - FONT_1B]);

					form_adr[eo].ob_state &= ~DISABLED;
					for (i = 0; i < 5; i++)
						form_adr[FONT_S + i].ob_state &= ~SELECTED;

					form_adr[eo].ob_state |= SELECTED;
					strcpy(txt_fonts[akt_id][font_nr - 2], rindex(font_path, '\\') + 1);
					}

				objc_draw(form_adr, ROOT, MAX_DEPTH, fx, fy, fw, fh);
				}
			else
				font_nr = eo - FONT_S + 1;
			break;

		case GRT_UP:
			if (font_height > distance[4] - distance[2])
				font_height--;
			break;

		case GRT_DWN:
			font_height++;
			break;
		}

	eo &= 0x7FFF;
	}while(eo != FONT_OK && eo != FONT_CNC);

form_adr[eo & 0x7FFF].ob_state &= ~SELECTED;
f_dial(FMD_SHRINK);
f_dial(FMD_FINISH);

get_eline();

if (eo == FONT_OK)
	{
	set_fontd(font_nr, font_height);
	akt_font = font_nr;
	akt_fheight = font_height;
	}

vst_alignment(vdi_handle, 0, 3, &dummy, &dummy);
}