Class RenderingContext

java.lang.Object
eu.svjatoslav.sixth.e3d.gui.RenderingContext

public class RenderingContext extends Object
Contains all state needed to render a single frame: the pixel buffer, graphics context, screen dimensions, and mouse event tracking.

A new RenderingContext is created whenever the view panel is resized. During rendering, shapes use this context to:

The context also manages mouse interaction detection: as shapes are painted back-to-front, each shape can report itself as the object under the mouse cursor. After painting completes, the topmost shape receives the mouse event.

See Also:
  • Field Details

    • bufferedImageType

      public static final int bufferedImageType
      The BufferedImage pixel format used for the rendering buffer (4-byte ABGR).
      See Also:
    • graphics

      public final Graphics2D graphics
      Java2D graphics context for drawing text, anti-aliased shapes, and other high-level graphics operations onto the render buffer.
    • pixels

      public final byte[] pixels
      Pixels of the rendering area. Each pixel is represented by 4 bytes: alpha, blue, green, red.
    • width

      public final int width
      Width of the rendering area in pixels.
    • height

      public final int height
      Height of the rendering area in pixels.
    • centerCoordinate

      public final Point2D centerCoordinate
      Center of the screen in screen space (pixels). This is the point where (0,0) coordinate of the world space is rendered.
    • projectionScale

      public final double projectionScale
      Scale factor for perspective projection, derived from screen width. Used to convert normalized device coordinates to screen pixels.
    • frameNumber

      public int frameNumber
      Number of frame that is currently being rendered. Every frame has its own number.
  • Constructor Details

    • RenderingContext

      public RenderingContext(int width, int height)
      Creates a new rendering context with the specified pixel dimensions.

      Initializes the offscreen image buffer, extracts the raw pixel byte array, and configures anti-aliasing on the Graphics2D context.

      Parameters:
      width - the rendering area width in pixels
      height - the rendering area height in pixels
  • Method Details

    • prepareForNewFrameRendering

      public void prepareForNewFrameRendering()
      Resets per-frame state in preparation for rendering a new frame. Clears the mouse event and the current object under the mouse cursor.
    • getMouseEvent

      public MouseEvent getMouseEvent()
      Returns the pending mouse event for this frame, or null if none.
      Returns:
      the mouse event to process, or null
    • setMouseEvent

      public void setMouseEvent(MouseEvent mouseEvent)
      Sets the mouse event to be processed during this frame's rendering.
      Parameters:
      mouseEvent - the mouse event with position and button information
    • setCurrentObjectUnderMouseCursor

      public void setCurrentObjectUnderMouseCursor(MouseInteractionController currentObjectUnderMouseCursor)
      Called when given object was detected under mouse cursor, while processing mouseEvent. Because objects are rendered back to front. The last method caller will set the top-most object, if there are multiple objects under mouse cursor.
    • handlePossibleComponentMouseEvent

      public boolean handlePossibleComponentMouseEvent()
      Returns:
      true if view update is needed as a consequence of this mouse event.