00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef COP2_TRANSFORM_PARMS_H
00022 #define COP2_TRANSFORM_PARMS_H
00023
00024 #include "COP2_API.h"
00025 #include <UT/UT_XformOrder.h>
00026 #include <UT/UT_FilterType.h>
00027 #include <RU/RU_FilterArea.h>
00028
00029 class UT_Matrix4;
00030
00031 class COP2_API COP2_TransformParms
00032 {
00033 public:
00034 COP2_TransformParms(float tx = 0.0f, float ty = 0.0f, float rot = 0.0f,
00035 float sx = 1.0f, float sy = 1.0f,
00036 float px = 0.0f, float py = 0.0f,
00037 UT_XformOrder::rstOrder order = UT_XformOrder::TRS,
00038 UT_FilterType filter = UT_FILTER_BOX,
00039 float filtersize = 1.0f,
00040 RU_FILTER_WRAP wrap = RU_FILTER_BORDER)
00041 : myRot(rot),
00042 mySX(sx),mySY(sy),
00043 myTX(tx),myTY(ty),
00044 myPX(px),myPY(py),
00045 myFilterSizeX(filtersize), myFilterSizeY(filtersize),
00046 myFilterX(filter), myFilterY(filter),
00047 myOrder(order),
00048 myWrapX(wrap), myWrapY(wrap),
00049 myCombinedTransform(0),
00050 myConstant(false), myUseBlur(false), myBlur(0.0f),
00051 myBias(0.0f), mySegments(8) {}
00052
00053 COP2_TransformParms(const COP2_TransformParms &parms);
00054 ~COP2_TransformParms();
00055
00056 bool isCompatibleWith(const COP2_TransformParms &parms)
00057 { return (myFilterX == parms.myFilterX &&
00058 myFilterY == parms.myFilterY &&
00059 myFilterSizeX == parms.myFilterSizeX &&
00060 myFilterSizeY == parms.myFilterSizeY &&
00061 myWrapX == parms.myWrapX &&
00062 myWrapY == parms.myWrapY &&
00063 (myConstant || parms.myConstant ||
00064 (myUseBlur == parms.myUseBlur &&
00065 (!myUseBlur || (myBlur == parms.myBlur &&
00066 myBias == parms.myBias &&
00067 mySegments == parms.mySegments))))); }
00068
00069 bool collapseTransform(const COP2_TransformParms &parms);
00070
00071 void convertToMatrix();
00072
00073
00074 void getMatrix(UT_Matrix4 &) const;
00075
00076
00077 void getInverseMatrix(UT_Matrix4 &mat) const;
00078
00079
00080 float myRot;
00081 float mySX, mySY;
00082 float myTX, myTY;
00083 float myPX, myPY;
00084 float myFilterSizeX, myFilterSizeY;
00085 UT_FilterType myFilterX, myFilterY;
00086 UT_XformOrder myOrder;
00087 RU_FILTER_WRAP myWrapX, myWrapY;
00088 UT_Matrix4 *myCombinedTransform;
00089
00090 bool myConstant;
00091 bool myUseBlur;
00092 float myBlur;
00093 float myBias;
00094 int mySegments;
00095 };
00096
00097 #endif