亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? spaces.c

?? 遠(yuǎn)程桌面連接工具
?? C
?? 第 1 頁 / 共 3 頁
字號:
       if (context != NULLCONTEXT) {               MatrixMultiply(contexts[context].inverse, M, M);               MatrixMultiply(M, contexts[context].normal, M);       }} /*:h2.Conversion from User's X,Y to "fractpel" X,Y When the user is building paths (lines, moves, curves, etc.) he passesthe control points (x,y) for the paths together with an XYspace.  Wemust convert from the user's (x,y) to our internal representationwhich is in pels (fractpels, actually).  This involves transformingthe user's (x,y) under the coordinate space transformation.  It isimportant that we do this quickly.  So, we store pointers to differentconversion functions right in the XYspace structure.  This allows usto have simpler special case functions for the more commonlyencountered types of transformations. :h3.Convert(), IConvert(), and ForceFloat() - Called Through "XYspace" Structure These are functions that fit in the "convert" and "iconvert" functionpointers in the XYspace structure.  They call the "xconvert", "yconvert","ixconvert", and "iyconvert" as appropriate to actually do the work.These secondary routines come in many flavors to handle differentspecial cases as quickly as possible.*/ static void FXYConvert(pt, S, x, y)       register struct fractpoint *pt;  /* point to set                      */       register struct XYspace *S;  /* relevant coordinate space             */       register double x,y;  /* user's coordinates of point                  */{       pt->x = (*S->xconvert)(S->tofract.normal[0][0], S->tofract.normal[1][0], x, y);       pt->y = (*S->yconvert)(S->tofract.normal[0][1], S->tofract.normal[1][1], x, y);} static void IXYConvert(pt, S, x, y)       register struct fractpoint *pt;  /* point to set                      */       register struct XYspace *S;  /* relevant coordinate space             */       register long x,y;    /* user's coordinates of point                  */{       pt->x = (*S->ixconvert)(S->itofract[0][0], S->itofract[1][0], x, y);       pt->y = (*S->iyconvert)(S->itofract[0][1], S->itofract[1][1], x, y);} /*ForceFloat is a substitute for IConvert(), when we just do not haveenough significant digits in the coefficients to get high enoughprecision in the answer with fixed point arithmetic.  So, we force theintegers to floats, and do the arithmetic all with floats:*/ static void ForceFloat(pt, S, x, y)       register struct fractpoint *pt;  /* point to set                      */       register struct XYspace *S;  /* relevant coordinate space             */       register long x,y;    /* user's coordinates of point                  */{       (*S->convert)(pt, S, (double) x, (double) y);} /*:h3.FXYboth(), FXonly(), FYonly() - Floating Point Conversion These are the routines we use when the user has given us floatingpoint numbers for x and y. FXYboth() is the general purpose routine;FXonly() and FYonly() are special cases when one of the coefficientsis 0.0.*/ static fractpel FXYboth(cx, cy, x, y)       register double cx,cy;  /* x and y coefficients                       */       register double x,y;  /* user x,y                                     */{       register double r;    /* temporary float                              */        r = x * cx + y * cy;       return((fractpel) r);} /*ARGSUSED*/static fractpel FXonly(cx, cy, x, y)       register double cx,cy;  /* x and y coefficients                       */       register double x,y;  /* user x,y                                     */{       register double r;    /* temporary float                              */        r = x * cx;       return((fractpel) r);} /*ARGSUSED*/static fractpel FYonly(cx, cy, x, y)       register double cx,cy;  /* x and y coefficients                       */       register double x,y;  /* user x,y                                     */{       register double r;    /* temporary float                              */        r = y * cy;       return((fractpel) r);} /*:h3.IXYboth(), IXonly(), IYonly() - Simple Integer Conversion These are the routines we use when the user has given us integers forx and y, and the coefficients have enough significant digits toprovide precise answers with only "long" (32 bit?) multiplication.IXYboth() is the general purpose routine; IXonly() and IYonly() arespecial cases when one of the coefficients is 0.*/ static fractpel IXYboth(cx, cy, x, y)       register fractpel cx,cy;  /* x and y coefficients                     */       register long x,y;    /* user x,y                                     */{       return(x * cx + y * cy);} /*ARGSUSED*/static fractpel IXonly(cx, cy, x, y)       register fractpel cx,cy;  /* x and y coefficients                     */       register long x,y;    /* user x,y                                     */{       return(x * cx);} /*ARGSUSED*/static fractpel IYonly(cx, cy, x, y)       register fractpel cx,cy;  /* x and y coefficients                     */       register long x,y;    /* user x,y                                     */{       return(y * cy);}  /*:h3.FPXYboth(), FPXonly(), FPYonly() - More Involved Integer Conversion These are the routines we use when the user has given us integers forx and y, but the coefficients do not have enough significant digits toprovide precise answers with only "long" (32 bit?)  multiplication.We have increased the number of significant bits in the coefficientsby FRACTBITS; therefore we must use "double long" (64 bit?)multiplication by calling FPmult().  FPXYboth() is the general purposeroutine; FPXonly() and FPYonly() are special cases when one of thecoefficients is 0. Note that it is perfectly possible for us to calculate X with the"FP" method and Y with the "I" method, or vice versa.  It all dependson how the functions in the XYspace structure are filled out.*/ static fractpel FPXYboth(cx, cy, x, y)       register fractpel cx,cy;  /* x and y coefficients                     */       register long x,y;    /* user x,y                                     */{       return( FPmult(x, cx) + FPmult(y, cy) );} /*ARGSUSED*/static fractpel FPXonly(cx, cy, x, y)       register fractpel cx,cy;  /* x and y coefficients                     */       register long x,y;    /* user x,y                                     */{       return( FPmult(x, cx) );} /*ARGSUSED*/static fractpel FPYonly(cx, cy, x, y)       register fractpel cx,cy;  /* x and y coefficients                     */       register long x,y;    /* user x,y                                     */{       return( FPmult(y, cy) );}   /*:h3.FillOutFcns() - Determine the Appropriate Functions to Use for Conversion This function fills out the "convert" and "iconvert" function pointersin an XYspace structure, and also fills the "helper"functions that actually do the work.*/ static void FillOutFcns(S)       register struct XYspace *S;  /* functions will be set in this structure */{       S->convert = FXYConvert;       S->iconvert = IXYConvert;        FindFfcn(S->tofract.normal[0][0], S->tofract.normal[1][0], &S->xconvert);       FindFfcn(S->tofract.normal[0][1], S->tofract.normal[1][1], &S->yconvert);       FindIfcn(S->tofract.normal[0][0], S->tofract.normal[1][0],                &S->itofract[0][0], &S->itofract[1][0], &S->ixconvert);       FindIfcn(S->tofract.normal[0][1], S->tofract.normal[1][1],                &S->itofract[0][1], &S->itofract[1][1], &S->iyconvert);        if (S->ixconvert == NULL || S->iyconvert == NULL)                S->iconvert = ForceFloat;} /*:h4.FindFfcn() - Subroutine of FillOutFcns() to Fill Out Floating Functions This function tests for the special case of one of the coefficientsbeing zero:*/ static void FindFfcn(cx, cy, fcnP)       register double cx,cy;  /* x and y coefficients                       */       register fractpel (**fcnP)();  /* pointer to function to set          */{       if (cx == 0.0)               *fcnP = FYonly;       else if (cy == 0.0)               *fcnP = FXonly;       else               *fcnP = FXYboth;} /*:h4.FindIfcn() - Subroutine of FillOutFcns() to Fill Out Integer Functions There are two types of integer functions, the 'I' type and the 'FP' type.We use the I type functions when we are satisfied with simple integerarithmetic.  We used the FP functions when we feel we need higherprecision (but still fixed point) arithmetic.  If all else fails,we store a NULL indicating that this we should do the conversion infloating point.*/ static void FindIfcn(cx, cy, icxP, icyP, fcnP)       register double cx,cy;  /* x and y coefficients                       */       register fractpel *icxP,*icyP;  /* fixed point coefficients to set    */       register fractpel (**fcnP)();  /* pointer to function to set          */{       register fractpel imax;  /* maximum of cx and cy                      */        *icxP = cx;       *icyP = cy;        if (cx != (float) (*icxP) || cy != (float) (*icyP)) {/*At this point we know our integer approximations of the coefficientsare not exact.  However, we will still use them if the maximumcoefficient will not fit in a 'fractpel'.   Of course, we have littlechoice at that point, but we haven't lost that much precision bystaying with integer arithmetic.  We have enough significant digitsso thatany error we introduce is less than one part in 2:sup/16/.*/                imax = MAX(ABS(*icxP), ABS(*icyP));               if (imax < (fractpel) (1<<(FRACTBITS-1)) ) {/*At this point we know our integer approximations just do not haveenough significant digits for accuracy.  We will add FRACTBITSsignificant digits to the coefficients (by multiplying them by1<<FRACTBITS) and go to the "FP" form of the functions.  First, wecheck to see if we have ANY significant digits at all (that is, ifimax == 0).  If we don't, we suspect that adding FRACTBITS digitswon't help, so we punt the whole thing.*/                       if (imax == 0) {                               *fcnP = NULL;                               return;                       }                       cx *= FRACTFLOAT;                       cy *= FRACTFLOAT;                       *icxP = cx;                       *icyP = cy;                       *fcnP = FPXYboth;               }               else                       *fcnP = IXYboth;       }       else               *fcnP = IXYboth;/*Now we check for special cases where one coefficient is zero (afterinteger conversion):*/       if (*icxP == 0)               *fcnP = (*fcnP == FPXYboth) ? FPYonly : IYonly;       else if (*icyP == 0)               *fcnP = (*fcnP == FPXYboth) ? FPXonly : IXonly;}/*:h3.UnConvert() - Find User Coordinates From FractPoints The interesting thing with this routine is that we avoid calculatingthe matrix inverse of the device transformation until we really needit, which is to say, until this routine is called for the first timewith a given coordinate space. We also only calculate it only once.  If the inverted matrix is valid,we don't calculate it; if not, we do.  We never expect matrices withzero determinants, so by convention, we mark the matrix is invalid bymarking both X terms zero.*/ void UnConvert(S, pt, xp, yp)       register struct XYspace *S;  /* relevant coordinate space             */       register struct fractpoint *pt;  /* device coordinates                */       double *xp,*yp;       /* where to store resulting x,y                 */{       double x,y;        CoerceInverse(S);       x = pt->x;       y = pt->y;       *xp = S->tofract.inverse[0][0] * x + S->tofract.inverse[1][0] * y;       *yp = S->tofract.inverse[0][1] * x + S->tofract.inverse[1][1] * y;} /*:h2.Transformations*//*:h3 id=xform.Xform() - Transform Object in X and Y TYPE1IMAGER wants transformations of objects like paths to be identicalto transformations of spaces.  For example, if you scale a line(1,1)by 10 it should yield the same result as generating the line(1,1) ina coordinate space that has been scaled by 10. We handle fonts by storing the accumulated transform, for example, SR(accumulating on the right).  Then when we map the font through space TD,for example, we multiply the accumulated font transform on the left bythe space transform on the right, yielding SRTD in this case.  We willget the same result if we did S, then R, then T on the space and mappingan unmodified font through that space.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合天天做天天爱| 久久综合色婷婷| 青青草97国产精品免费观看无弹窗版| 青青青爽久久午夜综合久久午夜 | 色欧美日韩亚洲| 中文字幕视频一区| 91福利资源站| 日韩成人av影视| 久久久久国产精品麻豆| www.亚洲精品| 婷婷综合五月天| 欧美电影免费观看高清完整版| 国产在线精品免费av| 中文成人av在线| 色婷婷精品久久二区二区蜜臀av | 91麻豆精品国产91久久久使用方法| 午夜成人在线视频| 精品国产乱子伦一区| 大胆欧美人体老妇| 亚洲国产婷婷综合在线精品| 欧美一区二区国产| 丁香一区二区三区| 亚洲成人综合视频| 久久久天堂av| 欧美亚洲日本一区| 国产一本一道久久香蕉| 亚洲另类春色国产| 欧美精品一区二区三区在线| 北条麻妃一区二区三区| 奇米四色…亚洲| 日韩伦理免费电影| 精品国内二区三区| 色av综合在线| 国产成人av电影在线| 香港成人在线视频| 中文字幕人成不卡一区| 欧美一区三区二区| 99精品国产热久久91蜜凸| 麻豆精品一区二区三区| 中文字幕综合网| 精品国产91洋老外米糕| 韩国v欧美v日本v亚洲v| 2019国产精品| 久久国产欧美日韩精品| 欧美日本一区二区| 美女脱光内衣内裤视频久久影院| 99精品久久99久久久久| 一区二区三区在线观看网站| 粉嫩一区二区三区在线看| 欧美精品自拍偷拍| 色婷婷亚洲精品| 国产精品国产三级国产三级人妇| 91精品国产91久久综合桃花| 色综合久久88色综合天天| 国产精品99久久久久久有的能看| 日韩高清在线一区| 一区二区三区免费在线观看| 国产精品久久久久久亚洲毛片| 91精品欧美一区二区三区综合在 | 不卡电影免费在线播放一区| 青青草国产成人99久久| 亚洲国产一区二区在线播放| 国产精品国产成人国产三级| 国产亚洲综合av| 26uuu另类欧美| 精品日韩在线观看| 在线播放亚洲一区| 欧美日韩精品一区二区天天拍小说 | 中文字幕一区二区三中文字幕| 精品国产一区二区三区四区四| 在线播放91灌醉迷j高跟美女| 日本道免费精品一区二区三区| 成人国产电影网| 国产成人av一区二区| 国产福利一区二区三区| 国产一区二区三区不卡在线观看| 蜜桃精品视频在线| 日韩电影在线观看网站| 蜜臀av亚洲一区中文字幕| 日本午夜一区二区| 麻豆91免费观看| 国产一区视频网站| 国产一区视频网站| 成人少妇影院yyyy| 99久久久免费精品国产一区二区 | 精油按摩中文字幕久久| 精品一区在线看| 国产一区二区三区| 国产成人免费视频网站高清观看视频 | 亚洲欧美综合网| 一区二区三区自拍| 午夜精品久久久久| 免费成人av在线播放| 久久精品国产99国产| 国产制服丝袜一区| www.成人在线| 欧美日韩一区中文字幕| 国产精品国产精品国产专区不片| 国产精品传媒在线| 亚洲成人免费在线| 久久超级碰视频| 成人av先锋影音| 欧美日韩一区二区三区高清| 日韩一区二区电影网| 欧美国产日韩一二三区| 亚洲久草在线视频| 久久国产日韩欧美精品| 成人aaaa免费全部观看| 91国模大尺度私拍在线视频| 欧美一卡二卡在线| 国产精品美女久久久久久2018| 亚洲伊人伊色伊影伊综合网| 美国十次了思思久久精品导航| 粉嫩欧美一区二区三区高清影视 | 欧美一区二区免费视频| 国产人成亚洲第一网站在线播放| 亚洲男人天堂av| 国产一区二区三区蝌蚪| 色av综合在线| 久久久av毛片精品| 一区二区三区四区激情| 久久精品国产久精国产爱| 一本在线高清不卡dvd| 欧美一级在线观看| 亚洲精品日日夜夜| 国产在线精品免费av| 欧美视频日韩视频| 欧美国产禁国产网站cc| 男女激情视频一区| 色综合中文字幕国产| 欧美精品一区视频| 三级亚洲高清视频| heyzo一本久久综合| 精品日韩成人av| 亚洲综合久久久久| av不卡在线观看| 久久天天做天天爱综合色| 亚洲电影一级片| 99久久国产综合精品麻豆| 欧美精品一区二区久久久| 国产成a人亚洲| 欧美一级久久久| 不卡视频在线观看| 国产精品女同一区二区三区| 日韩国产高清在线| 日韩欧美一级片| 久久国产日韩欧美精品| 欧美一区二区视频在线观看2020| 亚洲美女精品一区| 色综合久久综合网97色综合| 亚洲人成伊人成综合网小说| av一区二区三区在线| 天天色 色综合| 欧美午夜寂寞影院| 亚洲免费观看在线视频| 成人午夜电影久久影院| 精品久久人人做人人爽| 日产精品久久久久久久性色| 欧美伦理影视网| 午夜欧美电影在线观看| 日本乱人伦一区| 一区二区欧美视频| 色狠狠色狠狠综合| 亚洲国产欧美在线人成| 欧美在线观看一区二区| 一区二区视频在线| 日本韩国精品一区二区在线观看| 亚洲欧洲日韩av| 97国产精品videossex| 中文字幕在线一区免费| 99国产精品国产精品毛片| 中文字幕一区二区三| 成人丝袜18视频在线观看| 国产精品午夜在线| jiyouzz国产精品久久| 亚洲视频小说图片| 欧美三级在线看| 青青草国产精品97视觉盛宴| 日韩视频国产视频| 国产精品一区专区| 国产精品第一页第二页第三页| 91免费小视频| 亚洲国产精品久久久男人的天堂| 欧美性猛交xxxx黑人交| 男男gaygay亚洲| 2023国产精品| caoporn国产精品| 亚洲一区二区三区四区在线免费观看 | 欧美亚洲尤物久久| 日韩av电影天堂| 欧美精品一区男女天堂| 不卡视频在线看| 午夜一区二区三区在线观看| 日韩一区二区精品葵司在线| 国产精品一区二区三区99| 亚洲精品写真福利| 91精品欧美久久久久久动漫 | 91亚洲精品乱码久久久久久蜜桃| 一个色妞综合视频在线观看| 91麻豆精品国产91久久久久|