| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 // Original code is licensed as follows: | 6 // Original code is licensed as follows: |
| 7 /* | 7 /* |
| 8 * Copyright 2007 ZXing authors | 8 * Copyright 2007 ZXing authors |
| 9 * | 9 * |
| 10 * Licensed under the Apache License, Version 2.0 (the "License"); | 10 * Licensed under the Apache License, Version 2.0 (the "License"); |
| 11 * you may not use this file except in compliance with the License. | 11 * you may not use this file except in compliance with the License. |
| 12 * You may obtain a copy of the License at | 12 * You may obtain a copy of the License at |
| 13 * | 13 * |
| 14 * http://www.apache.org/licenses/LICENSE-2.0 | 14 * http://www.apache.org/licenses/LICENSE-2.0 |
| 15 * | 15 * |
| 16 * Unless required by applicable law or agreed to in writing, software | 16 * Unless required by applicable law or agreed to in writing, software |
| 17 * distributed under the License is distributed on an "AS IS" BASIS, | 17 * distributed under the License is distributed on an "AS IS" BASIS, |
| 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 19 * See the License for the specific language governing permissions and | 19 * See the License for the specific language governing permissions and |
| 20 * limitations under the License. | 20 * limitations under the License. |
| 21 */ | 21 */ |
| 22 | 22 |
| 23 #include "xfa/src/fxbarcode/common/BC_CommonPerspectiveTransform.h" |
| 24 |
| 25 #include <memory> |
| 26 |
| 23 #include "core/include/fxcrt/fx_basic.h" | 27 #include "core/include/fxcrt/fx_basic.h" |
| 24 #include "xfa/src/fxbarcode/common/BC_CommonPerspectiveTransform.h" | |
| 25 #include "xfa/src/fxbarcode/utils.h" | 28 #include "xfa/src/fxbarcode/utils.h" |
| 26 | 29 |
| 27 CBC_CommonPerspectiveTransform::CBC_CommonPerspectiveTransform(FX_FLOAT a11, | 30 CBC_CommonPerspectiveTransform::CBC_CommonPerspectiveTransform(FX_FLOAT a11, |
| 28 FX_FLOAT a21, | 31 FX_FLOAT a21, |
| 29 FX_FLOAT a31, | 32 FX_FLOAT a31, |
| 30 FX_FLOAT a12, | 33 FX_FLOAT a12, |
| 31 FX_FLOAT a22, | 34 FX_FLOAT a22, |
| 32 FX_FLOAT a32, | 35 FX_FLOAT a32, |
| 33 FX_FLOAT a13, | 36 FX_FLOAT a13, |
| 34 FX_FLOAT a23, | 37 FX_FLOAT a23, |
| (...skipping 19 matching lines...) Expand all Loading... |
| 54 FX_FLOAT x3, | 57 FX_FLOAT x3, |
| 55 FX_FLOAT y3, | 58 FX_FLOAT y3, |
| 56 FX_FLOAT x0p, | 59 FX_FLOAT x0p, |
| 57 FX_FLOAT y0p, | 60 FX_FLOAT y0p, |
| 58 FX_FLOAT x1p, | 61 FX_FLOAT x1p, |
| 59 FX_FLOAT y1p, | 62 FX_FLOAT y1p, |
| 60 FX_FLOAT x2p, | 63 FX_FLOAT x2p, |
| 61 FX_FLOAT y2p, | 64 FX_FLOAT y2p, |
| 62 FX_FLOAT x3p, | 65 FX_FLOAT x3p, |
| 63 FX_FLOAT y3p) { | 66 FX_FLOAT y3p) { |
| 64 CBC_AutoPtr<CBC_CommonPerspectiveTransform> qToS( | 67 std::unique_ptr<CBC_CommonPerspectiveTransform> qToS( |
| 65 QuadrilateralToSquare(x0, y0, x1, y1, x2, y2, x3, y3)); | 68 QuadrilateralToSquare(x0, y0, x1, y1, x2, y2, x3, y3)); |
| 66 CBC_AutoPtr<CBC_CommonPerspectiveTransform> sToQ( | 69 std::unique_ptr<CBC_CommonPerspectiveTransform> sToQ( |
| 67 SquareToQuadrilateral(x0p, y0p, x1p, y1p, x2p, y2p, x3p, y3p)); | 70 SquareToQuadrilateral(x0p, y0p, x1p, y1p, x2p, y2p, x3p, y3p)); |
| 68 return sToQ->Times(*(qToS.get())); | 71 return sToQ->Times(*(qToS.get())); |
| 69 } | 72 } |
| 70 void CBC_CommonPerspectiveTransform::TransformPoints(CFX_FloatArray* points) { | 73 void CBC_CommonPerspectiveTransform::TransformPoints(CFX_FloatArray* points) { |
| 71 int32_t max = points->GetSize(); | 74 int32_t max = points->GetSize(); |
| 72 FX_FLOAT a11 = m_a11; | 75 FX_FLOAT a11 = m_a11; |
| 73 FX_FLOAT a12 = m_a12; | 76 FX_FLOAT a12 = m_a12; |
| 74 FX_FLOAT a13 = m_a13; | 77 FX_FLOAT a13 = m_a13; |
| 75 FX_FLOAT a21 = m_a21; | 78 FX_FLOAT a21 = m_a21; |
| 76 FX_FLOAT a22 = m_a22; | 79 FX_FLOAT a22 = m_a22; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 } | 119 } |
| 117 CBC_CommonPerspectiveTransform* | 120 CBC_CommonPerspectiveTransform* |
| 118 CBC_CommonPerspectiveTransform::QuadrilateralToSquare(FX_FLOAT x0, | 121 CBC_CommonPerspectiveTransform::QuadrilateralToSquare(FX_FLOAT x0, |
| 119 FX_FLOAT y0, | 122 FX_FLOAT y0, |
| 120 FX_FLOAT x1, | 123 FX_FLOAT x1, |
| 121 FX_FLOAT y1, | 124 FX_FLOAT y1, |
| 122 FX_FLOAT x2, | 125 FX_FLOAT x2, |
| 123 FX_FLOAT y2, | 126 FX_FLOAT y2, |
| 124 FX_FLOAT x3, | 127 FX_FLOAT x3, |
| 125 FX_FLOAT y3) { | 128 FX_FLOAT y3) { |
| 126 CBC_AutoPtr<CBC_CommonPerspectiveTransform> temp1( | 129 std::unique_ptr<CBC_CommonPerspectiveTransform> temp1( |
| 127 SquareToQuadrilateral(x0, y0, x1, y1, x2, y2, x3, y3)); | 130 SquareToQuadrilateral(x0, y0, x1, y1, x2, y2, x3, y3)); |
| 128 return temp1->BuildAdjoint(); | 131 return temp1->BuildAdjoint(); |
| 129 } | 132 } |
| 130 CBC_CommonPerspectiveTransform* CBC_CommonPerspectiveTransform::BuildAdjoint() { | 133 CBC_CommonPerspectiveTransform* CBC_CommonPerspectiveTransform::BuildAdjoint() { |
| 131 return new CBC_CommonPerspectiveTransform( | 134 return new CBC_CommonPerspectiveTransform( |
| 132 m_a22 * m_a33 - m_a23 * m_a32, m_a23 * m_a31 - m_a21 * m_a33, | 135 m_a22 * m_a33 - m_a23 * m_a32, m_a23 * m_a31 - m_a21 * m_a33, |
| 133 m_a21 * m_a32 - m_a22 * m_a31, m_a13 * m_a32 - m_a12 * m_a33, | 136 m_a21 * m_a32 - m_a22 * m_a31, m_a13 * m_a32 - m_a12 * m_a33, |
| 134 m_a11 * m_a33 - m_a13 * m_a31, m_a12 * m_a31 - m_a11 * m_a32, | 137 m_a11 * m_a33 - m_a13 * m_a31, m_a12 * m_a31 - m_a11 * m_a32, |
| 135 m_a12 * m_a23 - m_a13 * m_a22, m_a13 * m_a21 - m_a11 * m_a23, | 138 m_a12 * m_a23 - m_a13 * m_a22, m_a13 * m_a21 - m_a11 * m_a23, |
| 136 m_a11 * m_a22 - m_a12 * m_a21); | 139 m_a11 * m_a22 - m_a12 * m_a21); |
| 137 } | 140 } |
| 138 CBC_CommonPerspectiveTransform* CBC_CommonPerspectiveTransform::Times( | 141 CBC_CommonPerspectiveTransform* CBC_CommonPerspectiveTransform::Times( |
| 139 CBC_CommonPerspectiveTransform& other) { | 142 CBC_CommonPerspectiveTransform& other) { |
| 140 return new CBC_CommonPerspectiveTransform( | 143 return new CBC_CommonPerspectiveTransform( |
| 141 m_a11 * other.m_a11 + m_a21 * other.m_a12 + m_a31 * other.m_a13, | 144 m_a11 * other.m_a11 + m_a21 * other.m_a12 + m_a31 * other.m_a13, |
| 142 m_a11 * other.m_a21 + m_a21 * other.m_a22 + m_a31 * other.m_a23, | 145 m_a11 * other.m_a21 + m_a21 * other.m_a22 + m_a31 * other.m_a23, |
| 143 m_a11 * other.m_a31 + m_a21 * other.m_a32 + m_a31 * other.m_a33, | 146 m_a11 * other.m_a31 + m_a21 * other.m_a32 + m_a31 * other.m_a33, |
| 144 m_a12 * other.m_a11 + m_a22 * other.m_a12 + m_a32 * other.m_a13, | 147 m_a12 * other.m_a11 + m_a22 * other.m_a12 + m_a32 * other.m_a13, |
| 145 m_a12 * other.m_a21 + m_a22 * other.m_a22 + m_a32 * other.m_a23, | 148 m_a12 * other.m_a21 + m_a22 * other.m_a22 + m_a32 * other.m_a23, |
| 146 m_a12 * other.m_a31 + m_a22 * other.m_a32 + m_a32 * other.m_a33, | 149 m_a12 * other.m_a31 + m_a22 * other.m_a32 + m_a32 * other.m_a33, |
| 147 m_a13 * other.m_a11 + m_a23 * other.m_a12 + m_a33 * other.m_a13, | 150 m_a13 * other.m_a11 + m_a23 * other.m_a12 + m_a33 * other.m_a13, |
| 148 m_a13 * other.m_a21 + m_a23 * other.m_a22 + m_a33 * other.m_a23, | 151 m_a13 * other.m_a21 + m_a23 * other.m_a22 + m_a33 * other.m_a23, |
| 149 m_a13 * other.m_a31 + m_a23 * other.m_a32 + m_a33 * other.m_a33); | 152 m_a13 * other.m_a31 + m_a23 * other.m_a32 + m_a33 * other.m_a33); |
| 150 } | 153 } |
| OLD | NEW |