Lines Matching refs:decomp

118 SkMatrix44 BuildPerspectiveMatrix(const DecomposedTransform& decomp) {
122 matrix.setDouble(3, i, decomp.perspective[i]);
126 SkMatrix44 BuildTranslationMatrix(const DecomposedTransform& decomp) {
129 matrix.setTranslate(SkDoubleToMScalar(decomp.translate[0]),
130 SkDoubleToMScalar(decomp.translate[1]),
131 SkDoubleToMScalar(decomp.translate[2]));
135 SkMatrix44 BuildSnappedTranslationMatrix(DecomposedTransform decomp) {
136 decomp.translate[0] = Round(decomp.translate[0]);
137 decomp.translate[1] = Round(decomp.translate[1]);
138 decomp.translate[2] = Round(decomp.translate[2]);
139 return BuildTranslationMatrix(decomp);
142 SkMatrix44 BuildRotationMatrix(const DecomposedTransform& decomp) {
143 double x = decomp.quaternion[0];
144 double y = decomp.quaternion[1];
145 double z = decomp.quaternion[2];
146 double w = decomp.quaternion[3];
163 SkMatrix44 BuildSnappedRotationMatrix(const DecomposedTransform& decomp) {
165 SkMatrix44 rotation_matrix = BuildRotationMatrix(decomp);
183 SkMatrix44 BuildSkewMatrix(const DecomposedTransform& decomp) {
187 if (decomp.skew[2]) {
188 temp.setDouble(1, 2, decomp.skew[2]);
192 if (decomp.skew[1]) {
194 temp.setDouble(0, 2, decomp.skew[1]);
198 if (decomp.skew[0]) {
200 temp.setDouble(0, 1, decomp.skew[0]);
206 SkMatrix44 BuildScaleMatrix(const DecomposedTransform& decomp) {
208 matrix.setScale(SkDoubleToMScalar(decomp.scale[0]),
209 SkDoubleToMScalar(decomp.scale[1]),
210 SkDoubleToMScalar(decomp.scale[2]));
214 SkMatrix44 BuildSnappedScaleMatrix(DecomposedTransform decomp) {
215 decomp.scale[0] = Round(decomp.scale[0]);
216 decomp.scale[1] = Round(decomp.scale[1]);
217 decomp.scale[2] = Round(decomp.scale[2]);
218 return BuildScaleMatrix(decomp);
309 bool DecomposeTransform(DecomposedTransform* decomp,
311 if (!decomp)
356 decomp->perspective[i] = rhs[i];
361 decomp->perspective[i] = 0.0;
362 decomp->perspective[3] = 1.0;
366 decomp->translate[i] = matrix.get(i, 3);
374 decomp->scale[0] = Length3(row[0]);
375 if (decomp->scale[0] != 0.0)
376 Scale3(row[0], 1.0 / decomp->scale[0]);
379 decomp->skew[0] = Dot<3>(row[0], row[1]);
380 Combine<3>(row[1], row[1], row[0], 1.0, -decomp->skew[0]);
383 decomp->scale[1] = Length3(row[1]);
384 if (decomp->scale[1] != 0.0)
385 Scale3(row[1], 1.0 / decomp->scale[1]);
387 decomp->skew[0] /= decomp->scale[1];
390 decomp->skew[1] = Dot<3>(row[0], row[2]);
391 Combine<3>(row[2], row[2], row[0], 1.0, -decomp->skew[1]);
392 decomp->skew[2] = Dot<3>(row[1], row[2]);
393 Combine<3>(row[2], row[2], row[1], 1.0, -decomp->skew[2]);
396 decomp->scale[2] = Length3(row[2]);
397 if (decomp->scale[2] != 0.0)
398 Scale3(row[2], 1.0 / decomp->scale[2]);
400 decomp->skew[1] /= decomp->scale[2];
401 decomp->skew[2] /= decomp->scale[2];
410 decomp->scale[i] *= -1.0;
416 decomp->quaternion[0] =
418 decomp->quaternion[1] =
420 decomp->quaternion[2] =
422 decomp->quaternion[3] =
426 decomp->quaternion[0] = -decomp->quaternion[0];
428 decomp->quaternion[1] = -decomp->quaternion[1];
430 decomp->quaternion[2] = -decomp->quaternion[2];
436 Transform ComposeTransform(const DecomposedTransform& decomp) {
437 SkMatrix44 perspective = BuildPerspectiveMatrix(decomp);
438 SkMatrix44 translation = BuildTranslationMatrix(decomp);
439 SkMatrix44 rotation = BuildRotationMatrix(decomp);
440 SkMatrix44 skew = BuildSkewMatrix(decomp);
441 SkMatrix44 scale = BuildScaleMatrix(decomp);
449 DecomposedTransform decomp;
450 DecomposeTransform(&decomp, transform);
452 SkMatrix44 rotation_matrix = BuildSnappedRotationMatrix(decomp);
453 SkMatrix44 translation = BuildSnappedTranslationMatrix(decomp);
454 SkMatrix44 scale = BuildSnappedScaleMatrix(decomp);
457 SkMatrix44 perspective = BuildPerspectiveMatrix(decomp);