| 53 | |
| 54 | |
| 55 | ILimage *iluScale2DNear_(ILimage *Image, ILimage *Scaled, ILuint Width, ILuint Height) |
| 56 | { |
| 57 | ImgBps = Image->Bps / Image->Bpc; |
| 58 | SclBps = Scaled->Bps / Scaled->Bpc; |
| 59 | |
| 60 | switch (Image->Bpc) |
| 61 | { |
| 62 | case 1: |
| 63 | for (y = 0; y < Height; y++) { |
| 64 | NewY1 = y * SclBps; |
| 65 | NewY2 = (ILuint)(y / ScaleY) * ImgBps; |
| 66 | for (x = 0; x < Width; x++) { |
| 67 | NewX1 = x * Scaled->Bpp; |
| 68 | NewX2 = (ILuint)(x / ScaleX) * Image->Bpp; |
| 69 | for (c = 0; c < Scaled->Bpp; c++) { |
| 70 | Scaled->Data[NewY1 + NewX1 + c] = Image->Data[NewY2 + NewX2 + c]; |
| 71 | x1 = 0; |
| 72 | } |
| 73 | } |
| 74 | } |
| 75 | break; |
| 76 | |
| 77 | case 2: |
| 78 | ShortPtr = (ILushort*)Image->Data; |
| 79 | SShortPtr = (ILushort*)Scaled->Data; |
| 80 | for (y = 0; y < Height; y++) { |
| 81 | NewY1 = y * SclBps; |
| 82 | NewY2 = (ILuint)(y / ScaleY) * ImgBps; |
| 83 | for (x = 0; x < Width; x++) { |
| 84 | NewX1 = x * Scaled->Bpp; |
| 85 | NewX2 = (ILuint)(x / ScaleX) * Image->Bpp; |
| 86 | for (c = 0; c < Scaled->Bpp; c++) { |
| 87 | SShortPtr[NewY1 + NewX1 + c] = ShortPtr[NewY2 + NewX2 + c]; |
| 88 | x1 = 0; |
| 89 | } |
| 90 | } |
| 91 | } |
| 92 | break; |
| 93 | |
| 94 | case 4: |
| 95 | IntPtr = (ILuint*)Image->Data; |
| 96 | SIntPtr = (ILuint*)Scaled->Data; |
| 97 | for (y = 0; y < Height; y++) { |
| 98 | NewY1 = y * SclBps; |
| 99 | NewY2 = (ILuint)(y / ScaleY) * ImgBps; |
| 100 | for (x = 0; x < Width; x++) { |
| 101 | NewX1 = x * Scaled->Bpp; |
| 102 | NewX2 = (ILuint)(x / ScaleX) * Image->Bpp; |
| 103 | for (c = 0; c < Scaled->Bpp; c++) { |
| 104 | SIntPtr[NewY1 + NewX1 + c] = IntPtr[NewY2 + NewX2 + c]; |
| 105 | x1 = 0; |
| 106 | } |
| 107 | } |
| 108 | } |
| 109 | break; |
| 110 | } |
| 111 | |
| 112 | return Scaled; |