67 for (j = yStart; j <= yFinish; j++) {
68
69 CLIP_BIT();
70 xRight++;
71
72 i = xLeft;
73
74 if (i & 7) {
75 mlib_u8 *dp = dstData + (i >> 3);
76 mlib_s32 res = dp[0];
77 mlib_s32 i_end = i + (8 - (i & 7));
78
79 if (i_end > xRight)
80 i_end = xRight;
81
82 for (; i < i_end; i++) {
83 bit = 7 - (i & 7);
84 ySrc = MLIB_POINTER_SHIFT(Y);
85 srcPixelPtr = MLIB_POINTER_GET(lineAddr, ySrc);
86
87 res = (res & ~(1 << bit)) | (((srcPixelPtr[X >> (MLIB_SHIFT + 3)] >> (7 - (X >> MLIB_SHIFT) & 7)) & 1) <<
88 bit);
89
90 X += dX;
91 Y += dY;
92 }
93
94 dp[0] = res;
95 }
96
97 #ifdef __SUNPRO_C
98 #pragma pipeloop(0)
99 #endif /* __SUNPRO_C */
100 for (; i <= (xRight - 8); i += 8) {
101 srcPixelPtr0 = MLIB_POINTER_GET(lineAddr, MLIB_POINTER_SHIFT(Y));
102 Y += dY;
103 res = ((srcPixelPtr0[X >> (MLIB_SHIFT + 3)] << (((X >> MLIB_SHIFT)) & 7)) & 0x0080);
104 X += dX;
105
106 srcPixelPtr1 = MLIB_POINTER_GET(lineAddr, MLIB_POINTER_SHIFT(Y));
107 Y += dY;
108 res |= ((srcPixelPtr1[X >> (MLIB_SHIFT + 3)] << (((X >> MLIB_SHIFT) - 1) & 7)) & 0x4040);
133 res |= ((srcPixelPtr6[X >> (MLIB_SHIFT + 3)] << (((X >> MLIB_SHIFT) - 6) & 7)) & 0x0202);
134 X += dX;
135
136 srcPixelPtr7 = MLIB_POINTER_GET(lineAddr, MLIB_POINTER_SHIFT(Y));
137 Y += dY;
138 res |= ((srcPixelPtr7[X >> (MLIB_SHIFT + 3)] >> (7 - ((X >> MLIB_SHIFT) & 7))) & 0x0001);
139 X += dX;
140
141 dstData[i >> 3] = res | (res >> 8);
142 }
143
144 if (i < xRight) {
145 mlib_u8 *dp = dstData + (i >> 3);
146 mlib_s32 res = dp[0];
147
148 for (; i < xRight; i++) {
149 bit = 7 - (i & 7);
150 ySrc = MLIB_POINTER_SHIFT(Y);
151 srcPixelPtr = MLIB_POINTER_GET(lineAddr, ySrc);
152
153 res = (res & ~(1 << bit)) | (((srcPixelPtr[X >> (MLIB_SHIFT + 3)] >> (7 - (X >> MLIB_SHIFT) & 7)) & 1) << bit);
154
155 X += dX;
156 Y += dY;
157 }
158
159 dp[0] = res;
160 }
161 }
162 }
163
164 /***************************************************************/
|
67 for (j = yStart; j <= yFinish; j++) {
68
69 CLIP_BIT();
70 xRight++;
71
72 i = xLeft;
73
74 if (i & 7) {
75 mlib_u8 *dp = dstData + (i >> 3);
76 mlib_s32 res = dp[0];
77 mlib_s32 i_end = i + (8 - (i & 7));
78
79 if (i_end > xRight)
80 i_end = xRight;
81
82 for (; i < i_end; i++) {
83 bit = 7 - (i & 7);
84 ySrc = MLIB_POINTER_SHIFT(Y);
85 srcPixelPtr = MLIB_POINTER_GET(lineAddr, ySrc);
86
87 res = (res & ~(1 << bit)) | (((srcPixelPtr[X >> (MLIB_SHIFT + 3)] >> (7 - ((X >> MLIB_SHIFT) & 7))) & 1) << bit);
88
89 X += dX;
90 Y += dY;
91 }
92
93 dp[0] = res;
94 }
95
96 #ifdef __SUNPRO_C
97 #pragma pipeloop(0)
98 #endif /* __SUNPRO_C */
99 for (; i <= (xRight - 8); i += 8) {
100 srcPixelPtr0 = MLIB_POINTER_GET(lineAddr, MLIB_POINTER_SHIFT(Y));
101 Y += dY;
102 res = ((srcPixelPtr0[X >> (MLIB_SHIFT + 3)] << (((X >> MLIB_SHIFT)) & 7)) & 0x0080);
103 X += dX;
104
105 srcPixelPtr1 = MLIB_POINTER_GET(lineAddr, MLIB_POINTER_SHIFT(Y));
106 Y += dY;
107 res |= ((srcPixelPtr1[X >> (MLIB_SHIFT + 3)] << (((X >> MLIB_SHIFT) - 1) & 7)) & 0x4040);
132 res |= ((srcPixelPtr6[X >> (MLIB_SHIFT + 3)] << (((X >> MLIB_SHIFT) - 6) & 7)) & 0x0202);
133 X += dX;
134
135 srcPixelPtr7 = MLIB_POINTER_GET(lineAddr, MLIB_POINTER_SHIFT(Y));
136 Y += dY;
137 res |= ((srcPixelPtr7[X >> (MLIB_SHIFT + 3)] >> (7 - ((X >> MLIB_SHIFT) & 7))) & 0x0001);
138 X += dX;
139
140 dstData[i >> 3] = res | (res >> 8);
141 }
142
143 if (i < xRight) {
144 mlib_u8 *dp = dstData + (i >> 3);
145 mlib_s32 res = dp[0];
146
147 for (; i < xRight; i++) {
148 bit = 7 - (i & 7);
149 ySrc = MLIB_POINTER_SHIFT(Y);
150 srcPixelPtr = MLIB_POINTER_GET(lineAddr, ySrc);
151
152 res = (res & ~(1 << bit)) | (((srcPixelPtr[X >> (MLIB_SHIFT + 3)] >> (7 - ((X >> MLIB_SHIFT) & 7))) & 1) << bit);
153
154 X += dX;
155 Y += dY;
156 }
157
158 dp[0] = res;
159 }
160 }
161 }
162
163 /***************************************************************/
|