math.viewport.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /**
  2. * Class used to represent a viewport on screen
  3. */
  4. export class Viewport {
  5. /**
  6. * Creates a Viewport object located at (x, y) and sized (width, height)
  7. * @param x defines viewport left coordinate
  8. * @param y defines viewport top coordinate
  9. * @param width defines the viewport width
  10. * @param height defines the viewport height
  11. */
  12. constructor(
  13. /** viewport left coordinate */
  14. x,
  15. /** viewport top coordinate */
  16. y,
  17. /**viewport width */
  18. width,
  19. /** viewport height */
  20. height) {
  21. this.x = x;
  22. this.y = y;
  23. this.width = width;
  24. this.height = height;
  25. }
  26. /**
  27. * Creates a new viewport using absolute sizing (from 0-> width, 0-> height instead of 0->1)
  28. * @param renderWidth defines the rendering width
  29. * @param renderHeight defines the rendering height
  30. * @returns a new Viewport
  31. */
  32. toGlobal(renderWidth, renderHeight) {
  33. return new Viewport(this.x * renderWidth, this.y * renderHeight, this.width * renderWidth, this.height * renderHeight);
  34. }
  35. /**
  36. * Stores absolute viewport value into a target viewport (from 0-> width, 0-> height instead of 0->1)
  37. * @param renderWidth defines the rendering width
  38. * @param renderHeight defines the rendering height
  39. * @param ref defines the target viewport
  40. * @returns the current viewport
  41. */
  42. toGlobalToRef(renderWidth, renderHeight, ref) {
  43. ref.x = this.x * renderWidth;
  44. ref.y = this.y * renderHeight;
  45. ref.width = this.width * renderWidth;
  46. ref.height = this.height * renderHeight;
  47. return this;
  48. }
  49. /**
  50. * Returns a new Viewport copied from the current one
  51. * @returns a new Viewport
  52. */
  53. clone() {
  54. return new Viewport(this.x, this.y, this.width, this.height);
  55. }
  56. }
  57. //# sourceMappingURL=math.viewport.js.map