You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
828B

  1. #include "widgets.hpp"
  2. namespace rack {
  3. TransformWidget::TransformWidget() {
  4. identity();
  5. }
  6. void TransformWidget::identity() {
  7. nvgTransformIdentity(transform);
  8. }
  9. void TransformWidget::translate(Vec delta) {
  10. float t[6];
  11. nvgTransformTranslate(t, delta.x, delta.y);
  12. nvgTransformPremultiply(transform, t);
  13. }
  14. void TransformWidget::rotate(float angle) {
  15. float t[6];
  16. nvgTransformRotate(t, angle);
  17. nvgTransformPremultiply(transform, t);
  18. }
  19. void TransformWidget::scale(Vec s) {
  20. float t[6];
  21. nvgTransformScale(t, s.x, s.y);
  22. nvgTransformPremultiply(transform, t);
  23. }
  24. void TransformWidget::draw(NVGcontext *vg) {
  25. // No need to save the state because that is done in the parent
  26. nvgTransform(vg, transform[0], transform[1], transform[2], transform[3], transform[4], transform[5]);
  27. Widget::draw(vg);
  28. }
  29. } // namespace rack