📄 render.c
字号:
Ru *= SrcWidth;
Rv *= SrcHeight;
Bu *= SrcWidth;
Bv *= SrcHeight;
fULabsleny = (fULy>0 ? fULy : -fULy);
fURabsleny = (fURy>0 ? fURy : -fURy);
fLLabsleny = (fLLy>0 ? fLLy : -fLLy);
fLRabsleny = (fLRy>0 ? fLRy : -fLRy);
fDestDeltaTX = fULabsleny==0 ? (fULx<<xshiftleft) : (fULx<<xshiftleft)/(fULabsleny);
fDestDeltaLX = fLLabsleny==0 ? (fLLx<<xshiftleft) : (fLLx<<xshiftleft)/(fLLabsleny);
fDestDeltaRX = fURabsleny==0 ? (fURx<<xshiftleft) : (fURx<<xshiftleft)/(fURabsleny);
fDestDeltaBX = fLRabsleny==0 ? (fLRx<<xshiftleft) : (fLRx<<xshiftleft)/(fLRabsleny);
fDestDeltaTZ = fULabsleny==0 ? (fULz<<zshiftleft) : (fULz<<zshiftleft)/(fULabsleny);
fDestDeltaLZ = fLLabsleny==0 ? (fLLz<<zshiftleft) : (fLLz<<zshiftleft)/(fLLabsleny);
fDestDeltaRZ = fURabsleny==0 ? (fURz<<zshiftleft) : (fURz<<zshiftleft)/(fURabsleny);
fDestDeltaBZ = fLRabsleny==0 ? (fLRz<<zshiftleft) : (fLRz<<zshiftleft)/(fLRabsleny);
fDestDeltaTU = fULabsleny==0 ? (Lu - Tu ) : (Lu - Tu ) / (fULabsleny);
fDestDeltaLU = fLLabsleny==0 ? (Bu - Lu) : (Bu - Lu) / (fLLabsleny);
fDestDeltaRU = fURabsleny==0 ? (Ru - Tu) : (Ru - Tu) / (fURabsleny);
fDestDeltaBU = fLRabsleny==0 ? (Bu - Ru) : (Bu - Ru) / (fLRabsleny);
fDestDeltaTV = fULabsleny==0 ? (Lv - Tv ) : (Lv - Tv ) / (fULabsleny);
fDestDeltaLV = fLLabsleny==0 ? (Bv - Lv) : (Bv - Lv) / (fLLabsleny);
fDestDeltaRV = fURabsleny==0 ? (Rv - Tv) : (Rv - Tv) / (fURabsleny);
fDestDeltaBV = fLRabsleny==0 ? (Bv - Rv) : (Bv - Rv) / (fLRabsleny);
fDestDeltaTI = fULabsleny==0 ? (Li - Ti ) : (Li - Ti ) / (fULabsleny);
fDestDeltaLI = fLLabsleny==0 ? (Bi - Li) : (Bi - Li) / (fLLabsleny);
fDestDeltaRI = fURabsleny==0 ? (Ri - Ti) : (Ri - Ti) / (fURabsleny);
fDestDeltaBI = fLRabsleny==0 ? (Bi - Ri) : (Bi - Ri) / (fLRabsleny);
/*
fSrcWidth = SrcWidth<<16;
fSrcHeight = SrcHeight<<16;
fSrcTopDelta = fULy == 0 ? -(fSrcWidth - (1<<16)) : (fSrcWidth - (1<<16)) / fULy;
fSrcRightDelta = fURy == 0 ? (fSrcHeight - (1<<16)) : (fSrcHeight - (1<<16)) / fURy;
fSrcBottomDelta = fLRy == 0 ? (fSrcWidth - (1<<16)) : (fSrcWidth - (1<<16)) / fLRy;
fSrcLeftDelta = fLLy == 0 ? -(fSrcHeight - (1<<16)) : (fSrcHeight - (1<<16)) / fLLy;
*/
num_lines[0] = 0;
num_lines[1] = 0;
num_lines[2] = 0;
if((Ly >= Ry) && (Ry >= By))
{
//Top
orientation = 0;
fDestStartXArray[0] = Tx<<xshiftleft;
fDestEndXArray[0] = Tx<<xshiftleft;
fDestStartDeltaX[0] = -fDestDeltaTX;
fDestEndDeltaX[0] = fDestDeltaRX;
fDestStartZArray[0] = Tz<<zshiftleft;
fDestEndZArray[0] = Tz<<zshiftleft;
fDestStartDeltaZ[0] = -fDestDeltaTZ;
fDestEndDeltaZ[0] = fDestDeltaRZ;
fSrcEdgeStartDeltaX[0] = -fSrcTopDelta;
fSrcEdgeStartDeltaY[0] = 0;
fSrcEdgeEndDeltaX[0] = 0;
fSrcEdgeEndDeltaY[0] = -fSrcRightDelta;
num_lines[0] = Ty-Ly;
fDestStartUArray[0] = Tu;
fDestEndUArray[0] = Tu;
fDestStartDeltaU[0] = fDestDeltaTU;
fDestEndDeltaU[0] = fDestDeltaRU;
fDestStartVArray[0] = Tv;
fDestEndVArray[0] = Tv;
fDestStartDeltaV[0] = fDestDeltaTV;
fDestEndDeltaV[0] = fDestDeltaRV;
fDestStartIArray[0] = Ti;
fDestEndIArray[0] = Ti;
fDestStartDeltaI[0] = fDestDeltaTI;
fDestEndDeltaI[0] = fDestDeltaRI;
//Middle
fDestStartXArray[1] = Lx<<xshiftleft;
fDestEndXArray[1] = fDestEndXArray[0] + fDestEndDeltaX[0]*num_lines[0];
fDestStartDeltaX[1] = fDestDeltaLX;
fDestEndDeltaX[1] = fDestDeltaRX;
fDestStartZArray[1] = Lz<<zshiftleft;
fDestEndZArray[1] = fDestEndZArray[0] + fDestEndDeltaZ[0]*num_lines[0];
fDestStartDeltaZ[1] = fDestDeltaLZ;
fDestEndDeltaZ[1] = fDestDeltaRZ;
fSrcEdgeStartDeltaX[1] = 0;
fSrcEdgeStartDeltaY[1] = -fSrcLeftDelta;
fSrcEdgeEndDeltaX[1] = 0;
fSrcEdgeEndDeltaY[1] = -fSrcRightDelta;
num_lines[1] = Ly-Ry;
fDestStartUArray[1] = Lu;
fDestEndUArray[1] = fDestEndUArray[0] + fDestEndDeltaU[0]*num_lines[0];
fDestStartDeltaU[1] = fDestDeltaLU;
fDestEndDeltaU[1] = fDestDeltaRU;
fDestStartVArray[1] = Lv;
fDestEndVArray[1] = fDestEndVArray[0] + fDestEndDeltaV[0]*num_lines[0];
fDestStartDeltaV[1] = fDestDeltaLV;
fDestEndDeltaV[1] = fDestDeltaRV;
fDestStartIArray[1] = Li;
fDestEndIArray[1] = fDestEndIArray[0] + fDestEndDeltaI[0]*num_lines[0];
fDestStartDeltaI[1] = fDestDeltaLI;
fDestEndDeltaI[1] = fDestDeltaRI;
//Bottom
fDestStartXArray[2] = fDestStartXArray[1] + fDestStartDeltaX[1]*num_lines[1];
fDestEndXArray[2] = Rx<<xshiftleft;
fDestStartDeltaX[2] = fDestDeltaLX;
fDestEndDeltaX[2] = -fDestDeltaBX;
fDestStartZArray[2] = fDestStartZArray[1] + fDestStartDeltaZ[1]*num_lines[1];
fDestEndZArray[2] = Rz<<zshiftleft;
fDestStartDeltaZ[2] = fDestDeltaLZ;
fDestEndDeltaZ[2] = -fDestDeltaBZ;
fSrcEdgeStartDeltaX[2] = 0;
fSrcEdgeStartDeltaY[2] = -fSrcLeftDelta;
fSrcEdgeEndDeltaX[2] = -fSrcBottomDelta;
fSrcEdgeEndDeltaY[2] = 0;
num_lines[2] = Ry-By;
fDestStartUArray[2] = fDestStartUArray[1] + fDestStartDeltaU[1]*num_lines[1];
fDestEndUArray[2] = Ru;
fDestStartDeltaU[2] = fDestDeltaLU;
fDestEndDeltaU[2] = fDestDeltaBU;
fDestStartVArray[2] = fDestStartVArray[1] + fDestStartDeltaV[1]*num_lines[1];
fDestEndVArray[2] = Rv;
fDestStartDeltaV[2] = fDestDeltaLV;
fDestEndDeltaV[2] = fDestDeltaBV;
fDestStartIArray[2] = fDestStartIArray[1] + fDestStartDeltaI[1]*num_lines[1];
fDestEndIArray[2] = Ri;
fDestStartDeltaI[2] = fDestDeltaLI;
fDestEndDeltaI[2] = fDestDeltaBI;
}
else if((Ly >= By) && (By >= Ry))
{
//Top
orientation = 1;
fDestStartXArray[0] = Tx<<xshiftleft;
fDestEndXArray[0] = Tx<<xshiftleft;
fDestStartDeltaX[0] = -fDestDeltaTX;
fDestEndDeltaX[0] = fDestDeltaRX;
fDestStartZArray[0] = Tz<<zshiftleft;
fDestEndZArray[0] = Tz<<zshiftleft;
fDestStartDeltaZ[0] = -fDestDeltaTZ;
fDestEndDeltaZ[0] = fDestDeltaRZ;
fSrcEdgeStartDeltaX[0] = -fSrcTopDelta;
fSrcEdgeStartDeltaY[0] = 0;
fSrcEdgeEndDeltaX[0] = 0;
fSrcEdgeEndDeltaY[0] = -fSrcRightDelta;
num_lines[0] = Ty-Ly;
fDestStartUArray[0] = Tu;
fDestEndUArray[0] = Tu;
fDestStartDeltaU[0] = fDestDeltaTU;
fDestEndDeltaU[0] = fDestDeltaRU;
fDestStartVArray[0] = Tv;
fDestEndVArray[0] = Tv;
fDestStartDeltaV[0] = fDestDeltaTV ;
fDestEndDeltaV[0] = fDestDeltaRV ;
fDestStartIArray[0] = Ti;
fDestEndIArray[0] = Ti;
fDestStartDeltaI[0] = fDestDeltaTI ;
fDestEndDeltaI[0] = fDestDeltaRI ;
//Middle
fDestStartXArray[1] = Lx<<xshiftleft;
fDestEndXArray[1] = fDestEndXArray[0] + fDestEndDeltaX[0]*num_lines[0];
fDestStartDeltaX[1] = fDestDeltaLX;
fDestEndDeltaX[1] = fDestDeltaRX;
fDestStartZArray[1] = Lz<<zshiftleft;
fDestEndZArray[1] = fDestEndZArray[0] + fDestEndDeltaZ[0]*num_lines[0];
fDestStartDeltaZ[1] = fDestDeltaLZ;
fDestEndDeltaZ[1] = fDestDeltaRZ;
fSrcEdgeStartDeltaX[1] = 0;
fSrcEdgeStartDeltaY[1] = -fSrcLeftDelta;
fSrcEdgeEndDeltaX[1] = 0;
fSrcEdgeEndDeltaY[1] = -fSrcRightDelta;
num_lines[1] = Ly-By;
fDestStartUArray[1] = Lu;
fDestEndUArray[1] = fDestEndUArray[0] + fDestEndDeltaU[0]*num_lines[0];
fDestStartDeltaU[1] = fDestDeltaLU;
fDestEndDeltaU[1] = fDestDeltaRU;
fDestStartVArray[1] = Lv;
fDestEndVArray[1] = fDestEndVArray[0] + fDestEndDeltaV[0]*num_lines[0];
fDestStartDeltaV[1] = fDestDeltaLV;
fDestEndDeltaV[1] = fDestDeltaRV;
fDestStartIArray[1] = Li;
fDestEndIArray[1] = fDestEndIArray[0] + fDestEndDeltaI[0]*num_lines[0];
fDestStartDeltaI[1] = fDestDeltaLI;
fDestEndDeltaI[1] = fDestDeltaRI;
//Bottom
fDestStartXArray[2] = Bx<<xshiftleft;
fDestEndXArray[2] = fDestEndXArray[1] + fDestEndDeltaX[1]*num_lines[1];
fDestStartDeltaX[2] = fDestDeltaBX;
fDestEndDeltaX[2] = fDestDeltaRX;
fDestStartZArray[2] = Bz<<zshiftleft;
fDestEndZArray[2] = fDestEndZArray[1] + fDestEndDeltaZ[1]*num_lines[1];
fDestStartDeltaZ[2] = fDestDeltaBZ;
fDestEndDeltaZ[2] = fDestDeltaRZ;
fSrcEdgeStartDeltaX[2] = fSrcBottomDelta;
fSrcEdgeStartDeltaY[2] = 0;
fSrcEdgeEndDeltaX[2] = 0;
fSrcEdgeEndDeltaY[2] = -fSrcRightDelta;
num_lines[2] = By-Ry;
fDestStartUArray[2] = Bu;
fDestEndUArray[2] = fDestEndUArray[1] + fDestEndDeltaU[1]*num_lines[1];
fDestStartDeltaU[2] = -fDestDeltaBU;
fDestEndDeltaU[2] = fDestDeltaRU;
fDestStartVArray[2] = Bv;
fDestEndVArray[2] = fDestEndVArray[1] + fDestEndDeltaV[1]*num_lines[1];
fDestStartDeltaV[2] = -fDestDeltaBV;
fDestEndDeltaV[2] = fDestDeltaRV;
fDestStartIArray[2] = Bi;
fDestEndIArray[2] = fDestEndIArray[1] + fDestEndDeltaI[1]*num_lines[1];
fDestStartDeltaI[2] = -fDestDeltaBI;
fDestEndDeltaI[2] = fDestDeltaRI;
}
else if((Ry >= By) && (By >= Ly))
{
Ty = Ty + 0;
//Top
orientation = 2;
fDestStartXArray[0] = Tx<<xshiftleft;
fDestEndXArray[0] = Tx<<xshiftleft;
fDestStartDeltaX[0] = -fDestDeltaTX;
fDestEndDeltaX[0] = fDestDeltaRX;
fDestStartZArray[0] = Tz<<zshiftleft;
fDestEndZArray[0] = Tz<<zshiftleft;
fDestStartDeltaZ[0] = -fDestDeltaTZ;
fDestEndDeltaZ[0] = fDestDeltaRZ;
fSrcEdgeStartDeltaX[0] = -fSrcTopDelta;
fSrcEdgeStartDeltaY[0] = 0;
fSrcEdgeEndDeltaX[0] = 0;
fSrcEdgeEndDeltaY[0] = -fSrcRightDelta;
num_lines[0] = Ty-Ry;
fDestStartUArray[0] = Tu;
fDestEndUArray[0] = Tu;
fDestStartDeltaU[0] = fDestDeltaTU;
fDestEndDeltaU[0] = fDestDeltaRU;
fDestStartVArray[0] = Tv;
fDestEndVArray[0] = Tv;
fDestStartDeltaV[0] = fDestDeltaTV;
fDestEndDeltaV[0] = fDestDeltaRV;
fDestStartIArray[0] = Ti;
fDestEndIArray[0] = Ti;
fDestStartDeltaI[0] = fDestDeltaTI;
fDestEndDeltaI[0] = fDestDeltaRI;
//Middle
fDestStartXArray[1] = fDestStartXArray[0] + fDestStartDeltaX[0]*num_lines[0];
fDestEndXArray[1] = Rx<<xshiftleft;
fDestStartDeltaX[1] = -fDestDeltaTX;
fDestEndDeltaX[1] = -fDestDeltaBX;
fDestStartZArray[1] = fDestStartZArray[0] + fDestStartDeltaZ[0]*num_lines[0];
fDestEndZArray[1] = Rz<<zshiftleft;
fDestStartDeltaZ[1] = -fDestDeltaTZ;
fDestEndDeltaZ[1] = -fDestDeltaBZ;
fSrcEdgeStartDeltaX[1] = -fSrcTopDelta;
fSrcEdgeStartDeltaY[1] = 0;
fSrcEdgeEndDeltaX[1] = -fSrcBottomDelta;
fSrcEdgeEndDeltaY[1] = 0;
num_lines[1] = Ry-By;
fDestStartUArray[1] = fDestStartUArray[0] + fDestStartDeltaU[0]*num_lines[0];
fDestEndUArray[1] = Ru;
fDestStartDeltaU[1] = fDestDeltaTU;
fDestEndDeltaU[1] = fDestDeltaBU;
fDestStartVArray[1] = fDestStartVArray[0] + fDestStartDeltaV[0]*num_lines[0];
fDestEndVArray[1] = Rv;
fDestStartDeltaV[1] = fDestDeltaTV;
fDestEndDeltaV[1] = fDestDeltaBV;
fDestStartIArray[1] = fDestStartIArray[0] + fDestStartDeltaI[0]*num_lines[0];
fDestEndIArray[1] = Ri;
fDestStartDeltaI[1] = fDestDeltaTI;
fDestEndDeltaI[1] = fDestDeltaBI;
//Bottom
fDestStartXArray[2] = fDestStartXArray[1] + fDestStartDeltaX[1]*num_lines[1];
fDestEndXArray[2] = (Bx+0)<<16;
fDestStartDeltaX[2] = -fDestDeltaTX;
fDestEndDeltaX[2] = -fDestDeltaLX;
fDestStartZArray[2] = fDestStartZArray[1] + fDestStartDeltaZ[1]*num_lines[1];
fDestEndZArray[2] = Bz<<zshiftleft;
fDestStartDeltaZ[2] = -fDestDeltaTZ;
fDestEndDeltaZ[2] = -fDestDeltaLZ;
fSrcEdgeStartDeltaX[2] = -fSrcTopDelta;
fSrcEdgeStartDeltaY[2] = 0;
fSrcEdgeEndDeltaX[2] = 0;
fSrcEdgeEndDeltaY[2] = -fSrcLeftDelta;
num_lines[2] = By-Ly;
fDestStartUArray[2] = fDestStartUArray[1] + fDestStartDeltaU[1]*num_lines[1];
fDestEndUArray[2] = Bu;
fDestStartDeltaU[2] = fDestDeltaTU;
fDestEndDeltaU[2] = -fDestDeltaLU;
fDestStartVArray[2] = fDestStartVArray[1] + fDestStartDeltaV[1]*num_lines[1];
fDestEndVArray[2] = Bv;
fDestStartDeltaV[2] = fDestDeltaTV;
fDestEndDeltaV[2] = -fDestDeltaLV;
fDestStartIArray[2] = fDestStartIArray[1] + fDestStartDeltaI[1]*num_lines[1];
fDestEndIArray[2] = Bi;
fDestStartDeltaI[2] = fDestDeltaTI;
fDestEndDeltaI[2] = -fDestDeltaLI;
}
else if((Ry >= Ly) && (Ly >= By))
{
//Top
orientation = 3;
fDestStartXArray[0] = Tx<<xshiftleft;
fDestEndXArray[0] = Tx<<xshiftleft;
fDestStartDeltaX[0] = -fDestDeltaTX;
fDestEndDeltaX[0] = fDestDeltaRX;
fDestStartZArray[0] = Tz<<zshiftleft;
fDestEndZArray[0] = Tz<<zshiftleft;
fDestStartDeltaZ[0] = -fDestDeltaTZ;
fDestEndDeltaZ[0] = fDestDeltaRZ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -