equal
deleted
inserted
replaced
205 TInt aOriSizeX, TInt aOriSizeY, |
205 TInt aOriSizeX, TInt aOriSizeY, |
206 TReal aZoomX, TReal aZoomY, |
206 TReal aZoomX, TReal aZoomY, |
207 TInt allShiftX, TInt allShiftY, |
207 TInt allShiftX, TInt allShiftY, |
208 TInt newShiftX, TInt newShiftY) |
208 TInt newShiftX, TInt newShiftY) |
209 { |
209 { |
|
210 // We don't waste time if request ZOOM 1x without Pan |
|
211 if(aZoomX==1 && aZoomY==1) |
|
212 { |
|
213 if(allShiftX==0 && allShiftY==0 && newShiftX ==0 && newShiftX == 0) |
|
214 { |
|
215 TInt handle = aOriPtr->Handle(); |
|
216 aOutPtr->Duplicate(handle); |
|
217 return; |
|
218 } |
|
219 } |
210 TInt32 |
220 TInt32 |
211 divider, |
221 divider, |
212 xPos, yPos, tmpline, |
222 xPos, yPos, tmpline, |
213 xAver, yAver, |
223 xAver, yAver, |
214 xStep, yStep, |
224 xStep, yStep, |
569 tmpEnd = (TInt)(yRem + yAver + HALF_PIX + HALF_WEI); |
579 tmpEnd = (TInt)(yRem + yAver + HALF_PIX + HALF_WEI); |
570 yEndInt = (TInt32)((tmpEnd >> PIX_BITS) + yInt); |
580 yEndInt = (TInt32)((tmpEnd >> PIX_BITS) + yInt); |
571 yEndRem = (TUint32)(tmpEnd & REMAINDER); |
581 yEndRem = (TUint32)(tmpEnd & REMAINDER); |
572 |
582 |
573 //Read a new line from the source image if needed |
583 //Read a new line from the source image if needed |
574 while (yEndInt > LastLine && LastLine < aOriSizeY-1) |
584 while (yEndInt > LastLine && LastLine < aOriSizeY) |
575 { |
585 { |
576 LastLine++; |
586 LastLine++; |
577 tmpline = lines[0]; |
587 tmpline = lines[0]; |
578 lines[0] = lines[1]; |
588 lines[0] = lines[1]; |
579 lines[1] = lines[2]; |
589 lines[1] = lines[2]; |
694 // Accumulate first line |
704 // Accumulate first line |
695 if(yStaWei != 0) |
705 if(yStaWei != 0) |
696 { |
706 { |
697 // Line number |
707 // Line number |
698 if(yStaInt < 0) outFlag = 1; |
708 if(yStaInt < 0) outFlag = 1; |
699 else if(yStaInt >= aOriSizeY) outFlag = 1; |
709 else if(yStaInt > aOriSizeY) outFlag = 1; |
700 else |
710 else |
701 { |
711 { |
702 // Initialise line result |
712 // Initialise line result |
703 tmpB = 0; |
713 tmpB = 0; |
704 tmpG = 0; |
714 tmpG = 0; |
733 tmpR = (TInt)(tmpR + ((*(linePtrs[lines[LineNum]] + 3 * i + 2)) << WEI_BITS)); |
743 tmpR = (TInt)(tmpR + ((*(linePtrs[lines[LineNum]] + 3 * i + 2)) << WEI_BITS)); |
734 } |
744 } |
735 } |
745 } |
736 |
746 |
737 // Last pixel in first line |
747 // Last pixel in first line |
738 if(xEndWei != 0) |
748 if(xEndWei != 0 && xEndInt < aOriSizeX) |
739 { |
749 { |
740 // Column number |
750 // Column number |
741 if(xEndInt < 0) outFlag = 1; |
751 if(xEndInt < 0) outFlag = 1; |
742 else if(xEndInt >= aOriSizeX) outFlag = 1; |
|
743 else |
752 else |
744 { |
753 { |
745 // Pixel weighting to line result |
754 // Pixel weighting to line result |
746 tmpB = (TInt)(tmpB + (*(linePtrs[lines[LineNum]] + 3 * xEndInt )) * xEndWei); |
755 tmpB = (TInt)(tmpB + (*(linePtrs[lines[LineNum]] + 3 * xEndInt )) * xEndWei); |
747 tmpG = (TInt)(tmpG + (*(linePtrs[lines[LineNum]] + 3 * xEndInt + 1)) * xEndWei); |
756 tmpG = (TInt)(tmpG + (*(linePtrs[lines[LineNum]] + 3 * xEndInt + 1)) * xEndWei); |
760 // Accumulate middle lines |
769 // Accumulate middle lines |
761 for(j = (TInt32)(yStaInt + 1); j < yEndInt; j++) |
770 for(j = (TInt32)(yStaInt + 1); j < yEndInt; j++) |
762 { |
771 { |
763 // Line number |
772 // Line number |
764 if(j < 0) outFlag = 1; |
773 if(j < 0) outFlag = 1; |
765 else if(j >= aOriSizeY) outFlag = 1; |
774 else if(j > aOriSizeY) outFlag = 1; |
766 else |
775 else |
767 { |
776 { |
768 // Initialise line result |
777 // Initialise line result |
769 tmpB = 0; |
778 tmpB = 0; |
770 tmpG = 0; |
779 tmpG = 0; |
799 tmpR = (TInt)(tmpR + ((*(linePtrs[lines[LineNum]] + 3 * i + 2)) << WEI_BITS)); |
808 tmpR = (TInt)(tmpR + ((*(linePtrs[lines[LineNum]] + 3 * i + 2)) << WEI_BITS)); |
800 } |
809 } |
801 } |
810 } |
802 |
811 |
803 // Last pixel in middle lines |
812 // Last pixel in middle lines |
804 if(xEndWei != 0) |
813 if(xEndWei != 0 && xEndInt < aOriSizeX) |
805 { |
814 { |
806 // Column number |
815 // Column number |
807 if(xEndInt < 0) outFlag = 1; |
816 if(xEndInt < 0) outFlag = 1; |
808 else if(xEndInt >= aOriSizeX) outFlag = 1; |
|
809 else |
817 else |
810 { |
818 { |
811 // Pixel weighting to line result |
819 // Pixel weighting to line result |
812 tmpB = (TInt)(tmpB + (*(linePtrs[lines[LineNum]] + 3 * xEndInt )) * xEndWei); |
820 tmpB = (TInt)(tmpB + (*(linePtrs[lines[LineNum]] + 3 * xEndInt )) * xEndWei); |
813 tmpG = (TInt)(tmpG + (*(linePtrs[lines[LineNum]] + 3 * xEndInt + 1)) * xEndWei); |
821 tmpG = (TInt)(tmpG + (*(linePtrs[lines[LineNum]] + 3 * xEndInt + 1)) * xEndWei); |
827 // Accumulate last line |
835 // Accumulate last line |
828 if(yEndWei != 0) |
836 if(yEndWei != 0) |
829 { |
837 { |
830 // Line number |
838 // Line number |
831 if(yEndInt < 0) outFlag = 1; |
839 if(yEndInt < 0) outFlag = 1; |
832 else if(yEndInt >= aOriSizeY) outFlag = 1; |
840 else if(yEndInt > aOriSizeY) outFlag = 1; |
833 else |
841 else |
834 { |
842 { |
835 // Initialise line result |
843 // Initialise line result |
836 tmpB = 0; |
844 tmpB = 0; |
837 tmpG = 0; |
845 tmpG = 0; |
864 tmpR = (TInt)(tmpR + ((*(linePtrs[lines[LineNum]] + 3 * i + 2)) << WEI_BITS)); |
872 tmpR = (TInt)(tmpR + ((*(linePtrs[lines[LineNum]] + 3 * i + 2)) << WEI_BITS)); |
865 } |
873 } |
866 } |
874 } |
867 |
875 |
868 // Last pixel in last line |
876 // Last pixel in last line |
869 if(xEndWei != 0) |
877 if(xEndWei != 0 && xEndInt < aOriSizeX) |
870 { |
878 { |
871 // Column number |
879 // Column number |
872 if(xEndInt < 0) outFlag = 1; |
880 if(xEndInt < 0) outFlag = 1; |
873 else if(xEndInt >= aOriSizeX) outFlag = 1; |
|
874 else |
881 else |
875 { |
882 { |
876 tmpB = (TInt)(tmpB + (*(linePtrs[lines[LineNum]] + 3 * xEndInt )) * xEndWei); |
883 tmpB = (TInt)(tmpB + (*(linePtrs[lines[LineNum]] + 3 * xEndInt )) * xEndWei); |
877 tmpG = (TInt)(tmpG + (*(linePtrs[lines[LineNum]] + 3 * xEndInt + 1)) * xEndWei); |
884 tmpG = (TInt)(tmpG + (*(linePtrs[lines[LineNum]] + 3 * xEndInt + 1)) * xEndWei); |
878 tmpR = (TInt)(tmpR + (*(linePtrs[lines[LineNum]] + 3 * xEndInt + 2)) * xEndWei); |
885 tmpR = (TInt)(tmpR + (*(linePtrs[lines[LineNum]] + 3 * xEndInt + 2)) * xEndWei); |