⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stretch_hvx_16.h

📁 Linux操作系统的著名硬件加速绘图API软件。可以利用网卡提供的硬件加速功能完成绘图
💻 H
📖 第 1 页 / 共 2 页
字号:
                              << SHIFT_L10;#endif                         point += hfraq;                         r++;                         /* Store */                         lbT[x] = dpT;                         lbB[x] = dpB;                    }               }               else {                    /* Swap */                    lbX = lbT;                    lbT = lbB;                    lbB = lbX;                    /*                     * Two output pixels per step.                     */                    for (x=0, r=head, point=point0; x<w2; x++) {                         /*                          * Horizontal interpolation                          */                         long pl = POINT_L( point, hfraq );                         HVX_DEBUG("%ld,%ld %lu  (%lu/%lu)   0x%x  0x%x\n", x, y, pl,                                   POINT_L( point, hfraq ), POINT_R( point, hfraq ), point, ratios[r] );                         D_ASSERT( pl >= 0 );                         D_ASSERT( pl < width-1 );                         L = SOURCE_LOOKUP(srcB[pl]);                         R = SOURCE_LOOKUP(srcB[pl+1]);                         dpB = (((((R & X_F81F)-(L & X_F81F))*ratios[r] + ((L & X_F81F)<<SHIFT_L6)) & X_003E07C0) +                                 ((((R & X_07E0)-(L & X_07E0))*ratios[r] + ((L & X_07E0)<<SHIFT_L6)) & X_0001F800))#ifdef WORDS_BIGENDIAN                              << SHIFT_L10;#else                              >> SHIFT_R6;#endif                         point += hfraq;                         r++;                         pl = POINT_L( point, hfraq );                         HVX_DEBUG("%ld,%ld %lu  (%lu/%lu)   0x%x  0x%x\n", x, y, pl,                                   POINT_L( point, hfraq ), POINT_R( point, hfraq ), point, ratios[r] );                         D_ASSERT( pl >= 0 );                         D_ASSERT( pl < width-1 );                         L = SOURCE_LOOKUP(srcB[pl]);                         R = SOURCE_LOOKUP(srcB[pl+1]);                         dpB |= (((((R & X_F81F)-(L & X_F81F))*ratios[r] + ((L & X_F81F)<<SHIFT_L6)) & X_003E07C0) +                                  ((((R & X_07E0)-(L & X_07E0))*ratios[r] + ((L & X_07E0)<<SHIFT_L6)) & X_0001F800))#ifdef WORDS_BIGENDIAN                              >> SHIFT_R6;#else                              << SHIFT_L10;#endif                         point += hfraq;                         r++;                         /* Store */                         lbB[x] = dpB;                    }               }               lineT = nlT;          }          /*           * Vertical interpolation           */          long X = LINE_TO_RATIO( line, vfraq );          for (x=0; x<w2; x++) {#if defined (COLOR_KEY) || defined (KEY_PROTECT)#ifdef HAS_ALPHA               dt = ((((((lbB[x] & X_F81FF81F) - (lbT[x] & X_F81FF81F))*X) >> SHIFT_R5) + (lbT[x] & X_F81FF81F)) & X_F81FF81F) +                    ((((((lbB[x]>>SHIFT_R5) & X_F81FF81F) - ((lbT[x]>>SHIFT_R5) & X_F81FF81F))*X) + (lbT[x] & X_07E007E0)) & X_07E007E0);#else               dt = ((((((lbB[x] & X_07E0F81F) - (lbT[x] & X_07E0F81F))*X) >> SHIFT_R5) + (lbT[x] & X_07E0F81F)) & X_07E0F81F) +                    ((((((lbB[x]>>SHIFT_R5) & X_07C0F83F) - ((lbT[x]>>SHIFT_R5) & X_07C0F83F))*X) + (lbT[x] & X_F81F07E0)) & X_F81F07E0);#endif               /* Get two new pixels. */               l_ = dt;               h_ = dt >> 16;#ifdef COLOR_KEY               if ((l_ & MASK_RGB) != (COLOR_KEY)) {                    if ((h_ & MASK_RGB) != (COLOR_KEY)) {#ifdef KEY_PROTECT                         /* Write to destination with color key protection */                         dst32[x] = ((((h_ & MASK_RGB) == KEY_PROTECT) ? h_^1 : h_) << 16) | (((l_ & MASK_RGB) == KEY_PROTECT) ? l_^1 : l_);#else                         /* Write to destination without color key protection */                         dst32[x] = dt;#endif                    }                    else {                         u16 *_dst16 = (u16*) &dst32[x];#ifdef KEY_PROTECT                         /* Write to destination with color key protection */                         *_dst16 = (((l_ & MASK_RGB) == KEY_PROTECT) ? l_^1 : l_);#else                         /* Write to destination without color key protection */                         *_dst16 = l_;#endif                    }               }               else if ((h_ & MASK_RGB) != (COLOR_KEY)) {                    u16 *_dst16 = ((u16*) &dst32[x]) + 1;#ifdef KEY_PROTECT                    /* Write to destination with color key protection */                    *_dst16 = (((h_ & MASK_RGB) == KEY_PROTECT) ? h_^1 : h_);#else                    /* Write to destination without color key protection */                    *_dst16 = h_;#endif               }#else               /* Write to destination with color key protection */               dst32[x] = ((((h_ & MASK_RGB) == KEY_PROTECT) ? h_^1 : h_) << 16) | (((l_ & MASK_RGB) == KEY_PROTECT) ? l_^1 : l_);#endif#else#ifdef HAS_ALPHA               dst32[x] = ((((((lbB[x] & X_F81FF81F) - (lbT[x] & X_F81FF81F))*X) >> SHIFT_R5) + (lbT[x] & X_F81FF81F)) & X_F81FF81F) +                          ((((((lbB[x]>>SHIFT_R5) & X_F81FF81F) - ((lbT[x]>>SHIFT_R5) & X_F81FF81F))*X) + (lbT[x] & X_07E007E0)) & X_07E007E0);#else               dst32[x] = ((((((lbB[x] & X_07E0F81F) - (lbT[x] & X_07E0F81F))*X) >> SHIFT_R5) + (lbT[x] & X_07E0F81F)) & X_07E0F81F) +                          ((((((lbB[x]>>SHIFT_R5) & X_07C0F83F) - ((lbT[x]>>SHIFT_R5) & X_07C0F83F))*X) + (lbT[x] & X_F81F07E0)) & X_F81F07E0);#endif#endif          }          dst32 += dp4;          line  += vfraq;     }     if (tail) {          u32 dpT, dpB, L, R;          u16 *dst16 = dst + cw * 2 - 2;          /* Reset */          line = LINE_0 + ctx->clip.y1 * vfraq;          for (y=0; y<ch; y++) {               long X = LINE_TO_RATIO( line, vfraq );               const SOURCE_TYPE *srcT = src + spitch * LINE_T( line, vfraq );               const SOURCE_TYPE *srcB = src + spitch * LINE_B( line, vfraq );               /*                * Horizontal interpolation                */               long pl = POINT_L( point, hfraq );               HVX_DEBUG("t,%ld %lu  (%lu/%lu)   0x%x  0x%x\n", y, pl,                         POINT_L( point, hfraq ), POINT_R( point, hfraq ), point, ratios[r] );               D_ASSERT( pl >= 0 );               D_ASSERT( pl < width-1 );               L = SOURCE_LOOKUP(srcT[pl]);               R = SOURCE_LOOKUP(srcT[pl+1]);               dpT = (((((R & X_F81F)-(L & X_F81F))*ratios[r] + ((L & X_F81F)<<SHIFT_L6)) & X_003E07C0) +                       ((((R & X_07E0)-(L & X_07E0))*ratios[r] + ((L & X_07E0)<<SHIFT_L6)) & X_0001F800)) >> SHIFT_R6;               L = SOURCE_LOOKUP(srcB[pl]);               R = SOURCE_LOOKUP(srcB[pl+1]);               dpB = (((((R & X_F81F)-(L & X_F81F))*ratios[r] + ((L & X_F81F)<<SHIFT_L6)) & X_003E07C0) +                       ((((R & X_07E0)-(L & X_07E0))*ratios[r] + ((L & X_07E0)<<SHIFT_L6)) & X_0001F800)) >> SHIFT_R6;               /*                * Vertical interpolation                */#if defined (COLOR_KEY) || defined (KEY_PROTECT)               l_ = ((((((dpB & X_F81F) - (dpT & X_F81F))*X) >> SHIFT_R5) + (dpT & X_F81F)) & X_F81F) +                    ((((((dpB>>SHIFT_R5) & X_003F) - ((dpT>>SHIFT_R5) & X_003F))*X) + (dpT & X_07E0)) & X_07E0);#ifdef COLOR_KEY               if ((l_ & MASK_RGB) != (COLOR_KEY))#endif#ifdef KEY_PROTECT                    /* Write to destination with color key protection */                    dst16[0] = ((l_ & MASK_RGB) == KEY_PROTECT) ? l_^1 : l_;#else                    /* Write to destination without color key protection */                    dst16[0] = l_;#endif#else               /* Write to destination without color key protection */               dst16[0] = ((((((dpB & X_F81F) - (dpT & X_F81F))*X) >> SHIFT_R5) + (dpT & X_F81F)) & X_F81F) +                          ((((((dpB>>SHIFT_R5) & X_003F) - ((dpT>>SHIFT_R5) & X_003F))*X) + (dpT & X_07E0)) & X_07E0);#endif               dst16 += dpitch / 2;               line  += vfraq;          }     }}#undef SHIFT_L6#undef SHIFT_L10#undef X_003F#undef X_003E07C0#undef X_0001F800#undef X_07E0F81F#undef X_F81F07E0#undef X_07C0F83F#ifdef SOURCE_LOOKUP_AUTO#undef SOURCE_LOOKUP_AUTO#undef SOURCE_LOOKUP#endif#ifdef SOURCE_TYPE_AUTO#undef SOURCE_TYPE_AUTO#undef SOURCE_TYPE#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -