📄 bitmapif.c
字号:
char_w * nchar, char_h, char_w*(dx - 1) + x_ofst, char_h*(sy - 1) + y_ofst, BF_S);}/* * clear lines * clear_lines(sl, nl, rev) clears nl lines starting at line sl with rev * mode. If rev = 0 then normal clear else reverse clear. */clear_lines(sl, nl, rev, fcol, bcol) int sl, nl; int rev; int fcol, bcol;{ if (nl == btm_m) { clear_rect(0, 0, scr_w, scr_h, BF_S, rev?fcol:bcol, bcol); } else if (nl > 0) { clear_rect(x_ofst, char_h*(sl - 1) + y_ofst, char_w*(rit_m - LFT_M + 1), char_h*nl, BF_S, rev?fcol:bcol, bcol); }}/* * Clear chars * clear_chars(x, y, nchar, rev) clears nchar characters following the * position (x, y) with rev mode. If rev = 0 then normal clear else * reverse clear. */clear_chars(x, y, nchar, rev, fcol, bcol) int x, y; int nchar; int rev; int fcol, bcol;{ if (nchar > 0) { clear_rect(char_w*(x - 1) + x_ofst, char_h*(y - 1) + y_ofst, char_w*nchar, char_h, BF_S, rev?fcol:bcol, bcol); }}reverse_rec(fcol, bcol) int fcol, bcol;{ clear_rect(0, 0, scr_w, scr_h, BF_SDX, fcol^bcol, 0);}copy_char(sp, c, kanji) register SCREEN *sp; register unsigned int c; int kanji;{ register char *f_addr; register int len; register lRectangle *sr, *dr; lRectangle udr; register char **fnt_addr; extern struct fb_map rommap; lock_bitmap(); if (consfb->font_h == 24) fnt_addr = ext_fnt24_addr; else fnt_addr = ext_fnt_addr; if (kanji) { dr = &char_r2; sr = &font_r2; len = font_len2; } else { dr = &char_r1; sr = &font_r1; len = font_len1; } dr->origin = sp->s_csr.csr_p; setropfunc(BF_S, 0, fcolor, bcolor); fbbm_rop_cinit(consfb, consfb->planemask, 0); fbbm_rop_clear(consfb, dr); if (kanji) { /* * KANJI code... kanji char */ f_addr = (char *)fbbm_Krom_addr(consfb, c, sr);#ifdef CPU_DOUBLE } else if (fnt_addr == 0) { /* * no external fonts... try to use ROM fonts */ len = font_len2; f_addr = (char *)fbbm_Krom_addr(consfb, c, sr);#endif#ifdef KM_ASCII } else if (tmode == KM_ASCII) { /* * terminal mode is ASCII... ASCII (ISO) char */ if ((c >= 0x20) && (c <= 0x7e)) { /* * ASCII char */ f_addr = fnt_addr[c]; } else if ((c >= 0xa0) && (c <= 0xff)) { /* * ISO char */ f_addr = fnt_addr[c - 32]; } else { /* * UNKNOWN char */ f_addr = (caddr_t)zero; }#endif /* KM_ASCII */ } else { /* * terminal mode is not ASCII... JIS, SJIS, EUC, ... */ if ((c >= 0x20) && (c <= 0x7e)) { /* * ASCII char */ f_addr = fnt_addr[c]; } else if ((c >= 0xa1) && (c <= 0xdf)) { /* * KANA char */ f_addr = fnt_addr[c + 32]; } else { /* * UNKNOWN char */ f_addr = (caddr_t)zero; } } dr->origin.y += ch_pos; setropfunc(BF_S, 1, fcolor, bcolor); if (f_addr != 0) { fbbm_rop_winit(consfb); rommap.fm_vaddr = f_addr; rommap.fm_offset = 0; fbbm_rop_write(consfb, &rommap, rommap.fm_offset, len, sr, &dr->origin, consfb->planemask); if (sp->s_csr.csr_attributes & BOLD) { dr->origin.x += 1; fbbm_rop_write(consfb, &rommap, rommap.fm_offset, len, sr, &dr->origin, consfb->planemask); } } else { fbbm_rop_init(consfb, consfb->funcvec); fbbm_rop_copy(consfb, sr, &dr->origin, 1, consfb->planemask); if (sp->s_csr.csr_attributes & BOLD) { dr->origin.x += 1; fbbm_rop_copy(consfb, sr, &dr->origin, 1, consfb->planemask); } } if (sp->s_csr.csr_attributes & USCORE) { udr.origin.x = sp->s_csr.csr_p.x; udr.origin.y = sp->s_csr.csr_p.y + ul_pos; udr.extent.x = char_w; udr.extent.y = 1; setropfunc(BF_S, 1, fcolor, bcolor); fbbm_rop_cinit(consfb, consfb->planemask, 1); fbbm_rop_clear(consfb, &udr); } unlock_bitmap();}vt_flush(spc) struct cursor *spc;{ register char *f_addr; register int len; register lRectangle *sr, *dr; lRectangle fr, cr; register int i; register unsigned int c; lRectangle udr; register char **fnt_addr; char *oldf_addr = (char *)-1; extern struct fb_map rommap; if (fp == 0) return; cursor_off(); lock_bitmap(); if (consfb->font_h == 24) fnt_addr = ext_fnt24_addr; else fnt_addr = ext_fnt_addr; udr.origin = fpp; udr.extent.x = fpn * char_w; udr.extent.y = char_h; setropfunc(BF_S, 0, fcolor, bcolor); fbbm_rop_cinit(consfb, consfb->planemask, 0); fbbm_rop_clear(consfb, &udr); if (fpa & BOLD) setropfunc(BF_S, 1, fcolor, bcolor); else setropfunc(BF_S, 0, fcolor, bcolor); fbbm_rop_winit(consfb); sr = &fr; dr = &cr; sr->origin.x = 0; sr->origin.y = 0; sr->extent.y = font_h; dr->origin.x = fpp.x; dr->origin.y = fpp.y + ch_pos; for (i = 0; i < fp; i++) { c = fbuf[i]; sr->extent.x = font_w; dr->extent.x = char_w; if (c & 0xff00) { /* * KANJI code... kanji char */ sr->extent.x = font_r2.extent.x; dr->extent.x = char_r2.extent.x; len = font_len2; f_addr = (char *)fbbm_Krom_addr(consfb, c, sr);#ifdef CPU_DOUBLE } else if (fnt_addr == 0) { /* * no external fonts... try to use ROM fonts */ sr->extent.x = font_r1.extent.x; /*XXX*/ dr->extent.x = char_r1.extent.x; /*XXX*/ len = font_len2; f_addr = (char *)fbbm_Krom_addr(consfb, c, sr);#endif#ifdef KM_ASCII } else if (tmode == KM_ASCII) { /* * terminal mode is ASCII... ASCII (ISO) char */ len = font_len1; if ((c >= 0x20) && (c <= 0x7e)) { /* * ASCII char */ f_addr = fnt_addr[c]; } else if ((c >= 0xa0) && (c <= 0xff)) { /* * ISO char */ f_addr = fnt_addr[c - 32]; } else { /* * UNKNOWN char */ f_addr = (caddr_t)zero; }#endif /* KM_ASCII */ } else { /* * terminal mode is not ASCII... JIS, SJIS, EUC, ... */ len = font_len1; if ((c >= 0x20) && (c <= 0x7e)) { /* * ASCII char */ f_addr = fnt_addr[c]; } else if ((c >= 0xa1) && (c <= 0xdf)) { /* * KANA char */ f_addr = fnt_addr[c + 64]; } else { /* * UNKNOWN char */ f_addr = (caddr_t)zero; } } if (f_addr != 0) { if (oldf_addr == 0) fbbm_rop_winit(consfb); rommap.fm_vaddr = f_addr; rommap.fm_offset = 0; fbbm_rop_write(consfb, &rommap, rommap.fm_offset, len, sr, &dr->origin, consfb->planemask); if (fpa & BOLD) { /* * Bold char */ dr->origin.x += 1; fbbm_rop_write(consfb, &rommap, rommap.fm_offset, len, sr, &dr->origin, consfb->planemask); dr->origin.x -= 1; } } else { if (oldf_addr != 0) fbbm_rop_init(consfb, consfb->funcvec); fbbm_rop_copy(consfb, sr, &dr->origin, 1, consfb->planemask); if (fpa & BOLD) { /* * Bold char */ dr->origin.x += 1; fbbm_rop_copy(consfb, sr, &dr->origin, 1, consfb->planemask); dr->origin.x -= 1; } } dr->origin.x += dr->extent.x; oldf_addr = f_addr; /* * sr->origin.x and sr->origin.y were changed by * fbpop_Krom_addr(), fb254_Krom_addr(). */ sr->origin.x = 0; sr->origin.y = 0; } if (fpa & USCORE) { udr.origin.y += ul_pos; udr.extent.y = 1; setropfunc(BF_S, 1, fcolor, bcolor); fbbm_rop_cinit(consfb, consfb->planemask, 1); fbbm_rop_clear(consfb, &udr); } fp = 0; unlock_bitmap(); dr->origin.y -= ch_pos; cursor_on(&(spc->csr_p));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -