Matrix_fixedStepInX.cpp 1.0 KB

12345678910111213141516171819202122232425262728
  1. // Copyright 2019 Google LLC.
  2. // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
  3. #include "tools/fiddle/examples.h"
  4. // HASH=fad6b92b21b1e1deeae61978cec2d232
  5. REG_FIDDLE(Matrix_fixedStepInX, 256, 256, false, 3) {
  6. void draw(SkCanvas* canvas) {
  7. SkMatrix matrix;
  8. const SkPoint center = { 128, 128 };
  9. matrix.setScale(20, 25, center.fX, center.fY);
  10. matrix.postRotate(75, center.fX, center.fY);
  11. {
  12. SkAutoCanvasRestore acr(canvas, true);
  13. canvas->concat(matrix);
  14. canvas->drawBitmap(source, 0, 0);
  15. }
  16. if (matrix.isFixedStepInX()) {
  17. SkPaint paint;
  18. paint.setAntiAlias(true);
  19. SkVector step = matrix.fixedStepInX(128);
  20. SkVector end = center + step;
  21. canvas->drawLine(center, end, paint);
  22. SkVector arrow = { step.fX + step.fY, step.fY - step.fX};
  23. arrow = arrow * .25f;
  24. canvas->drawLine(end, end - arrow, paint);
  25. canvas->drawLine(end, {end.fX + arrow.fY, end.fY - arrow.fX}, paint);
  26. }
  27. }
  28. } // END FIDDLE