ThirdPartyRendererAdapter.java

package com.example.graphics.adapter;

import com.example.graphics.model.Circle;
import com.example.graphics.model.Line;
import com.example.graphics.model.Rectangle;
import com.example.graphics.model.Triangle;
import com.example.graphics.render.Renderer;

/**
 * Adapter for the ThirdPartyRenderer interface.
 * This adapts the third-party renderer to our Renderer interface.
 * Implementation of the Adapter pattern.
 */
public class ThirdPartyRendererAdapter implements Renderer {
    private final ThirdPartyRenderer thirdPartyRenderer;
    
    /**
     * Constructor takes the third-party renderer to adapt
     * @param thirdPartyRenderer the third-party renderer to adapt
     */
    public ThirdPartyRendererAdapter(ThirdPartyRenderer thirdPartyRenderer) {
        this.thirdPartyRenderer = thirdPartyRenderer;
    }
    
    @Override
    public void renderCircle(Circle circle) {
        thirdPartyRenderer.drawCircle(circle.getX(), circle.getY(), circle.getRadius());
    }
    
    @Override
    public void renderRectangle(Rectangle rectangle) {
        thirdPartyRenderer.drawRect(rectangle.getX(), rectangle.getY(), 
                                   rectangle.getWidth(), rectangle.getHeight());
    }
    
    @Override
    public void renderLine(Line line) {
        thirdPartyRenderer.drawLine(line.getX1(), line.getY1(), line.getX2(), line.getY2());
    }
    
    @Override
    public void renderTriangle(Triangle triangle) {
        // 使用第三方渲染器的多边形绘制功能来绘制三角形
        int[] xPoints = {triangle.getX1(), triangle.getX2(), triangle.getX3()};
        int[] yPoints = {triangle.getY1(), triangle.getY2(), triangle.getY3()};
        thirdPartyRenderer.drawPolygon(xPoints, yPoints, 3);
    }
    
    @Override
    public void clear() {
        thirdPartyRenderer.clearSurface();
    }
    
    @Override
    public void display() {
        thirdPartyRenderer.refreshDisplay();
    }
}