Commit fa32b704 authored by adammajzlik's avatar adammajzlik
Browse files

Creating RenderingServiceImpl bean

parent 11422d22
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -2,21 +2,16 @@ package cz.fidentis.analyst.drawables.renderers;

import com.jogamp.opengl.GL2;
import cz.fidentis.analyst.drawables.Drawable;
import cz.fidentis.analyst.drawables.renderers.impl.RenderingServiceImpl;

/**
 * @author Marek Seďa
 */
public interface RenderingService {

    RenderingServiceImpl INSTANCE = new RenderingServiceImpl();

    /**
     * Method allowing to render generic Drawable
     * @param gl
     * @param drawable
     */
    static void render(GL2 gl, Drawable drawable) {
        INSTANCE.render(gl, drawable);
    }
    void render(GL2 gl, Drawable drawable);
}
+7 −2
Original line number Diff line number Diff line
@@ -2,15 +2,20 @@ package cz.fidentis.analyst.drawables.renderers.impl;

import com.jogamp.opengl.GL2;
import cz.fidentis.analyst.drawables.DrawableFpSkeleton;
import cz.fidentis.analyst.drawables.renderers.RenderingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * Renderer for DrawableFpSkeleton.
 *
 * @author Katerina Zarska
 */
@Component
public class DrawableFpSkeletonRenderer extends AbstractDrawableRenderer<DrawableFpSkeleton> {

    @Autowired
    private RenderingServiceImpl renderingService;

    @Override
    public Class<?> getDrawableClass() {
        return DrawableFpSkeleton.class;
@@ -18,6 +23,6 @@ public class DrawableFpSkeletonRenderer extends AbstractDrawableRenderer<Drawabl

    @Override
    protected void renderObject(GL2 gl, DrawableFpSkeleton drawableFpSkeleton) {
        drawableFpSkeleton.getSkeleton().forEach(line -> RenderingService.render(gl, line));
        drawableFpSkeleton.getSkeleton().forEach(line -> renderingService.render(gl, line));
    }
}
+11 −12
Original line number Diff line number Diff line
@@ -2,7 +2,10 @@ package cz.fidentis.analyst.drawables.renderers.impl;

import com.jogamp.opengl.GL2;
import cz.fidentis.analyst.drawables.Drawable;
import cz.fidentis.analyst.drawables.renderers.RenderingService;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.Map;

@@ -10,15 +13,16 @@ import java.util.Map;
 * @author Marek Seďa
 */
@SuppressWarnings("ALL")
public class RenderingServiceImpl {
@Service
public class RenderingServiceImpl implements RenderingService {

    private final Map<Class<?>, AbstractDrawableRenderer> renderers = new HashMap<>();

    /**
     * Constructor of RenderingServiceImpl
     * initializes all available renderers
     * Create and register all renderers after bean initialization
     */
    public RenderingServiceImpl() {
    @PostConstruct
    private void initRenderers() {
        registerRenderer(new DrawablePlaneRenderer<>());
        registerRenderer(new DrawableMeshRenderer<>());
        registerRenderer(new DrawableLineRenderer());
@@ -35,16 +39,12 @@ public class RenderingServiceImpl {
    private void registerRenderer(AbstractDrawableRenderer renderer) {
        AbstractDrawableRenderer existingRenderer = renderers.put(renderer.getDrawableClass(), renderer);
        if (existingRenderer != null) {
            throw new IllegalArgumentException("Renderer for class " + renderer.getDrawableClass() + " is already registered");
            throw new IllegalArgumentException(
                    "Renderer for class " + renderer.getDrawableClass() + " is already registered");
        }
    }

    /**
     * Method allowing to render generic Drawable
     *
     * @param gl
     * @param drawable
     */
    @Override
    public void render(GL2 gl, Drawable drawable) {
        AbstractDrawableRenderer renderer = renderers.get(drawable.getClass());
        if (renderer == null) {
@@ -52,5 +52,4 @@ public class RenderingServiceImpl {
        }
        renderer.render(gl, drawable);
    }

}
+5 −2
Original line number Diff line number Diff line
@@ -5,9 +5,10 @@ import com.jogamp.opengl.GL2;
import com.jogamp.opengl.GLContext;
import com.jogamp.opengl.GLException;
import com.jogamp.opengl.glu.GLU;
import cz.fidentis.analyst.data.face.Aca;
import cz.fidentis.analyst.drawables.Drawable;
import cz.fidentis.analyst.data.ray.Ray;
import cz.fidentis.analyst.drawables.renderers.RenderingService;
import cz.fidentis.analyst.drawables.renderers.impl.RenderingServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@@ -58,6 +59,8 @@ public class SceneRenderer {
    private final float[] modelviewMatrix = new float[16];
    private final int[] viewport = new int[4];

    private final RenderingServiceImpl renderingService = Aca.getInstance().getBean(RenderingServiceImpl.class);

    /**
     * Initialization method - must be called first.
     * 
@@ -159,7 +162,7 @@ public class SceneRenderer {
            drawables.stream()
                    .filter(Drawable::isShown)
                    .sorted(new Drawable.TransparencyComparator())
                    .forEach(drawable -> RenderingService.render(gl, drawable));
                    .forEach(drawable -> renderingService.render(gl, drawable));
        }
        
        gl.glFlush();
+6 −3
Original line number Diff line number Diff line
@@ -6,10 +6,11 @@ import com.jogamp.opengl.GL2;
import com.jogamp.opengl.GLContext;
import com.jogamp.opengl.GLException;
import com.jogamp.opengl.glu.GLU;
import cz.fidentis.analyst.data.face.Aca;
import cz.fidentis.analyst.data.shapes.Glyph;
import cz.fidentis.analyst.drawables.Drawable;
import cz.fidentis.analyst.drawables.DrawableFace;
import cz.fidentis.analyst.drawables.renderers.RenderingService;
import cz.fidentis.analyst.drawables.renderers.impl.RenderingServiceImpl;
import cz.fidentis.analyst.engines.face.FaceStateServices;
import cz.fidentis.analyst.engines.sampling.PointSamplingConfig;
import cz.fidentis.analyst.glsl.GlslServices;
@@ -61,6 +62,8 @@ public class ShadersManager {
    private final float[] lightModelViewMatrix = new float[16];
    private final float[] lightProjectionMatrix = new float[16];

    private final RenderingServiceImpl renderingService = Aca.getInstance().getBean(RenderingServiceImpl.class);

    /**
     * Shader storage buffer for glyphs and information about them: position, normal and principle curvature directions.
     */
@@ -142,7 +145,7 @@ public class ShadersManager {
                    .map(e -> (DrawableFace) e).toList();
            for (DrawableFace face : faces) {
                updateGlyphDataSSBO(face);
                RenderingService.render(glContext.getGL().getGL2(), face);
                renderingService.render(glContext.getGL().getGL2(), face);
            }

            resetView(viewPortWidth, viewPortHeight);
@@ -292,7 +295,7 @@ public class ShadersManager {
                } else {
                    program.setNumberVar("materialMode", 1);
                }
                RenderingService.render(gl, objects.get(i));
                renderingService.render(gl, objects.get(i));
            }
        }
    }