!48083 回退PR42672 “增加矩阵变换中的参数传递”

Merge pull request !48083 from 马梓健/revertMatrixModifier
This commit is contained in:
openharmony_ci 2024-11-09 09:27:14 +00:00 committed by Gitee
commit a6e7d39214
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
3 changed files with 29 additions and 44 deletions

View File

@ -33,29 +33,20 @@ void AddOrChangeScaleModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
std::shared_ptr<Rosen::RSScaleModifier>& modifier,
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector2f>>& property, const Rosen::Vector2f& value)
{
if (CreateOrSetModifierValue(property, value)) {
bool isCreate = CreateOrSetModifierValue(property, value);
if (isCreate) {
CHECK_NULL_VOID(rsNode);
modifier = std::make_shared<Rosen::RSScaleModifier>(property);
rsNode->AddModifier(modifier);
}
}
void AddOrChangeScaleZModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
std::shared_ptr<Rosen::RSScaleZModifier>& modifier,
std::shared_ptr<Rosen::RSAnimatableProperty<float>>& property, const float value)
{
if (CreateOrSetModifierValue(property, value)) {
CHECK_NULL_VOID(rsNode);
modifier = std::make_shared<Rosen::RSScaleZModifier>(property);
rsNode->AddModifier(modifier);
}
}
void AddOrChangeSkewModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
std::shared_ptr<Rosen::RSSkewModifier>& modifier,
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector3f>>& property, const Rosen::Vector3f& value)
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector2f>>& property, const Rosen::Vector2f& value)
{
if (CreateOrSetModifierValue(property, value)) {
bool isCreate = CreateOrSetModifierValue(property, value);
if (isCreate) {
CHECK_NULL_VOID(rsNode);
modifier = std::make_shared<Rosen::RSSkewModifier>(property);
rsNode->AddModifier(modifier);
@ -66,7 +57,8 @@ void AddOrChangePivotModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
std::shared_ptr<Rosen::RSPivotModifier>& modifier,
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector2f>>& property, const Rosen::Vector2f& value)
{
if (CreateOrSetModifierValue(property, value)) {
bool isCreate = CreateOrSetModifierValue(property, value);
if (isCreate) {
CHECK_NULL_VOID(rsNode);
modifier = std::make_shared<Rosen::RSPivotModifier>(property);
rsNode->AddModifier(modifier);
@ -77,7 +69,8 @@ void AddOrChangeTranslateZModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
std::shared_ptr<Rosen::RSTranslateZModifier>& modifier,
std::shared_ptr<Rosen::RSAnimatableProperty<float>>& property, const float value)
{
if (CreateOrSetModifierValue(property, value)) {
bool isCreate = CreateOrSetModifierValue(property, value);
if (isCreate) {
CHECK_NULL_VOID(rsNode);
modifier = std::make_shared<Rosen::RSTranslateZModifier>(property);
rsNode->AddModifier(modifier);
@ -86,9 +79,10 @@ void AddOrChangeTranslateZModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
void AddOrChangePerspectiveModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
std::shared_ptr<Rosen::RSPerspModifier>& modifier,
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector4f>>& property, const Rosen::Vector4f& value)
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector2f>>& property, const Rosen::Vector2f& value)
{
if (CreateOrSetModifierValue(property, value)) {
bool isCreate = CreateOrSetModifierValue(property, value);
if (isCreate) {
CHECK_NULL_VOID(rsNode);
modifier = std::make_shared<Rosen::RSPerspModifier>(property);
rsNode->AddModifier(modifier);
@ -99,7 +93,8 @@ void AddOrChangeTranslateModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
std::shared_ptr<Rosen::RSTranslateModifier>& modifier,
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector2f>>& property, const Rosen::Vector2f& value)
{
if (CreateOrSetModifierValue(property, value)) {
bool isCreate = CreateOrSetModifierValue(property, value);
if (isCreate) {
CHECK_NULL_VOID(rsNode);
modifier = std::make_shared<Rosen::RSTranslateModifier>(property);
rsNode->AddModifier(modifier);
@ -110,7 +105,8 @@ void AddOrChangeQuaternionModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
std::shared_ptr<Rosen::RSQuaternionModifier>& modifier,
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Quaternion>>& property, const Rosen::Quaternion& value)
{
if (CreateOrSetModifierValue(property, value)) {
bool isCreate = CreateOrSetModifierValue(property, value);
if (isCreate) {
CHECK_NULL_VOID(rsNode);
modifier = std::make_shared<Rosen::RSQuaternionModifier>(property);
rsNode->AddModifier(modifier);

View File

@ -27,13 +27,9 @@ void AddOrChangeScaleModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
std::shared_ptr<Rosen::RSScaleModifier>& modifier,
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector2f>>& property, const Rosen::Vector2f& value);
void AddOrChangeScaleZModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
std::shared_ptr<Rosen::RSScaleZModifier>& modifier,
std::shared_ptr<Rosen::RSAnimatableProperty<float>>& property, const float value);
void AddOrChangeSkewModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
std::shared_ptr<Rosen::RSSkewModifier>& modifier,
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector3f>>& property, const Rosen::Vector3f& value);
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector2f>>& property, const Rosen::Vector2f& value);
void AddOrChangeTranslateZModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
std::shared_ptr<Rosen::RSTranslateZModifier>& modifier,
@ -41,7 +37,7 @@ void AddOrChangeTranslateZModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
void AddOrChangePerspectiveModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
std::shared_ptr<Rosen::RSPerspModifier>& modifier,
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector4f>>& property, const Rosen::Vector4f& value);
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector2f>>& property, const Rosen::Vector2f& value);
void AddOrChangeTranslateModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
std::shared_ptr<Rosen::RSTranslateModifier>& modifier,
@ -56,20 +52,18 @@ void AddOrChangePivotModifier(std::shared_ptr<Rosen::RSNode>& rsNode,
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector2f>>& property, const Rosen::Vector2f& value);
struct TransformMatrixModifier {
std::shared_ptr<Rosen::RSPerspModifier> perspective;
std::shared_ptr<Rosen::RSPerspModifier> perspectiveXY;
std::shared_ptr<Rosen::RSTranslateModifier> translateXY;
std::shared_ptr<Rosen::RSTranslateZModifier> translateZ;
std::shared_ptr<Rosen::RSScaleModifier> scaleXY;
std::shared_ptr<Rosen::RSScaleZModifier> scaleZ;
std::shared_ptr<Rosen::RSSkewModifier> skew;
std::shared_ptr<Rosen::RSSkewModifier> skewXY;
std::shared_ptr<Rosen::RSPivotModifier> pivotXY;
std::shared_ptr<Rosen::RSQuaternionModifier> quaternion;
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector4f>> perspectiveValue;
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector2f>> perspectiveXYValue;
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector2f>> translateXYValue;
std::shared_ptr<Rosen::RSAnimatableProperty<float>> translateZValue;
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector2f>> scaleXYValue;
std::shared_ptr<Rosen::RSAnimatableProperty<float>> scaleZValue;
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector3f>> skewValue;
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector2f>> skewXYValue;
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Vector2f>> pivotXYValue;
std::shared_ptr<Rosen::RSAnimatableProperty<Rosen::Quaternion>> quaternionValue;
};

View File

@ -1814,27 +1814,22 @@ void RosenRenderContext::OnTransformMatrixUpdate(const Matrix4& matrix)
AddOrChangeScaleModifier(
rsNode_, transformMatrixModifier_->scaleXY, transformMatrixModifier_->scaleXYValue, scaleValue);
} else {
Rosen::Vector4f perspectiveValue { transform.perspective[0], transform.perspective[1], transform.perspective[2],
transform.perspective[3] };
Rosen::Vector2f xyPerspectiveValue { transform.perspective[0], transform.perspective[1] };
Rosen::Vector2f xyTranslateValue { transform.translate[0], transform.translate[1] };
Rosen::Quaternion quaternion { static_cast<float>(transform.quaternion.GetX()),
static_cast<float>(transform.quaternion.GetY()), static_cast<float>(transform.quaternion.GetZ()),
static_cast<float>(transform.quaternion.GetW()) };
Rosen::Vector2f xyScaleValue { transform.scale[0], transform.scale[1] };
Rosen::Vector3f skewValue { transform.skew[0], transform.skew[1], transform.skew[2] };
Rosen::Vector2f scaleValue { transform.scale[0], transform.scale[1] };
Rosen::Vector2f skewValue { transform.skew[0], transform.skew[1] };
AddOrChangePerspectiveModifier(rsNode_, transformMatrixModifier_->perspective,
transformMatrixModifier_->perspectiveValue, perspectiveValue);
AddOrChangePerspectiveModifier(rsNode_, transformMatrixModifier_->perspectiveXY,
transformMatrixModifier_->perspectiveXYValue, xyPerspectiveValue);
AddOrChangeTranslateModifier(rsNode_, transformMatrixModifier_->translateXY,
transformMatrixModifier_->translateXYValue, xyTranslateValue);
AddOrChangeTranslateZModifier(rsNode_, transformMatrixModifier_->translateZ,
transformMatrixModifier_->translateZValue, transform.translate[2]);
AddOrChangeScaleModifier(
rsNode_, transformMatrixModifier_->scaleXY, transformMatrixModifier_->scaleXYValue, xyScaleValue);
AddOrChangeScaleZModifier(rsNode_, transformMatrixModifier_->scaleZ,
transformMatrixModifier_->scaleZValue, transform.scale[2]);
rsNode_, transformMatrixModifier_->scaleXY, transformMatrixModifier_->scaleXYValue, scaleValue);
AddOrChangeSkewModifier(
rsNode_, transformMatrixModifier_->skew, transformMatrixModifier_->skewValue, skewValue);
rsNode_, transformMatrixModifier_->skewXY, transformMatrixModifier_->skewXYValue, skewValue);
AddOrChangeQuaternionModifier(
rsNode_, transformMatrixModifier_->quaternion, transformMatrixModifier_->quaternionValue, quaternion);
}