27 #define RadToDeg 57.29577951 28 #define MFBFORMAT MFBCurrent->strings 56 return(MFBCurrent->
maxX);
58 return(MFBCurrent->
maxY);
116 return((
int)MFBCurrent->
vltBool);
166 double rrr,ggg,bbb,rr,gg,bb,sum,dif,mx,mn,lit,intensity;
169 rr = ((
double) r)/1000.0;
170 gg = ((double) g)/1000.0;
171 bb = ((double) b)/1000.0;
178 sum = mx + mn; dif = mx - mn;
180 rrr = (mx - rr)/dif; ggg = (mx - gg)/dif; bbb = (mx - bb)/dif;
185 if(mx == mn) MFBCurrent->
T = 0;
186 else if(lit <= .5) MFBCurrent->
T = (int)(intensity * dif/sum);
187 else MFBCurrent->
T = (int)((intensity * dif)/(2.0 - sum));
189 if(MFBCurrent->
T == 0) MFBCurrent->
Y = 0;
190 else if(rr == mx) MFBCurrent->
Y = (int)(60.0 * (2.0 + bbb - ggg));
191 else if(gg == mx) MFBCurrent->
Y = (int)(60.0 * (4.0 + rrr - bbb));
192 else MFBCurrent->
Y = (int)(60.0 * (6.0 + ggg - rrr));
193 MFBCurrent->
Z = (int)(intensity * lit);
215 if(MFBCurrent ==
NULL)
return;
224 MFBCounters(nChars,nBoxes,meanBoxArea,nLines,meanLineLength,nPixels)
225 int *nChars,*nBoxes,*meanBoxArea,*nLines,*meanLineLength,*nPixels;
231 *nChars = MFBCurrent->
nChars;
232 *nBoxes = MFBCurrent->
nBoxes;
233 *nLines = MFBCurrent->
nLines;
236 if(MFBCurrent->
nBoxes != 0)
238 if(MFBCurrent->
nLines != 0)
245 *nChars = *nBoxes = *nLines = *meanLineLength = *meanBoxArea = 0;
277 MFBCurrent->
X = MFBCurrent->
lineStyle = styleId;
356 if(readMask == MFBCurrent->
readMask)
362 MFBCurrent->
X = MFBCurrent->
readMask = readMask;
383 if(colorId < 0 || colorId >= MFBCurrent->
maxColors)
387 MFBCurrent->
X = MFBCurrent->
fgColorId = colorId;
396 Bool destructiveBool;
405 if(MFBCurrent->
textMode != (
int)destructiveBool) {
416 MFBCurrent->
textMode = (int)destructiveBool;
455 if(cp ==
NULL || *cp == 0)
464 int colorId1,colorId2;
478 int colorId,
r,
g,b,onFlag;
487 MFBCurrent->
X = colorId;
514 Bool RubberBandingBool;
526 if(RubberBandingBool){
601 MFBCurrent->
X = styleId;
607 for(i=0; i<Count; ++i){
608 if( (
int)((i/8) * 8) == i) j = BitArray;
609 MFBCurrent->
Y = *j++;
631 MFBCurrent->
X = styleId;
633 MFBCurrent->
Y = BitArray;
682 if(path->nvertices < 2)
685 MFBLine(path->xy[0],path->xy[1],path->xy[2],path->xy[3]);
686 while(n < path->nvertices){
687 x = path->xy[(n << 1)];
688 y = path->xy[(n << 1) + 1];
713 MFBCurrent->
X = X1; MFBCurrent->
Y = Y1;
716 && *
MFBFORMAT.drawSolidLineToSequence != 0)
739 MFBCurrent->
X = X1; MFBCurrent->
Y = Y1;
740 MFBCurrent->
Z = X2; MFBCurrent->
T = Y2;
742 && *
MFBFORMAT.drawSolidLineSequence != 0)
764 MFBCurrent->
X = l; MFBCurrent->
Y = b; MFBCurrent->
Z = r; MFBCurrent->
T = t;
767 && *
MFBFORMAT.drawSolidBoxSequence != 0) {
797 xx = x + (int)(r *
cos(d));
798 yy = y + (int)(r *
sin(d));
801 while(astart >= astop)
804 j =
MFBmax(1,(astop - astart)/s);
806 j =
MFBmax(1,(astop - astart)/18);
807 for(i = astart + j; i <= astop; i += j){
809 MFBCurrent->
X = x + (int)(r *
cos(d));
810 MFBCurrent->
Y = y + (int)(r *
sin(d));
814 MFBCurrent->
X = x + (int)(r *
cos(d));
815 MFBCurrent->
Y = y + (int)(r *
sin(d));
837 MFBCurrent->
X = x + r;
841 for(i = j; i <= 360; i += j){
843 MFBCurrent->
Z = x + (int)(r *
cos(d));
844 MFBCurrent->
T = y + (int)(r *
sin(d));
846 MFBCurrent->
X = MFBCurrent->
Z;
847 MFBCurrent->
Y = MFBCurrent->
T;
870 MFBCurrent->
X = x + r;
880 for(i = j; i < 360; i += j){
882 MFBCurrent->
X = x + (int)(r *
cos(d));
883 MFBCurrent->
Y = y + (int)(r *
sin(d));
886 MFBCurrent->
X = x + r;
903 MFBCurrent->
Z = n = p->nvertices;
905 MFBCurrent->
X = *xy1++;
906 MFBCurrent->
Y = *xy1++;
915 MFBCurrent->
X = *xy1++;
916 MFBCurrent->
Y = *xy1++;
919 MFBCurrent->
X = *xy0;
920 MFBCurrent->
Y = *(xy0+1);
939 MFBCurrent->
nChars += strlen(text);
953 while(*c++ != 0) (MFBCurrent->
Z)++;
979 MFBCurrent->
X = x; MFBCurrent->
Y = y;
1020 while(astart >= astop)
1025 j =
MFBmax(1,(astop - astart)/s);
1027 *ip++ = x + (int)(r *
cos(d));
1028 *ip++ = y + (int)(r *
sin(d));
1029 for(i = astart + j; i <= astop; i += j){
1031 *ip++ = x + (int)(r *
cos(d));
1032 *ip++ = y + (int)(r *
sin(d));
1036 *ip++ = x + (int)(r *
cos(d));
1037 *ip = y + (int)(r *
sin(d));
1074 *ip++ = x + (int)(rx *
cos(d));
1075 *ip++ = y + (int)(ry *
sin(d));
1093 #define WNDW MFBCurrent->currentWindow 1094 #define VWPRT MFBCurrent->currentViewport 1142 int left,bottom,right,top;
1144 VWPRT.bottom = bottom;
1147 VWPRT.right = right;
1154 int left,bottom,right,top;
1156 WNDW.bottom = bottom;
1182 incr2 = incr + (incr >> 1);
1193 if ((right - left) > (top - bottom)) {
1194 for (bb = bottom; bb <= top; bb += incr)
1198 for (ll = left; ll <= right; ll += incr)
1207 for (bb = bottom; bb < top; bb += step)
1215 for (ll = left; ll < right; ll += step)
1225 while (ll < right && bb < top) {
1226 MFBLine (left, bb, ll, bottom);
1233 MFBLine (left, bb, right, tt);
1239 while (ll < right) {
1241 MFBLine (rr, top, ll, bottom);
1246 while (rr <= right && tt <= top) {
1249 if (rr > right || tt > top)
1263 while (rr > left && bb < top) {
1264 MFBLine (rr, bottom, right, bb);
1271 MFBLine (left, tt, right, bb);
1279 MFBLine (rr, bottom, ll, top);
1284 while (ll >= left && tt <= top) {
1287 if (ll < left || tt > top)
1299 for (bb = bottom; bb < top; bb += (step + step)) {
1300 for (ll = left; ll < right; ll += step) {
1301 MFBLine (ll - incr2, bb, ll + incr2, bb);
1302 MFBLine (ll, bb - incr2, ll, bb + incr2);
1311 for (bb = bottom; bb < top; bb += (step + step)) {
1312 for (ll = left; ll < right; ll += step) {
1313 MFBLine (ll - incr2, bb - incr2, ll + incr2, bb + incr2);
1314 MFBLine (ll - incr2, bb + incr2, ll + incr2, bb - incr2);
1324 MFBLine (left, bottom, left, top);
1325 MFBLine (left, top, right, top);
1326 MFBLine (right, top, right, bottom);
1327 MFBLine (right, bottom, left, bottom);
void MFBMoveTo(int X1, int Y1)
int MFBDefineColor(int colorId, int r, int g, int b)
MFBPATH * MFBArcPath(int x, int y, int r, int astart, int astop, int s)
int MFBSetALUMode(int mode)
void MFBConvertToHLS(int r, int g, int b)
void MFBSetWindow(int left, int bottom, int right, int top)
int MFBDefineLineStyle(int styleId, int BitArray)
void MFBCircle(int x, int y, int r, int s)
int MFBDefineFillPattern(int styleId, int *BitArray)
void MFBDrawPath(MFBPATH *path)
int MFBSetTextMode(Bool destructiveBool)
int MFBSetRubberBanding(Bool RubberBandingBool, int X, int Y)
void MFBLine(int X1, int Y1, int X2, int Y2)
int MFBSetCursorColor(int colorId1, int colorId2)
Bool linePatternDefineBool
void MFB_X_Intercept(long x1, long y1, long x2, long y2, long e, long *xi)
Bool textPositionableBool
void SetCurrentMFB(MFB *mfb)
MFBSetLineStyle(int styleId)
void MFBText(char *text, int x, int y, int phi)
void MFBFlash(int x, int y, int r, int s)
void MFB_Y_Intercept(long x1, long y1, long x2, long y2, long e, long *yi)
void MFBGenCode(char *PM)
MFBSetFillPattern(int styleId)
void MFBPixel(int x, int y)
int MFBSetBlinker(int colorId, int r, int g, int b, int onFlag)
int MFBSetColor(int colorId)
int MFBSetReadMask(int readMask)
int MFBSetChannelMask(int channelMask)
void MFBPolygon(MFBPOLYGON *p)
void MFBArc(int x, int y, int r, int astart, int astop, int s)
Bool reissueLineStyleBool
void MFBBox(int l, int b, int r, int t)
#define MFBSwapInt(f1, f2)
void MFBDrawLineTo(int X1, int Y1)
void MFBSetViewport(int left, int bottom, int right, int top)
MFBPOLYGON * MFBEllipse(int x, int y, int rx, int ry, int s)
void MFBCounters(int *nChars, int *nBoxes, int *meanBoxArea, int *nLines, int *meanLineLength, int *nPixels)
Bool fillDefineRowMajorBool