return (unsigned char)ret;
}
-void sort(PointSprite *begin, PointSprite *end) {\r
- PointSprite pivotValue;\r
- size_t sz;\r
- PointSprite *left, *right;\r
- int leftCond, rightCond;\r
- PointSprite tmp;\r
-\r
- sz = end - begin;\r
-\r
- if (sz < 2) return; /* already sorted */\r
- if (sz == 2) {\r
- /* trivial case */\r
- if (begin[1] < begin[0]) {\r
- tmp = begin[0];\r
- begin[0] = begin[1];\r
- begin[1] = tmp;\r
- return;\r
- }\r
- }\r
-\r
- /* minimum 3 elements from now on */\r
-\r
- /* choose a pivot near the middle, since we frequently sort already sorted arrays */\r
- pivotValue = begin[sz / 2];\r
-\r
- left = begin;\r
- right = end - 1;\r
-\r
- while (right > left) {\r
- /* check if left and right elements meet the conditions */\r
- leftCond = pivotValue >= *left;\r
- rightCond = pivotValue < *right;\r
-\r
- if (!leftCond && !rightCond) {\r
- tmp = *left;\r
- *left = *right;\r
- *right = tmp;\r
- left++;\r
- right--;\r
- }\r
- else if (leftCond && rightCond) {\r
- left++;\r
- right--;\r
- }\r
- else if (leftCond) {\r
- left++;\r
- }\r
- else {\r
- right--;\r
- }\r
- }\r
-\r
- /* recursion */\r
- sort(begin, left);\r
- sort(left, end);\r
-}\r
+void sort(PointSprite *begin, PointSprite *end) {
+ PointSprite pivotValue;
+ size_t sz;
+ PointSprite *left, *right;
+ int leftCond, rightCond;
+ PointSprite tmp;
+
+ sz = end - begin;
+
+ if (sz < 2) return; /* already sorted */
+ if (sz == 2) {
+ /* trivial case */
+ if (begin[1] < begin[0]) {
+ tmp = begin[0];
+ begin[0] = begin[1];
+ begin[1] = tmp;
+ return;
+ }
+ }
+
+ /* minimum 3 elements from now on */
+
+ /* choose a pivot near the middle, since we frequently sort already sorted arrays */
+ pivotValue = begin[sz / 2];
+
+ left = begin;
+ right = end - 1;
+
+ while (right > left) {
+ /* check if left and right elements meet the conditions */
+ leftCond = pivotValue >= *left;
+ rightCond = pivotValue < *right;
+
+ if (!leftCond && !rightCond) {
+ tmp = *left;
+ *left = *right;
+ *right = tmp;
+ left++;
+ right--;
+ }
+ else if (leftCond && rightCond) {
+ left++;
+ right--;
+ }
+ else if (leftCond) {
+ left++;
+ }
+ else {
+ right--;
+ }
+ }
+
+ /* recursion */
+ sort(begin, left);
+ sort(left, end);
+}
void sortPointSprites() {
sort(pointSprites, pointSprites + pointSpriteCount);