SetupBBS 板


/*-------------------------------------------------------*/ /* font.c ( YZU_CSE WindTop BBS ) */ /*-------------------------------------------------------*/ /* author : [email protected] */ /* target : bbs 字型產生器 */ /* create : 2003/09/08 */ /*-------------------------------------------------------*/ #undef _MODES_C_ #include "bbs.h" #define DEF_PATH "/home/bbs/so_tmp/font/" extern XZ xz[]; static int font_add(); typedef struct { char name[32]; char fpath[16]; char author[32]; int height; int width; char tmp[40]; } FONT; static void font_item(num, font) int num; FONT *font; { prints("%6d %-32s%-s\n", num, font->name,font->author); } static int font_body(xo) XO *xo; { FONT *font; int num, max, tail; move(3, 0); clrtobot(); max = xo->max; if (max <= 0) { if (vans("要新增資料嗎(Y/N)?[N] ") == 'y') return font_add(xo); return XO_QUIT; } font = (FONT *) xo_pool; num = xo->top; tail = num + XO_TALL; if (max > tail) max = tail; do { font_item(++num, font++); } while (num < max); return XO_NONE; } static int font_head(xo) XO *xo; { vs_head("字型產生器", str_site); outs("\ [←]離開 [Enter]產生字型 [q]查看字型 [h]投稿格式\n\ \033[30;47m 編號 字 型 名 稱 作 者 \033[m"); return font_body(xo); } static int font_load(xo) XO *xo; { xo_load(xo, sizeof(FONT)); return font_body(xo); } static int font_init(xo) XO *xo; { xo_load(xo, sizeof(FONT)); return font_head(xo); } static int font_edit(font,echo) FONT *font; int echo; { char fpath[128]; if(echo == DOECHO) { time_t t = time(0); memset(font, 0, sizeof(FONT)); archiv32(t, font->fpath); } if(vget(b_lines, 0, "字型名稱:", font->name, sizeof(font->name), echo)) { sprintf(fpath,"%s%s",DEF_PATH,font->fpath); if(vedit(fpath, NA)) { if(echo == DOECHO) vmsg("取消新增"); else vmsg("取消修改"); return 0; } vget(b_lines, 0, "字型作者:", font->author, sizeof(font->author), echo); sprintf(fpath,"%d",font->height); vget(b_lines, 0, "字型高度:", fpath, 3, echo); font->height = atoi(fpath); sprintf(fpath,"%d",font->width); vget(b_lines, 0, "字型高度:", fpath, 3, echo); font->width = atoi(fpath); return 1; } else return 0; } static int font_add(xo) XO *xo; { FONT font; if(!HAVE_PERM(PERM_SYSOP)) return XO_FOOT; if(font_edit(&font,DOECHO)) { rec_add(xo->dir, &font, sizeof(FONT)); xo->pos = XO_TAIL /* xo->max */ ; xo_load(xo, sizeof(FONT)); } return font_head(xo); } static int font_delete(xo) XO *xo; { if(!HAVE_PERM(PERM_SYSOP)) return XO_FOOT; if (vans(msg_del_ny) == 'y') { if (!rec_del(xo->dir, sizeof(FONT), xo->pos, NULL, NULL)) { return font_load(xo); } } return XO_FOOT; } static int font_change(xo) XO *xo; { FONT *font, mate; int pos, cur; if(!HAVE_PERM(PERM_SYSOP)) return XO_FOOT; pos = xo->pos; cur = pos - xo->top; font = (FONT *) xo_pool + cur; mate = *font; font_edit(font, GCARRY); if (memcmp(font, &mate, sizeof(FONT))) { rec_put(xo->dir, font, sizeof(FONT), pos); move(3 + cur, 0); font_item(++pos, font); } return XO_INIT; } static int font_browser(xo) XO *xo; { FONT *font; int pos, cur; char fpath[128]; pos = xo->pos; cur = pos - xo->top; font = (FONT *) xo_pool + cur; sprintf(fpath,"%s%s",DEF_PATH,font->fpath); more(fpath,NULL); return XO_INIT; } static int font_create(xo) XO *xo; { FONT *font; int pos, cur; char fpath[128]; char buf[26][128]; FILE *fp; char str[9]; int len; int x; if(! vget(b_lines,0,"請輸入欲產生的字串 : ",str,sizeof(str),DOECHO) ) return XO_FOOT; pos = xo->pos; cur = pos - xo->top; font = (FONT *) xo_pool + cur; sprintf(fpath,"%s%s",DEF_PATH,font->fpath); fp = fopen(fpath,"r"); if(!fp) return XO_FOOT; pos = 0; cur = 0; memset(buf,sizeof(buf),0); while(fgets(fpath,sizeof(fpath),fp)) { for( len = strlen(fpath)-1 ; len < font->width ; ++len) fpath[len] = ' '; fpath[len] = 0; if(cur) strcat(buf[pos],fpath); else strcpy(buf[pos],fpath); if( ++cur >= font->height ) { ++pos; cur = 0; } if(pos >= 26) break; } fclose(fp); clear(); vs_head("字型產生器", str_site); x = 3; move(x,0); prints("你要產生的字串為 : %s",str); x += 2; move(x,0); len = strlen(str); for(cur=0 ; cur < font->height ; ++cur) { for(pos = 0 ; pos < len ; ++pos) { /* 小寫 */ if(str[pos] >= 'a' && str[pos] <= 'z') { strncpy(fpath,&(buf[str[pos]-'a'][font->width*cur]),font->width); outs(fpath); } else if(str[pos] >= 'A' && str[pos] <= 'Z') { strncpy(fpath,&(buf[str[pos]-'A'][font->width*cur]),font->width); outs(fpath); } } outc('\n'); } vmsg(NULL); return XO_INIT; } static int font_help(xo) XO *xo; { char fpath[128]; sprintf(fpath,"%shelp",DEF_PATH); more(fpath,NULL); return font_head(xo); } KeyFunc font_cb[] = { XO_INIT, font_init, XO_LOAD, font_load, XO_HEAD, font_head, XO_BODY, font_body, Ctrl('P'), font_add, 'r', font_create, 'q', font_browser, 'c', font_change, 's', font_init, 'd', font_delete, 'h', font_help }; int main_font() { XO *xo; char fpath[64]; utmp_mode(M_OMENU); sprintf(fpath, "%sindex",DEF_PATH); xz[XZ_OTHER - XO_ZONE].xo = xo = xo_new(fpath); xz[XZ_OTHER - XO_ZONE].cb = font_cb; xover(XZ_OTHER); free(xo); return 0; } -- ※ Origin: 元智大學 風之塔 <bbs.yzu.edu.tw> ※ From : bbs.yzu.edu.tw







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草
伺服器連線錯誤,造成您的不便還請多多包涵!
「贊助商連結」






like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP