📄 omati.c
字号:
*p = '\0'; } /* コメント乖を猴近 */ if ((p = strchr(buff, '#')) != NULL) { *p = '\0'; } /* 矢机误がない眷圭は肌の乖を */ /* 粕み哈む */ if (strlen(buff) < 1) { continue; } /* ファイルが赂哼する眷圭 */ if (access(buff, F_OK) == 0) { /* ファイル叹を瘦赂 */ strcpy(mapfname[maplength], buff); maplength ++; } else { sprintf(work, "load_pixmap():%s in %s", fname, buff); perror(work); } } fclose(fp_r); /* ファイルクロ〖ズ */ } else { sprintf(work, "load_pixmap():%s", fname); perror(work); } /* pixmapファイルを艰评 */ if (maplength > 0) { /* している眷圭 */ /* ファイル眶尸のエリア澄瘦 */ mapdata = (struct _bm_tbl*) XtMalloc(sizeof(struct _bm_tbl) * maplength); /* ファイル眶尸帆り手し */ for(idx = 0;idx < maplength;idx++) {#if DEBUG printf("pixmap 年盗ファイル叹[%d]:%s\n", idx, mapfname[idx]);#endif /* pixmapデ〖タ艰评 */ sts = SUB_getpixmap(parent, mapfname[idx], NULL, NULL, &mapdata[idx].pixmap); /* デ〖タを艰评できた眷圭 */ if (sts == NORMAL && mapdata[idx].pixmap != XmUNSPECIFIED_PIXMAP) { /* IDとファイル叹を肋年 */ mapdata[idx].id = idx + 1; strcpy(mapdata[idx].name, mapfname[idx]); } else { /* デ〖タを艰评できない眷圭 */#if DEBUG printf("pixmap 稍赖\n");#endif mapdata[idx].id = INITIAL; mapdata[idx].name[0] = 0; } } } } return(sts);}int load_font(widget, font_info)Widget widget;XFontStruct **font_info;{ int sts = ABNORMAL; char *fontname = "9x15";/*-------------------------------------------------------------------*/#if 0 /* フォント叹艰评 */ XtVaGetValues(widget, XmNfontList, &fontname, NULL); if (fontname != NULL) { printf("fontname=%s\n", fontname); /* フォント菇陇挛艰评 */ *font_info = XLoadQueryFont(XtDisplay(widget), fontname); if (*font_info != NULL) { sts = NORMAL; } XtFree(fontname); fontname = NULL; }#else sts = NORMAL;#endif return(sts);}int create_msgpixmap(widget, msg)Widget widget;char *msg;{ int sts = NORMAL; int font_height; int width, height; Pixel foreground, background;/*-------------------------------------------------------------------*/ label_tbl.dpy = XtDisplay(widget); label_tbl.screen = XtScreen(widget); label_tbl.win = XtWindow(widget); label_tbl.gc = XCreateGC(label_tbl.dpy, RootWindowOfScreen(label_tbl.screen), 0, NULL); label_tbl.str = (char*)XtMalloc(strlen(message) + 1); strcpy(label_tbl.str, message); label_tbl.width = (strlen(message) * FONTSIZE) * 2; label_tbl.height = (FONTSIZE * 2); label_tbl.pixmap = XCreatePixmap(label_tbl.dpy, RootWindowOfScreen(label_tbl.screen), label_tbl.width, label_tbl.height, DefaultDepthOfScreen(label_tbl.screen)); XSetForeground(display, label_tbl.gc, WhitePixelOfScreen(label_tbl.screen)); XFillRectangle(display, label_tbl.pixmap, label_tbl.gc, 0, 0, label_tbl.width, label_tbl.height); XSetForeground(display, label_tbl.gc, BlackPixelOfScreen(label_tbl.screen)); XDrawString(display, label_tbl.pixmap, label_tbl.gc, 25, 25, label_tbl.str, strlen(label_tbl.str));}void interval_func(client, id)caddr_t client;XtIntervalId id;{ char *buff = NULL; XmString mstr; unsigned int width, height;/*-------------------------------------------------------------------*/#if 1 /* 山绩脱メッセ〖ジ矢机误艰评 */ if (SUB_strget(message, offset, MIN_MSGLENGTH, &buff) == NORMAL) {#if DEBUG printf("[%d]buff=[%s]\n", offset, buff);#endif /* 矢机误をラベルに肋年 */ mstr = XmStringCreateLtoR(buff, XmSTRING_DEFAULT_CHARSET);/* mstr = XmStringCreateSimple(buff);*/ XtVaSetValues(label1, XmNlabelString, mstr, NULL); XmStringFree(mstr); /* 染逞、链逞矢机によりオフセ */ if (buff[0] >= 0) { /* ットを构糠 */ offset+=1; } else { offset+=2; } XtFree(buff); /* 山绩矢机误脱エリア豺庶 */ buff = NULL; } if (offset >= strlen(message)) { offset = 0; }#else XtVaGetValues(label1, XmNwidth, &width, XmNheight, &height, NULL);/* XCopyArea(label_tbl.dpy, label_tbl.pixmap, label_tbl.win, label_tbl.gc, 0, 0, width, height, 0, 0);*/ XtVaSetValues(label1, XmNlabelPixmap, label_tbl.pixmap, NULL);#endif current++; if (current >= maplength) { current = 0; } if (mapdata != NULL && mapdata[current].id > 0) { XtVaSetValues(label0, XmNlabelPixmap, mapdata[current].pixmap, NULL); } XFillRectangle(display, draw_pixmap, gc, x, y, 3, 3); x += 10; if (x > WIDTH) { x = START_X; y += 10; if (y > HEIGHT) { y = START_Y; XSetForeground(display, gc, WhitePixelOfScreen(screen)); XFillRectangle(display, draw_pixmap, gc, 0, 0, WIDTH, HEIGHT); XSetForeground(display, gc, BlackPixelOfScreen(screen)); } } XCopyArea(display, draw_pixmap, XtWindow(drawing_a), gc, 0, 0, WIDTH, HEIGHT, 0, 0); XtPopup(topshell,XtGrabNone); /* ウィンドウを涟烫に山绩 */ /* タイマ肋年 */ interval_id = XtAppAddTimeOut(appcon, interval, interval_func, NULL);}void quit(w, client, cbs)Widget w;caddr_t client;XmAnyCallbackStruct *cbs;{ int sts, ret; Display *dpy; Window win, *label; Atom window_id, type, evt_message; int format; unsigned long nitems, left; XClientMessageEvent evt; /* 流慨脱デ〖タ菇陇挛 *//*-------------------------------------------------------------------*/ XtUnmanageChild(rc0); dpy = XtDisplay(w); win = XtWindow(w); /* 姜位妥滇デ〖タ侯喇 */ window_id = XInternAtom(dpy, "__WAITDISP", False); ret = XGetWindowProperty(dpy, RootWindow(dpy, 0), window_id, 0, 4, False, XA_WINDOW, &type, &format, &nitems, &left, &label); if (ret == Success && type == XA_WINDOW) { /* 流慨するイベントデ〖タ侯喇 */ evt_message = XInternAtom(dpy, "__WAITDISP_KILL", False); evt.display = dpy; evt.window = *label; evt.type = ClientMessage; evt.format = 8; evt.message_type = evt_message; evt.data.l[0] = (long)getpid(); evt.data.l[1] = (long)dpy; evt.data.l[2] = (long)win; /* 姜位妥滇デ〖タ流慨 */ sts = XSendEvent(dpy, *label, True, NoEventMask, evt);#if DEBUG printf("姜位妥滇 sts=%d\n", sts);#endif } else { printf("流慨黎艰评エラ〖\n"); printf("动扩姜位\n"); exit(0); }}void destroy_it(w, client, cbs)Widget w;caddr_t client;XmAnyCallbackStruct *cbs;{ Pixmap pixmap;/*-------------------------------------------------------------------*/#if DEBUG printf("destroy_it()\n");#endif XtVaGetValues(w, XmNlabelPixmap, &pixmap, NULL); XmDestroyPixmap(pixmap);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -