#ifndef HS_GP_TRSF_H
#define HS_GP_TRSF_H
#include "hs_types.h"
#ifdef __cplusplus
extern "C" {
#endif
gp_Trsf * hs_new_gp_Trsf();
void hs_delete_gp_Trsf(gp_Trsf * t);
gp_Trsf * hs_new_gp_Trsf_fromTrsf2d(gp_Trsf2d * t);
void hs_gp_Trsf_SetMirrorAboutPnt(gp_Trsf * trsf, gp_Pnt * pnt);
void hs_gp_Trsf_SetMirrorAboutAx1(gp_Trsf * trsf, gp_Ax1 * ax);
void hs_gp_Trsf_SetMirrorAboutAx2(gp_Trsf * trsf, gp_Ax2 * ax);
void hs_gp_Trsf_SetRotationAboutAxisAngle(gp_Trsf * trsf, gp_Ax1 * ax, double angle);
void hs_gp_Trsf_SetScale(gp_Trsf * trsf, gp_Pnt * origin, double factor, HSExceptionType* exType, void ** exPtr);
void hs_gp_Trsf_SetTranslation(gp_Trsf * trsf, gp_Vec * trans);
void hs_gp_Trsf_SetTranslationPart(gp_Trsf * trsf, gp_Vec * trans);
void hs_gp_Trsf_SetScaleFactor(gp_Trsf * trsf, double s, HSExceptionType* exType, void ** exPtr);
void hs_gp_Trsf_SetValues(gp_Trsf * trsf,
double a11, double a12, double a13, double a14,
double a21, double a22, double a23, double a24,
double a31, double a32, double a33, double a34,
HSExceptionType* exType, void ** exPtr);
bool hs_gp_Trsf_IsNegative(gp_Trsf * trsf);
double hs_gp_Trsf_ScaleFactor(gp_Trsf * trsf);
void hs_gp_Trsf_SetDisplacement(gp_Trsf * trsf, gp_Ax3 *from, gp_Ax3 * to);
double hs_gp_Trsf_Value(gp_Trsf* trsf, int row, int col, HSExceptionType* exType, void ** exPtr);
void hs_gp_Trsf_Invert(gp_Trsf* trsf, HSExceptionType* exType, void ** exPtr);
gp_Trsf * hs_gp_Trsf_Inverted(gp_Trsf* trsf, HSExceptionType* exType, void ** exPtr);
void hs_gp_Trsf_Multiply(gp_Trsf * trsf, gp_Trsf* b);
gp_Trsf * hs_gp_Trsf_Multiplied(gp_Trsf* a, gp_Trsf* b);
void hs_gp_Trsf_PreMultiply(gp_Trsf * trsf, gp_Trsf* b);
void hs_gp_Trsf_Power(gp_Trsf * trsf, int b, HSExceptionType* exType, void ** exPtr);
gp_Trsf * hs_gp_Trsf_Powered(gp_Trsf* a, int b, HSExceptionType* exType, void ** exPtr);
#ifdef __cplusplus
}
#endif
#endif // HS_GP_TRSF_H