📄 xglyph.c
字号:
XtSetArg( args[i], XtNheight, 20 ); i++; XtSetArg( args[i], XtNx, 0 ); i++; XtSetArg( args[i], XtNy, 0 ); i++; XtSetArg( args[i], XtNlabel, " Exit Program"); i++; XtSetValues(exitbutton,args,i); XtAddCallback( exitbutton, XtNcallback, (XtCallbackProc) exitprog, (XtPointer) 0 ); /* The About widget for the about message */ aboutbutton = XtCreateManagedWidget("Com", commandWidgetClass, box, NULL, 0); i=0; XtSetArg( args[i], XtNwidth, 55 ); i++; XtSetArg( args[i], XtNheight, 20 ); i++; XtSetArg( args[i], XtNlabel, "About" ); i++; XtSetValues(aboutbutton,args,i); XtAddCallback( aboutbutton, XtNcallback, (XtCallbackProc) showabout, (XtPointer) 0 ); XtRealizeWidget(TopLevel); XtPopup(Output,XtGrabNone); if( extraflags & CHECK_PERFORMANCE){ XtPopup(Output2,XtGrabNone); } /* Set parameters for X11-support */ T1_SetX11Params( display, DefaultVisual(display, screennumber), DefaultDepth( display, screennumber), DefaultColormap(display, screennumber)); /* Create a dummy-pixmap because we need one to destroy before the next is created! */ pixmap = XCreatePixmap(display, XtWindow(OutputWindow), 200, 200, DefaultDepth(display,screennumber) ); XtAppMainLoop(TopLevelApp); return(0); }/* Compute the BBox of a rotated box: */BBox ComputeRotBBox( BBox inbox, float angle){ int i; BBox resultbox={ 0, 0, 0, 0}; struct point { double x; double y; } p[4], P[4]; double sinalpha, cosalpha; sinalpha=sin((double)angle*PI/180); cosalpha=cos((double)angle*PI/180); /* initialize points */ p[0].x=(double) inbox.llx; p[0].y=(double) inbox.lly; p[1].x=(double) inbox.urx; p[1].y=(double) inbox.lly; p[2].x=(double) inbox.urx; p[2].y=(double) inbox.ury; p[3].x=(double) inbox.llx; p[3].y=(double) inbox.ury; /* fprintf( stderr, "InBox: (%f,%f), (%f,%f), (%f,%f), (%f,%f)\n", p[0].x, p[0].y, p[1].x, p[1].y, p[2].x, p[2].y, p[3].x, p[3].y); */ /* Compute tranformed points */ P[0].x=p[0].x*cosalpha-p[0].y*sinalpha; P[0].y=p[0].x*sinalpha+p[0].y*cosalpha; P[1].x=p[1].x*cosalpha-p[1].y*sinalpha; P[1].y=p[1].x*sinalpha+p[1].y*cosalpha; P[2].x=p[2].x*cosalpha-p[2].y*sinalpha; P[2].y=p[2].x*sinalpha+p[2].y*cosalpha; P[3].x=p[3].x*cosalpha-p[3].y*sinalpha; P[3].y=p[3].x*sinalpha+p[3].y*cosalpha; /* fprintf( stderr, "RotPoints: (%f,%f), (%f,%f), (%f,%f), (%f,%f)\n", P[0].x, P[0].y, P[1].x, P[1].y, P[2].x, P[2].y, P[3].x, P[3].y); */ /* Get BBox: */ for (i=0; i<4; i++){ if (P[i].x < (float) resultbox.llx) resultbox.llx=(int) floor(P[i].x +0.5); if (P[i].x > (float) resultbox.urx) resultbox.urx=(int) floor(P[i].x +0.5); if (P[i].y < (float) resultbox.lly) resultbox.lly=(int) floor(P[i].y +0.5); if (P[i].y > (float) resultbox.ury) resultbox.ury=(int) floor(P[i].y +0.5); } return(resultbox); }void exitprog(Widget exitbutton, XtPointer client_data , XtPointer call_data){ int i; for (i=0; i< T1_Get_no_fonts(); i++){ /* printf("Enc-Scheme=%s\n", T1_GetEncodingScheme( i));*/ ; } T1_CloseLib(); exit(0); }void togglekerning( Widget kerningbutton, XtPointer client_data, XtPointer call_data){ int i; char state=0; Arg args[10]; /* Get state of toggle Button: */ i=0; XtSetArg(args[i], XtNstate, &state); i++; XtGetValues(kerningbutton,args,1); if ((state)) Modflag |= T1_KERNING; else Modflag &= ~T1_KERNING; }void toggleligatur( Widget ligaturbutton, XtPointer client_data, XtPointer call_data){ int i; char state=0; Arg args[10]; /* Get state of toggle Button: */ i=0; XtSetArg(args[i], XtNstate, &state); i++; XtGetValues(ligaturbutton,args,1); LigDetect=state;}void toggler2l( Widget r2lbutton, XtPointer client_data, XtPointer call_data){ int i; char state=0; Arg args[10]; /* Get state of toggle Button: */ i=0; XtSetArg(args[i], XtNstate, &state); i++; XtGetValues(r2lbutton,args,1); if ((state)) Modflag |= T1_RIGHT_TO_LEFT; else Modflag &= ~T1_RIGHT_TO_LEFT; /* Invert state */ i=0; if (state){ XtSetArg( args[i], XtNwidth, 55 ); i++; XtSetArg( args[i], XtNheight, 20 ); i++; XtSetArg( args[i], XtNlabel, "<--|" ); i++; } else{ XtSetArg( args[i], XtNwidth, 55 ); i++; XtSetArg( args[i], XtNheight, 20 ); i++; XtSetArg( args[i], XtNlabel, "|-->" ); i++; } XtSetValues(r2lbutton,args,i);}void toggleunderline( Widget underlinebutton, XtPointer client_data, XtPointer call_data){ int i; char state=0; Arg args[10]; /* Get state of toggle Button: */ i=0; XtSetArg(args[i], XtNstate, &state); i++; XtGetValues(underlinebutton,args,1); if ((state)) Modflag |= T1_UNDERLINE; else Modflag &= ~T1_UNDERLINE; }void toggleoverline( Widget overlinebutton, XtPointer client_data, XtPointer call_data){ int i; char state=0; Arg args[10]; /* Get state of toggle Button: */ i=0; XtSetArg(args[i], XtNstate, &state); i++; XtGetValues( overlinebutton,args,1); if ((state)) Modflag |= T1_OVERLINE; else Modflag &= ~T1_OVERLINE; }void toggleoverstrike( Widget overstrikebutton, XtPointer client_data, XtPointer call_data){ int i; char state=0; Arg args[10]; /* Get state of toggle Button: */ i=0; XtSetArg(args[i], XtNstate, &state); i++; XtGetValues( overstrikebutton,args,1); if ((state)) Modflag |= T1_OVERSTRIKE; else Modflag &= ~T1_OVERSTRIKE; }void toggleopacity( Widget opacitybutton, XtPointer client_data, XtPointer call_data){ int i; char state=0; Arg args[10]; /* Get state of toggle Button: */ i=0; XtSetArg(args[i], XtNstate, &state); i++; XtGetValues(opacitybutton,args,1); i=0; XtSetArg( args[i], XtNstate, state); i++; XtSetArg( args[i], XtNwidth, 80 ); i++; XtSetArg( args[i], XtNheight, 20 ); i++; Opacity=state; /* Invert state */ if (state){ XtSetArg( args[i], XtNlabel, "Opaque" ); i++; XtSetValues(opacitybutton,args,i); outbg=bg; } else{ XtSetArg( args[i], XtNlabel, "Transparent" ); i++; XtSetValues(opacitybutton,args,i); outbg=pink4.pixel; } }/* Toggle the antialiasing level */void toggleaalevel( Widget aalevelbutton, XtPointer client_data, XtPointer call_data){ int i; char state=0; Arg args[10]; /* Get state of toggle Button: */ i=0; XtSetArg(args[i], XtNstate, &state); i++; XtGetValues( aalevelbutton,args,1); i=0; XtSetArg( args[i], XtNstate, state); i++; XtSetArg( args[i], XtNwidth, 80 ); i++; XtSetArg( args[i], XtNheight, 15 ); i++; /* Invert state */ if (state){ XtSetArg( args[i], XtNlabel, "AA-High" ); i++; XtSetValues(aalevelbutton,args,i); aalevel=T1_AA_HIGH; } else{ XtSetArg( args[i], XtNlabel, "AA-Low" ); i++; XtSetValues(aalevelbutton,args,i); aalevel=T1_AA_LOW; } }/* Set a new fore/background color */void setcolor( Widget widget, XtPointer client_data, XtPointer call_data){ int i; Arg args[10]; /* foreground colors */ if (widget==fgwhitebutton){ fg=white.pixel; i=0; XtSetArg( args[i], XtNbackground, fg ); i++; XtSetValues(fgstatus,args,i); return; } if (widget==fgblackbutton){ fg=black.pixel; i=0; XtSetArg( args[i], XtNbackground, fg ); i++; XtSetValues(fgstatus,args,i); return; } if (widget==fggraybutton){ fg=gray.pixel; i=0; XtSetArg( args[i], XtNbackground, fg ); i++; XtSetValues(fgstatus,args,i); return; } if (widget==fgredbutton){ fg=red.pixel; i=0; XtSetArg( args[i], XtNbackground, fg ); i++; XtSetValues(fgstatus,args,i); return; } if (widget==fggreenbutton){ fg=green.pixel; i=0; XtSetArg( args[i], XtNbackground, fg ); i++; XtSetValues(fgstatus,args,i); return; } if (widget==fgbluebutton){ fg=blue.pixel; i=0; XtSetArg( args[i], XtNbackground, fg ); i++; XtSetValues(fgstatus,args,i); return; } /* background colors */ if (widget==bgwhitebutton){ bg=white.pixel; if (Opacity) outbg=bg; i=0; XtSetArg( args[i], XtNbackground, bg ); i++; XtSetValues(bgstatus,args,i); return; } if (widget==bgblackbutton){ bg=black.pixel; if (Opacity) outbg=bg; i=0; XtSetArg( args[i], XtNbackground, bg ); i++; XtSetValues(bgstatus,args,i); return; } if (widget==bggraybutton){ bg=gray.pixel; if (Opacity) outbg=bg; i=0; XtSetArg( args[i], XtNbackground, bg ); i++; XtSetValues(bgstatus,args,i); return; } if (widget==bgredbutton){ bg=red.pixel; if (Opacity) outbg=bg; i=0; XtSetArg( args[i], XtNbackground, bg ); i++; XtSetValues(bgstatus,args,i); return; } if (widget==bggreenbutton){ bg=green.pixel; if (Opacity) outbg=bg; i=0; XtSetArg( args[i], XtNbackground, bg ); i++; XtSetValues(bgstatus,args,i); return; } if (widget==bgbluebutton){ bg=blue.pixel; if (Opacity) outbg=bg; i=0; XtSetArg( args[i], XtNbackground, bg ); i++; XtSetValues(bgstatus,args,i); return; } /* we shouldn't get here */ return; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -