// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef XFA_FXBARCODE_COMMON_BC_COMMONPERSPECTIVETRANSFORM_H_ #define XFA_FXBARCODE_COMMON_BC_COMMONPERSPECTIVETRANSFORM_H_ #include "core/fxcrt/include/fx_basic.h" class CBC_CommonPerspectiveTransform { public: CBC_CommonPerspectiveTransform(FX_FLOAT a11, FX_FLOAT a21, FX_FLOAT a31, FX_FLOAT a12, FX_FLOAT a22, FX_FLOAT a32, FX_FLOAT a13, FX_FLOAT a23, FX_FLOAT a33); virtual ~CBC_CommonPerspectiveTransform(); static CBC_CommonPerspectiveTransform* QuadrilateralToQuadrilateral( FX_FLOAT x0, FX_FLOAT y0, FX_FLOAT x1, FX_FLOAT y1, FX_FLOAT x2, FX_FLOAT y2, FX_FLOAT x3, FX_FLOAT y3, FX_FLOAT x0p, FX_FLOAT y0p, FX_FLOAT x1p, FX_FLOAT y1p, FX_FLOAT x2p, FX_FLOAT y2p, FX_FLOAT x3p, FX_FLOAT y3p); static CBC_CommonPerspectiveTransform* SquareToQuadrilateral(FX_FLOAT x0, FX_FLOAT y0, FX_FLOAT x1, FX_FLOAT y1, FX_FLOAT x2, FX_FLOAT y2, FX_FLOAT x3, FX_FLOAT y3); static CBC_CommonPerspectiveTransform* QuadrilateralToSquare(FX_FLOAT x0, FX_FLOAT y0, FX_FLOAT x1, FX_FLOAT y1, FX_FLOAT x2, FX_FLOAT y2, FX_FLOAT x3, FX_FLOAT y3); CBC_CommonPerspectiveTransform* BuildAdjoint(); CBC_CommonPerspectiveTransform* Times(CBC_CommonPerspectiveTransform& other); void TransformPoints(CFX_FloatArray* points); private: FX_FLOAT m_a11, m_a12, m_a13, m_a21, m_a22, m_a23, m_a31, m_a32, m_a33; }; #endif // XFA_FXBARCODE_COMMON_BC_COMMONPERSPECTIVETRANSFORM_H_